blob: 870670674ad5f7984f993eb63e555bb88962b311 [file] [log] [blame]
// 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));
}