Skip to content

Commit 46cb2d7

Browse files
authored
Write unit tests for API Examples of checkbox.0, checkbox.1 (#144888)
Write unit tests for API Examples of checkbox.0, checkbox.1 Part of #130459
1 parent 68138bc commit 46cb2d7

File tree

3 files changed

+127
-2
lines changed

3 files changed

+127
-2
lines changed

dev/bots/check_code_samples.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -371,8 +371,6 @@ final Set<String> _knownMissingTests = <String>{
371371
'examples/api/test/material/app_bar/sliver_app_bar.3_test.dart',
372372
'examples/api/test/material/banner/material_banner.1_test.dart',
373373
'examples/api/test/material/banner/material_banner.0_test.dart',
374-
'examples/api/test/material/checkbox/checkbox.1_test.dart',
375-
'examples/api/test/material/checkbox/checkbox.0_test.dart',
376374
'examples/api/test/material/navigation_rail/navigation_rail.extended_animation.0_test.dart',
377375
'examples/api/test/rendering/growth_direction/growth_direction.0_test.dart',
378376
'examples/api/test/rendering/sliver_grid/sliver_grid_delegate_with_fixed_cross_axis_count.0_test.dart',
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
// Copyright 2014 The Flutter Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
import 'package:flutter/material.dart';
6+
import 'package:flutter_api_samples/material/checkbox/checkbox.0.dart'
7+
as example;
8+
import 'package:flutter_test/flutter_test.dart';
9+
10+
void main() {
11+
testWidgets('Checkbox can be checked', (WidgetTester tester) async {
12+
await tester.pumpWidget(
13+
const example.CheckboxExampleApp(),
14+
);
15+
16+
Checkbox checkbox = tester.widget(find.byType(Checkbox));
17+
expect(checkbox.value, isFalse);
18+
19+
await tester.tap(find.byType(Checkbox));
20+
await tester.pump();
21+
22+
checkbox = tester.widget(find.byType(Checkbox));
23+
expect(checkbox.value, isTrue);
24+
25+
await tester.tap(find.byType(Checkbox));
26+
await tester.pump();
27+
28+
checkbox = tester.widget(find.byType(Checkbox));
29+
expect(checkbox.value, isFalse);
30+
});
31+
32+
testWidgets('Checkbox color can be changed', (WidgetTester tester) async {
33+
await tester.pumpWidget(
34+
const example.CheckboxExampleApp(),
35+
);
36+
final Checkbox checkbox = tester.widget(find.byType(Checkbox));
37+
38+
expect(
39+
checkbox.checkColor,
40+
Colors.white,
41+
);
42+
expect(
43+
checkbox.fillColor!.resolve(<MaterialState>{}),
44+
Colors.red,
45+
);
46+
expect(
47+
checkbox.fillColor!.resolve(<MaterialState>{MaterialState.pressed}),
48+
Colors.blue,
49+
);
50+
expect(
51+
checkbox.fillColor!.resolve(<MaterialState>{MaterialState.hovered}),
52+
Colors.blue,
53+
);
54+
expect(
55+
checkbox.fillColor!.resolve(<MaterialState>{MaterialState.focused}),
56+
Colors.blue,
57+
);
58+
});
59+
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
// Copyright 2014 The Flutter Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
import 'package:flutter/material.dart';
6+
import 'package:flutter_api_samples/material/checkbox/checkbox.1.dart'
7+
as example;
8+
import 'package:flutter_test/flutter_test.dart';
9+
10+
void main() {
11+
testWidgets('Checkbox can be checked', (WidgetTester tester) async {
12+
await tester.pumpWidget(
13+
const example.CheckboxExampleApp(),
14+
);
15+
16+
expect(find.byType(Checkbox), findsNWidgets(3));
17+
Checkbox checkbox = tester.widget(find.byType(Checkbox).first);
18+
Checkbox checkboxWithError = tester.widget(find.byType(Checkbox).at(1));
19+
Checkbox checkboxDisabled = tester.widget(find.byType(Checkbox).last);
20+
21+
// Verify the initial state of the checkboxes.
22+
expect(checkbox.value, isTrue);
23+
expect(checkboxWithError.value, isTrue);
24+
expect(checkboxDisabled.value, isTrue);
25+
26+
expect(checkboxWithError.isError, isTrue);
27+
expect(checkboxDisabled.onChanged, null);
28+
29+
expect(checkbox.tristate, isTrue);
30+
expect(checkboxWithError.tristate, isTrue);
31+
expect(checkboxDisabled.tristate, isTrue);
32+
33+
// Tap the first Checkbox and verify the state change.
34+
await tester.tap(find.byType(Checkbox).first);
35+
await tester.pump();
36+
checkbox = tester.widget(find.byType(Checkbox).first);
37+
checkboxWithError = tester.widget(find.byType(Checkbox).at(1));
38+
checkboxDisabled = tester.widget(find.byType(Checkbox).last);
39+
40+
expect(checkbox.value, isNull);
41+
expect(checkboxWithError.value, isNull);
42+
expect(checkboxDisabled.value, isNull);
43+
44+
// Tap the second Checkbox and verify the state change.
45+
await tester.tap(find.byType(Checkbox).at(1));
46+
await tester.pump();
47+
48+
checkbox = tester.widget(find.byType(Checkbox).first);
49+
checkboxWithError = tester.widget(find.byType(Checkbox).at(1));
50+
checkboxDisabled = tester.widget(find.byType(Checkbox).last);
51+
52+
expect(checkbox.value, isFalse);
53+
expect(checkboxWithError.value, isFalse);
54+
expect(checkboxDisabled.value, isFalse);
55+
56+
// Tap the third Checkbox and verify that should remain unchanged.
57+
await tester.tap(find.byType(Checkbox).last);
58+
await tester.pump();
59+
60+
checkbox = tester.widget(find.byType(Checkbox).first);
61+
checkboxWithError = tester.widget(find.byType(Checkbox).at(1));
62+
checkboxDisabled = tester.widget(find.byType(Checkbox).last);
63+
64+
expect(checkbox.value, isFalse);
65+
expect(checkboxWithError.value, isFalse);
66+
expect(checkboxDisabled.value, isFalse);
67+
});
68+
}

0 commit comments

Comments
 (0)