-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcomposite_test.dart
57 lines (40 loc) · 1.26 KB
/
composite_test.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import 'package:test/test.dart';
abstract class Widget {}
class WidgetGroup implements Widget {
final List<Widget> children;
const WidgetGroup({required this.children});
@override
String toString() {
String shiftedChildrenString = children.join("\n").replaceAll("\n", "\n\t");
return "WidgetGroup\n\t${shiftedChildrenString}";
}
}
class TextWidget implements Widget {
final String text;
const TextWidget(String this.text);
@override
String toString() => "TextWidget('$text')";
}
WidgetGroup createWidgetTree() => WidgetGroup(children: [
TextWidget("some text"),
WidgetGroup(children: [TextWidget("more"), TextWidget("text")])
]);
void main() {
group("widget tree", () {
test("should get a node", () {
WidgetGroup tree = createWidgetTree();
Widget first = tree.children.first;
expect((first as TextWidget).text, equals("some text"));
});
test("should remove a node", () {
WidgetGroup tree = createWidgetTree();
tree.children.removeAt(0);
expect(tree.children.length, equals(1));
});
test("should add a node", () {
WidgetGroup tree = createWidgetTree();
tree.children.add(TextWidget("footer text"));
expect(tree.children.length, equals(3));
});
});
}