sized_box_test.dart 4.81 KB
Newer Older
Ian Hickson's avatar
Ian Hickson committed
1
// Copyright 2014 The Flutter Authors. All rights reserved.
Ian Hickson's avatar
Ian Hickson committed
2 3 4
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

5
import 'package:flutter/rendering.dart';
Ian Hickson's avatar
Ian Hickson committed
6 7 8 9
import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
10
  testWidgets('SizedBox constructors', (WidgetTester tester) async {
11
    const SizedBox a = SizedBox();
12 13 14
    expect(a.width, isNull);
    expect(a.height, isNull);

15
    const SizedBox b = SizedBox(width: 10.0);
16 17 18
    expect(b.width, 10.0);
    expect(b.height, isNull);

19
    const SizedBox c = SizedBox(width: 10.0, height: 20.0);
20 21 22
    expect(c.width, 10.0);
    expect(c.height, 20.0);

23
    final SizedBox d = SizedBox.fromSize();
24 25 26
    expect(d.width, isNull);
    expect(d.height, isNull);

27
    final SizedBox e = SizedBox.fromSize(size: const Size(1.0, 2.0));
28 29 30
    expect(e.width, 1.0);
    expect(e.height, 2.0);

31
    const SizedBox f = SizedBox.expand();
32 33
    expect(f.width, double.infinity);
    expect(f.height, double.infinity);
34 35 36 37

    const SizedBox g = SizedBox.shrink();
    expect(g.width, 0.0);
    expect(g.height, 0.0);
38 39
  });

