| // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| library StatusExpressionTest; |
| |
| import "package:expect/expect.dart"; |
| import "../../tools/testing/dart/status_expression.dart"; |
| |
| main() { |
| testExpression(); |
| testSyntaxError(); |
| testBoolean(); |
| testNotEqual(); |
| } |
| |
| void testExpression() { |
| var expression = Expression |
| .parse(r" $mode == debug && ($arch == chromium || $arch == dartc) "); |
| Expect.equals( |
| r"(($mode == debug) && (($arch == chromium) || ($arch == dartc)))", |
| expression.toString()); |
| |
| // Test BooleanExpression.evaluate(). |
| var environment = <String, dynamic>{"arch": "dartc", "mode": "debug"}; |
| |
| Expect.isTrue(expression.evaluate(environment)); |
| environment["mode"] = "release"; |
| Expect.isFalse(expression.evaluate(environment)); |
| environment["arch"] = "ia32"; |
| Expect.isFalse(expression.evaluate(environment)); |
| environment["mode"] = "debug"; |
| Expect.isFalse(expression.evaluate(environment)); |
| environment["arch"] = "chromium"; |
| Expect.isTrue(expression.evaluate(environment)); |
| } |
| |
| void testSyntaxError() { |
| var input = r"($arch == (-dartc || $arch == chromium) && $mode == release"; |
| Expect.throws(() { |
| Expression.parse(input); |
| }, (e) => e.toString() == "FormatException: Syntax error in '$input'"); |
| } |
| |
| void testBoolean() { |
| var expression = |
| Expression.parse(r" $arch == ia32 && $checked || $mode == release "); |
| Expect.equals(r"((($arch == ia32) && (bool $checked)) || ($mode == release))", |
| expression.toString()); |
| |
| // Test BooleanExpression.evaluate(). |
| var environment = <String, dynamic>{ |
| "arch": "ia32", |
| "checked": true, |
| "mode": "debug" |
| }; |
| |
| Expect.isTrue(expression.evaluate(environment)); |
| environment["mode"] = "release"; |
| Expect.isTrue(expression.evaluate(environment)); |
| environment["checked"] = false; |
| Expect.isTrue(expression.evaluate(environment)); |
| environment["mode"] = "debug"; |
| Expect.isFalse(expression.evaluate(environment)); |
| environment["arch"] = "arm"; |
| Expect.isFalse(expression.evaluate(environment)); |
| environment["checked"] = true; |
| Expect.isFalse(expression.evaluate(environment)); |
| } |
| |
| void testNotEqual() { |
| // Test the != operator. |
| var expression = Expression.parse(r"$compiler == dart2js && $runtime != ie9"); |
| Expect.equals( |
| r"(($compiler == dart2js) && ($runtime != ie9))", expression.toString()); |
| |
| // Test BooleanExpression.evaluate(). |
| var environment = <String, dynamic>{ |
| "compiler": "none", |
| "runtime": "ie9", |
| }; |
| |
| Expect.isFalse(expression.evaluate(environment)); |
| environment["runtime"] = "chrome"; |
| Expect.isFalse(expression.evaluate(environment)); |
| |
| environment["compiler"] = "dart2js"; |
| environment["runtime"] = "ie9"; |
| Expect.isFalse(expression.evaluate(environment)); |
| environment["runtime"] = "chrome"; |
| Expect.isTrue(expression.evaluate(environment)); |
| } |