Skip to content

Commit c2d451e

Browse files
authored
Add more 0x0 size tests part10 (flutter#186201)
This is my attempt to handle flutter#6537 for the following widgets: SizedBox CustomMultiChildLayout CustomSingleChildLayout Center Align Padding RotatedBox FractionalTranslation FittedBox CompositedTransformTarget CompositedTransformFollower
1 parent 1d139c1 commit c2d451e

9 files changed

Lines changed: 136 additions & 0 deletions

packages/flutter/test/widgets/align_test.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,4 +115,16 @@ void main() {
115115
final RenderBox box = tester.renderObject<RenderBox>(find.byType(Align));
116116
expect(box.size.height, equals(50.0));
117117
});
118+
119+
testWidgets('Align does not crash at zero area', (WidgetTester tester) async {
120+
tester.view.physicalSize = Size.zero;
121+
addTearDown(tester.view.reset);
122+
await tester.pumpWidget(
123+
const Directionality(
124+
textDirection: TextDirection.ltr,
125+
child: Center(child: Align(child: Placeholder())),
126+
),
127+
);
128+
expect(tester.getSize(find.byType(Align)), Size.zero);
129+
});
118130
}

packages/flutter/test/widgets/basic_test.dart

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,19 @@ void main() {
325325
),
326326
);
327327
});
328+
329+
testWidgets('FractionalTranslation does not crash at zero area', (WidgetTester tester) async {
330+
tester.view.physicalSize = Size.zero;
331+
const offset = Offset(0.4, 0.4);
332+
addTearDown(tester.view.reset);
333+
await tester.pumpWidget(
334+
const Directionality(
335+
textDirection: TextDirection.ltr,
336+
child: Center(child: FractionalTranslation(translation: offset)),
337+
),
338+
);
339+
expect(tester.getSize(find.byType(FractionalTranslation)), Size.zero);
340+
});
328341
});
329342

330343
group('Semantics', () {
@@ -1799,6 +1812,20 @@ void main() {
17991812
expect(aPos.dy, 0.0);
18001813
expect(bPos.dy, 0.0);
18011814
});
1815+
1816+
testWidgets('Padding does not crash at zero area', (WidgetTester tester) async {
1817+
tester.view.physicalSize = Size.zero;
1818+
addTearDown(tester.view.reset);
1819+
await tester.pumpWidget(
1820+
const Directionality(
1821+
textDirection: TextDirection.ltr,
1822+
child: Center(
1823+
child: Padding(padding: EdgeInsets.all(5), child: Placeholder()),
1824+
),
1825+
),
1826+
);
1827+
expect(tester.getSize(find.byType(Padding)), Size.zero);
1828+
});
18021829
}
18031830

18041831
HitsRenderBox hits(RenderBox renderBox) => HitsRenderBox(renderBox);

packages/flutter/test/widgets/center_test.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,16 @@ void main() {
1414
),
1515
);
1616
});
17+
18+
testWidgets('Center does not crash at zero area', (WidgetTester tester) async {
19+
tester.view.physicalSize = Size.zero;
20+
addTearDown(tester.view.reset);
21+
await tester.pumpWidget(
22+
const Directionality(
23+
textDirection: TextDirection.ltr,
24+
child: Center(child: Placeholder()),
25+
),
26+
);
27+
expect(tester.getSize(find.byType(Center)), Size.zero);
28+
});
1729
}

packages/flutter/test/widgets/composited_transform_test.dart

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,27 @@ void main() {
397397
);
398398
},
399399
);
400+
401+
testWidgets('CompositedTransformTarget & CompositedTransformFollower do not crash at zero area', (
402+
WidgetTester tester,
403+
) async {
404+
tester.view.physicalSize = Size.zero;
405+
addTearDown(tester.view.reset);
406+
final link = LayerLink();
407+
await tester.pumpWidget(
408+
Directionality(
409+
textDirection: TextDirection.ltr,
410+
child: Center(
411+
child: CompositedTransformTarget(
412+
link: link,
413+
child: CompositedTransformFollower(link: link),
414+
),
415+
),
416+
),
417+
);
418+
expect(tester.getSize(find.byType(CompositedTransformTarget)), Size.zero);
419+
expect(tester.getSize(find.byType(CompositedTransformFollower)), Size.zero);
420+
});
400421
}
401422

