sized_box_test.dart 4.95 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
import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart';
8
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
Ian Hickson's avatar
Ian Hickson committed
9 10

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    await tester.pumpWidget(
182 183
      Center(
        child: SizedBox.shrink(
184
          key: patient,
185
          child: Container(),
186
        ),
187
      ),
188
    );
189
    expect(patient.currentContext!.size, equals(Size.zero));
Ian Hickson's avatar
Ian Hickson committed
190
  });
191

192
  testWidgetsWithLeakTracking('SizedBox.square tests', (WidgetTester tester) async {
193 194 195 196 197 198 199 200 201 202 203 204
    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
205
}