| 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 |