6.0.0
I'm extremely stupid and didn't commit as I go. To anyone reading this I'm extremely sorry. A lot of these changes are very broad and I plan on releasing Babel 6.0.0 today live on stage at Ember Camp London so I'm afraid I couldn't wait. If you're ever in London I'll buy you a beer (or assorted beverage!) to make up for it, also I'll kiss your feet and give you a back massage, maybe.
This commit is contained in:
66
packages/babel-core/test/evaluation.js
Normal file
66
packages/babel-core/test/evaluation.js
Normal file
@@ -0,0 +1,66 @@
|
||||
var traverse = require("babel-traverse").default;
|
||||
var assert = require("assert");
|
||||
var parse = require("babylon").parse;
|
||||
|
||||
suite("evaluation", function () {
|
||||
function addTest(code, type, value, notConfident) {
|
||||
test(type + ": " + code, function () {
|
||||
var visitor = {};
|
||||
|
||||
visitor[type] = function (path) {
|
||||
var evaluate = path.evaluate();
|
||||
assert.equal(evaluate.confident, !notConfident);
|
||||
assert.equal(evaluate.value, value);
|
||||
};
|
||||
|
||||
traverse(parse(code, {
|
||||
plugins: ["*"]
|
||||
}), visitor);
|
||||
});
|
||||
}
|
||||
|
||||
addTest("void 0", "UnaryExpression", undefined);
|
||||
addTest("!true", "UnaryExpression", false);
|
||||
addTest("+'2'", "UnaryExpression", 2);
|
||||
addTest("-'2'", "UnaryExpression", -2);
|
||||
addTest("~1", "UnaryExpression", -2);
|
||||
addTest("3 - 1", "BinaryExpression", 2);
|
||||
addTest("5 + 5", "BinaryExpression", 10);
|
||||
addTest("10 / 2", "BinaryExpression", 5);
|
||||
addTest("2 * 3", "BinaryExpression", 6);
|
||||
addTest("4 % 2", "BinaryExpression", 0);
|
||||
addTest("2 ** 3", "BinaryExpression", 8);
|
||||
addTest("1 < 2", "BinaryExpression", true);
|
||||
addTest("1 > 2", "BinaryExpression", false);
|
||||
addTest("1 <= 2", "BinaryExpression", true);
|
||||
addTest("1 >= 2", "BinaryExpression", false);
|
||||
addTest("1 == '1'", "BinaryExpression", true);
|
||||
addTest("1 != 2", "BinaryExpression", true);
|
||||
addTest("'str' === 'str'", "BinaryExpression", true);
|
||||
addTest("'four' === 4", "BinaryExpression", false);
|
||||
addTest("'four' !== '4'", "BinaryExpression", true);
|
||||
addTest("'str' !== 'str'", "BinaryExpression", false);
|
||||
addTest("1 | 0", "BinaryExpression", 1);
|
||||
addTest("1 & 1", "BinaryExpression", 1);
|
||||
addTest("1 ^ 0", "BinaryExpression", 1);
|
||||
addTest("1 << 2", "BinaryExpression", 4);
|
||||
addTest("1 >> 2", "BinaryExpression", 0);
|
||||
addTest("1 in [1]", "BinaryExpression", undefined, true);
|
||||
addTest("A instanceof B", "BinaryExpression", undefined, true);
|
||||
addTest("'abc' === 'abc' && 1 === 1", "LogicalExpression", true);
|
||||
addTest("'abc' === 'abc' && 1 === 10", "LogicalExpression", false);
|
||||
addTest("'abc' === 'xyz' && 1 === 1", "LogicalExpression", false);
|
||||
addTest("'abc' === 'xyz' && 1 === 10", "LogicalExpression", false);
|
||||
addTest("'abc' === 'abc' || 1 === 1", "LogicalExpression", true);
|
||||
addTest("'abc' === 'abc' || 1 === 10", "LogicalExpression", true);
|
||||
addTest("'abc' === 'xyz' || 1 === 1", "LogicalExpression", true);
|
||||
addTest("'abc' === 'xyz' || 1 === 10", "LogicalExpression", false);
|
||||
addTest("'abc' === 'abc' || config.flag === 1", "LogicalExpression", true);
|
||||
addTest("obj.a === 'abc' || config.flag === 1", "LogicalExpression", undefined, true);
|
||||
addTest("'abc' !== 'abc' && config.flag === 1", "LogicalExpression", false);
|
||||
addTest("obj.a === 'abc' && 1 === 1", "LogicalExpression", undefined, true);
|
||||
addTest("'abc' === 'abc' && (1 === 1 || config.flag)", "LogicalExpression", true);
|
||||
addTest("'abc' === 'xyz' || (1 === 1 && config.flag)", "LogicalExpression", undefined, true);
|
||||
addTest("'abc' === 'xyz' || (1 === 1 && 'four' === 'four')", "LogicalExpression", true);
|
||||
addTest("'abc' === 'abc' && (1 === 1 && 'four' === 'four')", "LogicalExpression", true);
|
||||
});
|
||||
Reference in New Issue
Block a user