OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
| 5 library StatusExpressionTest; |
| 6 |
5 import "package:expect/expect.dart"; | 7 import "package:expect/expect.dart"; |
6 | |
7 import "../../tools/testing/dart/environment.dart"; | |
8 import "../../tools/testing/dart/status_expression.dart"; | 8 import "../../tools/testing/dart/status_expression.dart"; |
9 | 9 |
10 class TestEnvironment implements Environment { | |
11 final Map<String, String> _values; | |
12 | |
13 TestEnvironment(this._values); | |
14 | |
15 /// Looks up the value of the variable with [name]. | |
16 String lookUp(String name) => _values[name]; | |
17 | |
18 operator []=(String key, String value) => _values[key] = value; | |
19 } | |
20 | |
21 main() { | 10 main() { |
22 testExpression(); | 11 testExpression(); |
23 testSyntaxError(); | 12 testSyntaxError(); |
24 testBoolean(); | 13 testBoolean(); |
25 testNotEqual(); | 14 testNotEqual(); |
26 } | 15 } |
27 | 16 |
28 void testExpression() { | 17 void testExpression() { |
29 var expression = Expression | 18 var expression = Expression |
30 .parse(r" $mode == debug && ($arch == chromium || $arch == dartc) "); | 19 .parse(r" $mode == debug && ($arch == chromium || $arch == dartc) "); |
31 Expect.equals( | 20 Expect.equals( |
32 r"(($mode == debug) && (($arch == chromium) || ($arch == dartc)))", | 21 r"(($mode == debug) && (($arch == chromium) || ($arch == dartc)))", |
33 expression.toString()); | 22 expression.toString()); |
34 | 23 |
35 // Test BooleanExpression.evaluate(). | 24 // Test BooleanExpression.evaluate(). |
36 var environment = new TestEnvironment({"arch": "dartc", "mode": "debug"}); | 25 var environment = <String, dynamic>{"arch": "dartc", "mode": "debug"}; |
37 | 26 |
38 Expect.isTrue(expression.evaluate(environment)); | 27 Expect.isTrue(expression.evaluate(environment)); |
39 environment["mode"] = "release"; | 28 environment["mode"] = "release"; |
40 Expect.isFalse(expression.evaluate(environment)); | 29 Expect.isFalse(expression.evaluate(environment)); |
41 environment["arch"] = "ia32"; | 30 environment["arch"] = "ia32"; |
42 Expect.isFalse(expression.evaluate(environment)); | 31 Expect.isFalse(expression.evaluate(environment)); |
43 environment["mode"] = "debug"; | 32 environment["mode"] = "debug"; |
44 Expect.isFalse(expression.evaluate(environment)); | 33 Expect.isFalse(expression.evaluate(environment)); |
45 environment["arch"] = "chromium"; | 34 environment["arch"] = "chromium"; |
46 Expect.isTrue(expression.evaluate(environment)); | 35 Expect.isTrue(expression.evaluate(environment)); |
47 } | 36 } |
48 | 37 |
49 void testSyntaxError() { | 38 void testSyntaxError() { |
50 var input = r"($arch == (-dartc || $arch == chromium) && $mode == release"; | 39 var input = r"($arch == (-dartc || $arch == chromium) && $mode == release"; |
51 Expect.throws(() { | 40 Expect.throws(() { |
52 Expression.parse(input); | 41 Expression.parse(input); |
53 }, (e) => e.toString() == "FormatException: Syntax error in '$input'"); | 42 }, (e) => e.toString() == "FormatException: Syntax error in '$input'"); |
54 } | 43 } |
55 | 44 |
56 void testBoolean() { | 45 void testBoolean() { |
57 var expression = | 46 var expression = |
58 Expression.parse(r" $arch == ia32 && $checked || $mode == release "); | 47 Expression.parse(r" $arch == ia32 && $checked || $mode == release "); |
59 Expect.equals(r"((($arch == ia32) && (bool $checked)) || ($mode == release))", | 48 Expect.equals(r"((($arch == ia32) && (bool $checked)) || ($mode == release))", |
60 expression.toString()); | 49 expression.toString()); |
61 | 50 |
62 // Test BooleanExpression.evaluate(). | 51 // Test BooleanExpression.evaluate(). |
63 var environment = | 52 var environment = <String, dynamic>{ |
64 new TestEnvironment({"arch": "ia32", "checked": "true", "mode": "debug"}); | 53 "arch": "ia32", |
| 54 "checked": true, |
| 55 "mode": "debug" |
| 56 }; |
65 | 57 |
66 Expect.isTrue(expression.evaluate(environment)); | 58 Expect.isTrue(expression.evaluate(environment)); |
67 environment["mode"] = "release"; | 59 environment["mode"] = "release"; |
68 Expect.isTrue(expression.evaluate(environment)); | 60 Expect.isTrue(expression.evaluate(environment)); |
69 environment["checked"] = false; | 61 environment["checked"] = false; |
70 Expect.isTrue(expression.evaluate(environment)); | 62 Expect.isTrue(expression.evaluate(environment)); |
71 environment["mode"] = "debug"; | 63 environment["mode"] = "debug"; |
72 Expect.isFalse(expression.evaluate(environment)); | 64 Expect.isFalse(expression.evaluate(environment)); |
73 environment["arch"] = "arm"; | 65 environment["arch"] = "arm"; |
74 Expect.isFalse(expression.evaluate(environment)); | 66 Expect.isFalse(expression.evaluate(environment)); |
75 environment["checked"] = true; | 67 environment["checked"] = true; |
76 Expect.isFalse(expression.evaluate(environment)); | 68 Expect.isFalse(expression.evaluate(environment)); |
77 } | 69 } |
78 | 70 |
79 void testNotEqual() { | 71 void testNotEqual() { |
80 // Test the != operator. | 72 // Test the != operator. |
81 var expression = Expression.parse(r"$compiler == dart2js && $runtime != ie9"); | 73 var expression = Expression.parse(r"$compiler == dart2js && $runtime != ie9"); |
82 Expect.equals( | 74 Expect.equals( |
83 r"(($compiler == dart2js) && ($runtime != ie9))", expression.toString()); | 75 r"(($compiler == dart2js) && ($runtime != ie9))", expression.toString()); |
84 | 76 |
85 // Test BooleanExpression.evaluate(). | 77 // Test BooleanExpression.evaluate(). |
86 var environment = new TestEnvironment({ | 78 var environment = <String, dynamic>{ |
87 "compiler": "none", | 79 "compiler": "none", |
88 "runtime": "ie9", | 80 "runtime": "ie9", |
89 }); | 81 }; |
90 | 82 |
91 Expect.isFalse(expression.evaluate(environment)); | 83 Expect.isFalse(expression.evaluate(environment)); |
92 environment["runtime"] = "chrome"; | 84 environment["runtime"] = "chrome"; |
93 Expect.isFalse(expression.evaluate(environment)); | 85 Expect.isFalse(expression.evaluate(environment)); |
94 | 86 |
95 environment["compiler"] = "dart2js"; | 87 environment["compiler"] = "dart2js"; |
96 environment["runtime"] = "ie9"; | 88 environment["runtime"] = "ie9"; |
97 Expect.isFalse(expression.evaluate(environment)); | 89 Expect.isFalse(expression.evaluate(environment)); |
98 environment["runtime"] = "chrome"; | 90 environment["runtime"] = "chrome"; |
99 Expect.isTrue(expression.evaluate(environment)); | 91 Expect.isTrue(expression.evaluate(environment)); |
100 } | 92 } |
OLD | NEW |