add base type tests
This commit is contained in:
@@ -1,9 +1,85 @@
|
||||
var assert = require("assert");
|
||||
var parse = require("../lib/babel/helpers/parse");
|
||||
var t = require("../lib/babel/types");
|
||||
|
||||
suite("types", function () {
|
||||
test("evaluate", function () {
|
||||
var evaluateAssert = function (code, expect) {
|
||||
var res = t.evaluate(parse({}, code).program.body[0].expression);
|
||||
assert.ok(res.confident, "Not confident");
|
||||
assert.equal(res.value, expect);
|
||||
assert.equal(res.value, eval(code));
|
||||
};
|
||||
|
||||
// Literal
|
||||
evaluateAssert("5", 5);
|
||||
evaluateAssert("true", true);
|
||||
evaluateAssert("false", false);
|
||||
evaluateAssert("null", null);
|
||||
evaluateAssert("'foo'", "foo");
|
||||
|
||||
// SequenceExpression
|
||||
evaluateAssert("(false, true)", true);
|
||||
evaluateAssert("(false, false)", false);
|
||||
|
||||
// Identifier
|
||||
evaluateAssert("undefined", undefined);
|
||||
|
||||
// ConditionalExpression
|
||||
evaluateAssert("true ? 'foo' : 'bar'", "foo");
|
||||
evaluateAssert("false ? 'foo' : 'bar'", "bar");
|
||||
evaluateAssert("'' ? 'foo' : 'bar'", "bar");
|
||||
evaluateAssert("'foobar' ? 'foo' : 'bar'", "foo");
|
||||
evaluateAssert("5 < 22 ? 'foo' : 'bar'", "foo");
|
||||
evaluateAssert("22 < 5 ? 'foo' : 'bar'", "bar");
|
||||
|
||||
// BinaryExpression -
|
||||
evaluateAssert("5 - 5", 0);
|
||||
evaluateAssert("5 - 6", -1);
|
||||
evaluateAssert("5.5 - 6", -0.5);
|
||||
|
||||
// BinaryExpression +
|
||||
evaluateAssert("5 + 5", 10);
|
||||
evaluateAssert("5 + 6", 11);
|
||||
evaluateAssert("5.5 + 6", 11.5);
|
||||
evaluateAssert("-5 + 5", 0);
|
||||
|
||||
// BinaryExpression /
|
||||
|
||||
// BinaryExpression *
|
||||
|
||||
// BinaryExpression %
|
||||
|
||||
// BinaryExpression <
|
||||
|
||||
// BinaryExpression >
|
||||
|
||||
// BinaryExpression <=
|
||||
|
||||
// BinaryExpression >=
|
||||
|
||||
// BinaryExpression ==
|
||||
|
||||
// BinaryExpression !=
|
||||
|
||||
// BinaryExpression ===
|
||||
|
||||
// BinaryExpression !==
|
||||
|
||||
// UnaryExpression void
|
||||
|
||||
// UnaryExpression !
|
||||
|
||||
// UnaryExpression +
|
||||
|
||||
// UnaryExpression -
|
||||
|
||||
// LogicalExpression ||
|
||||
|
||||
// LogicalExpression &&
|
||||
evaluateAssert("true && true", true);
|
||||
evaluateAssert("true && false", false);
|
||||
evaluateAssert("false && false", false);
|
||||
});
|
||||
|
||||
test("evaluateTruthy", function () {
|
||||
|
||||
Reference in New Issue
Block a user