402423
class _CustomWidget extends SingleChildRenderObjectWidget {

packages/flutter/test/widgets/custom_multi_child_layout_test.dart

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -431,4 +431,18 @@ void main() {
431431
);
432432
});
433433
});
434+
435+
testWidgets('CustomMultiChildLayout does not crash at zero area', (WidgetTester tester) async {
436+
tester.view.physicalSize = Size.zero;
437+
final size = ValueNotifier<Size>(const Size(100, 200));
438+
addTearDown(tester.view.reset);
439+
addTearDown(size.dispose);
440+
await tester.pumpWidget(
441+
Directionality(
442+
textDirection: TextDirection.ltr,
443+
child: Center(child: CustomMultiChildLayout(delegate: NotifierLayoutDelegate(size))),
444+
),
445+
);
446+
expect(tester.getSize(find.byType(CustomMultiChildLayout)), Size.zero);
447+
});
434448
}

packages/flutter/test/widgets/custom_single_child_layout_test.dart

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,4 +168,18 @@ void main() {
168168
box = tester.renderObject(find.byType(CustomSingleChildLayout));
169169
expect(box.size, equals(const Size(150.0, 240.0)));
170170
});
171+
172+
testWidgets('CustomSingleChildLayout does not crash at zero area', (WidgetTester tester) async {
173+
tester.view.physicalSize = Size.zero;
174+
final size = ValueNotifier<Size>(const Size(100, 200));
175+
addTearDown(tester.view.reset);
176+
addTearDown(size.dispose);
177+
await tester.pumpWidget(
178+
Directionality(
179+
textDirection: TextDirection.ltr,
180+
child: Center(child: CustomSingleChildLayout(delegate: NotifierLayoutDelegate(size))),
181+
),
182+
);
183+
expect(tester.getSize(find.byType(CustomSingleChildLayout)), Size.zero);
184+
});
171185
}

packages/flutter/test/widgets/fitted_box_test.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -555,6 +555,18 @@ void main() {
555555
);
556556
expect(tester.takeException(), isNull);
557557
});
558+
559+
testWidgets('FittedBox does not crash at zero area', (WidgetTester tester) async {
560+
tester.view.physicalSize = Size.zero;
561+
addTearDown(tester.view.reset);
562+
await tester.pumpWidget(
563+
const Directionality(
564+
textDirection: TextDirection.ltr,
565+
child: Center(child: FittedBox(child: Placeholder())),
566+
),
567+
);
568+
expect(tester.getSize(find.byType(FittedBox)), Size.zero);
569+
});
558570
}
559571

560572
List<Type> getLayers() {

packages/flutter/test/widgets/rotated_box_test.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,16 @@ void main() {
4949
expect(log, equals(<String>['right']));
5050
log.clear();
5151
});
52+
53+
testWidgets('RotatedBox does not crash at zero area', (WidgetTester tester) async {
54+
tester.view.physicalSize = Size.zero;
55+
addTearDown(tester.view.reset);
56+
await tester.pumpWidget(
57+
const Directionality(
58+
textDirection: TextDirection.ltr,
59+
child: Center(child: RotatedBox(quarterTurns: 1)),
60+
),
61+
);
62+
expect(tester.getSize(find.byType(RotatedBox)), Size.zero);
63+
});
5264
}

packages/flutter/test/widgets/sized_box_test.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,4 +123,16 @@ void main() {
123123
BoxConstraints.tight(const Size.square(100)),
124124
);
125125
});
126+
127+
testWidgets('SizedBox does not crash at zero area', (WidgetTester tester) async {
128+
tester.view.physicalSize = Size.zero;
129+
addTearDown(tester.view.reset);
130+
await tester.pumpWidget(
131+
const Directionality(
132+
textDirection: TextDirection.ltr,
133+
child: Center(child: SizedBox(child: Placeholder())),
134+
),
135+
);
136+
expect(tester.getSize(find.byType(SizedBox)), Size.zero);
137+
});
126138
}

0 commit comments

Comments
 (0)