Ian Hickson's avatar
Ian Hickson committed
40
  testWidgets('SizedBox - no child', (WidgetTester tester) async {
41
    final GlobalKey patient = GlobalKey();
Ian Hickson's avatar
Ian Hickson committed
42 43

    await tester.pumpWidget(
44 45
      Center(
        child: SizedBox(
Ian Hickson's avatar
Ian Hickson committed
46
          key: patient,
47
        ),
48
      ),
Ian Hickson's avatar
Ian Hickson committed
49
    );
50
    expect(patient.currentContext!.size, equals(Size.zero));
Ian Hickson's avatar
Ian Hickson committed
51 52

    await tester.pumpWidget(
53 54
      Center(
        child: SizedBox(
Ian Hickson's avatar
Ian Hickson committed
55 56
          key: patient,
          height: 0.0,
57
        ),
58
      ),
Ian Hickson's avatar
Ian Hickson committed
59
    );
60
    expect(patient.currentContext!.size, equals(Size.zero));
Ian Hickson's avatar
Ian Hickson committed
61 62

    await tester.pumpWidget(
63
      Center(
64
        child: SizedBox.shrink(
Ian Hickson's avatar
Ian Hickson committed
65
          key: patient,
66
        ),
67
      ),
Ian Hickson's avatar
Ian Hickson committed
68
    );
69
    expect(patient.currentContext!.size, equals(Size.zero));
Ian Hickson's avatar
Ian Hickson committed
70 71

    await tester.pumpWidget(
72 73
      Center(
        child: SizedBox(
Ian Hickson's avatar
Ian Hickson committed
74 75 76
          key: patient,
          width: 100.0,
          height: 100.0,
77
        ),
78
      ),
Ian Hickson's avatar
Ian Hickson committed
79
    );
80
    expect(patient.currentContext!.size, equals(const Size(100.0, 100.0)));
Ian Hickson's avatar
Ian Hickson committed
81 82

    await tester.pumpWidget(
83 84
      Center(
        child: SizedBox(
Ian Hickson's avatar
Ian Hickson committed
85 86 87
          key: patient,
          width: 1000.0,
          height: 1000.0,
88
        ),
89
      ),
Ian Hickson's avatar
Ian Hickson committed
90
    );
91
    expect(patient.currentContext!.size, equals(const Size(800.0, 600.0)));
Ian Hickson's avatar
Ian Hickson committed
92 93

    await tester.pumpWidget(
94 95
      Center(
        child: SizedBox.expand(
Ian Hickson's avatar
Ian Hickson committed
96
          key: patient,
97
        ),
98
      ),
Ian Hickson's avatar
Ian Hickson committed
99
    );
100
    expect(patient.currentContext!.size, equals(const Size(800.0, 600.0)));
101 102

    await tester.pumpWidget(
103 104
      Center(
        child: SizedBox.shrink(
105
          key: patient,
106
        ),
107
      ),
108
    );
109
    expect(patient.currentContext!.size, equals(Size.zero));
Ian Hickson's avatar
Ian Hickson committed
110 111 112
  });

  testWidgets('SizedBox - container child', (WidgetTester tester) async {
113
    final GlobalKey patient = GlobalKey();
Ian Hickson's avatar
Ian Hickson committed
114 115

    await tester.pumpWidget(
116 117
      Center(
        child: SizedBox(
Ian Hickson's avatar
Ian Hickson committed
118
          key: patient,
119
          child: Container(),
120
        ),
121
      ),
Ian Hickson's avatar
Ian Hickson committed
122
    );
123
    expect(patient.currentContext!.size, equals(const Size(800.0, 600.0)));
Ian Hickson's avatar
Ian Hickson committed
124 125

    await tester.pumpWidget(
126 127
      Center(
        child: SizedBox(
Ian Hickson's avatar
Ian Hickson committed
128 129
          key: patient,
          height: 0.0,
130
          child: Container(),
131
        ),
132
      ),
Ian Hickson's avatar
Ian Hickson committed
133
    );
134
    expect(patient.currentContext!.size, equals(const Size(800.0, 0.0)));
Ian Hickson's avatar
Ian Hickson committed
135 136

    await tester.pumpWidget(
137
      Center(
138
        child: SizedBox.shrink(
Ian Hickson's avatar
Ian Hickson committed
139
          key: patient,
140
          child: Container(),
141
        ),
142
      ),
Ian Hickson's avatar
Ian Hickson committed
143
    );
144
    expect(patient.currentContext!.size, equals(Size.zero));
Ian Hickson's avatar
Ian Hickson committed
145 146

    await tester.pumpWidget(
147 148
      Center(
        child: SizedBox(
Ian Hickson's avatar
Ian Hickson committed
149 150 151
          key: patient,
          width: 100.0,
          height: 100.0,
152
          child: Container(),
153
        ),
154
      ),
Ian Hickson's avatar
Ian Hickson committed
155
    );
156
    expect(patient.currentContext!.size, equals(const Size(100.0, 100.0)));
Ian Hickson's avatar
Ian Hickson committed
157 158

    await tester.pumpWidget(
159 160
      Center(
        child: SizedBox(
Ian Hickson's avatar
Ian Hickson committed
161 162 163
          key: patient,
          width: 1000.0,
          height: 1000.0,
164
          child: Container(),
165
        ),
166
      ),
Ian Hickson's avatar
Ian Hickson committed
167
    );
168
    expect(patient.currentContext!.size, equals(const Size(800.0, 600.0)));
Ian Hickson's avatar
Ian Hickson committed
169 170

    await tester.pumpWidget(
171 172
      Center(
        child: SizedBox.expand(
Ian Hickson's avatar
Ian Hickson committed
173
          key: patient,
174
          child: Container(),
175
        ),
176
      ),
Ian Hickson's avatar
Ian Hickson committed
177
    );
178
    expect(patient.currentContext!.size, equals(const Size(800.0, 600.0)));
179 180

    await tester.pumpWidget(
181 182
      Center(
        child: SizedBox.shrink(
183
          key: patient,
184
          child: Container(),
185
        ),
186
      ),
187
    );
188
    expect(patient.currentContext!.size, equals(Size.zero));
Ian Hickson's avatar
Ian Hickson committed
189
  });
190 191 192 193 194 195 196 197 198 199 200 201 202 203

  testWidgets('SizedBox.square tests', (WidgetTester tester) async {
    await tester.pumpWidget(
        const SizedBox.square(
          dimension: 100,
          child: SizedBox.shrink(),
        )
    );

    expect(
      tester.renderObject<RenderConstrainedBox>(find.byType(SizedBox).first).additionalConstraints,
      BoxConstraints.tight(const Size.square(100)),
    );
  });
Ian Hickson's avatar
Ian Hickson committed
204
}