sized_box_test.dart 4.88 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 64
      Center(
        child: SizedBox(
Ian Hickson's avatar
Ian Hickson committed
65 66 67
          key: patient,
          width: 0.0,
          height: 0.0,
68
        ),
69
      ),
Ian Hickson's avatar
Ian Hickson committed
70
    );
71
    expect(patient.currentContext!.size, equals(Size.zero));
Ian Hickson's avatar
Ian Hickson committed
72 73

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

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

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

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

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

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

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

    await tester.pumpWidget(
139 140
      Center(
        child: SizedBox(
Ian Hickson's avatar
Ian Hickson committed
141 142 143
          key: patient,
          width: 0.0,
          height: 0.0,
144
          child: Container(),
145
        ),
146
      ),
Ian Hickson's avatar
Ian Hickson committed
147
    );
148
    expect(patient.currentContext!.size, equals(Size.zero));
Ian Hickson's avatar
Ian Hickson committed
149 150

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

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

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

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

  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
208
}