-
Notifications
You must be signed in to change notification settings - Fork 47
/
Copy pathTestQuery.dart
89 lines (78 loc) · 2.23 KB
/
TestQuery.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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
//Sample Code: Test Query
import 'package:rikulo_ui/view.dart';
import 'package:rikulo_ui/view/select.dart';
void assertIdentical(String src) {
assertLegal(src, "[${src}]");
}
void assertLegal(String src, [String result]) {
try {
List<Selector> selectors = Selectors.parse(src);
if (result != null) {
String r = selectors.toString();
if (r != result)
logMsg("* Unexpected parse result: ${r} (expecting ${result})");
}
} on SelectorParseException catch (_) {
logMsg("* Should be legal: ${src}");
}
}
void assertIllegal(String src) {
try {
Selectors.parse(src);
logMsg("* Should be illegal: ${src}");
} on SelectorParseException catch (_) {
}
}
void logMsg(String msg) {
mainView.addChild(new TextView(msg));
}
View mainView;
void main() {
mainView = new View()..addToDocument();
mainView.layout.type = "linear";
mainView.layout.orient = "vertical";
logMsg("The failed cases are shown below:");
// legal
assertIdentical("type#id");
assertIdentical("type > type ~ type type");
assertIdentical("#id .c1 + :p1");
assertIdentical("#id, type, .cls");
assertIdentical("#id type, .cls > #id");
assertIdentical("* #id, #id *, *");
assertIdentical("type:pcls(abc)");
assertLegal("type.c1:p1#id:p2.c2");
assertLegal("#id , type, .cls + type");
// illegal
assertIllegal("#id#id");
assertIllegal("#id > > #id");
assertIllegal("#id> #id");
assertIllegal("#id >#id");
assertIllegal("> #id");
assertIllegal(" > #id");
assertIllegal("#id >");
assertIllegal("#id > ");
assertIllegal("*#id");
assertIllegal("*.cls");
assertIllegal("*:pcls");
assertIllegal("type:pcls(");
assertIllegal("type:pcls(abc");
assertIllegal("type#");
assertIllegal("type:");
assertIllegal("type.");
assertIllegal("type# type");
assertIllegal("type: type");
assertIllegal("type. type");
assertIllegal("type# > type");
assertIllegal("type: > type");
assertIllegal("type. > type");
assertIllegal("type+ type");
assertIllegal("type +type");
assertIllegal("+ type");
assertIllegal("type +, #id");
assertIllegal("type, + #id");
assertIllegal("type,");
assertIllegal(",type");
assertIllegal("type#,");
assertIllegal("type:,");
assertIllegal("type.,");
}