100 lines
3.4 KiB
JavaScript
100 lines
3.4 KiB
JavaScript
var assert = require("assert");
|
|
var util = require("../../lib/babel/util");
|
|
var parse = require("../../lib/babel/helpers/parse");
|
|
var t = require("../../lib/babel/types");
|
|
|
|
suite("util", function () {
|
|
test("invalid template", function () {
|
|
assert.throws(function () {
|
|
util.template("invalid template");
|
|
}, /unknown template/);
|
|
});
|
|
|
|
test("templates do not recurse", function () {
|
|
var key = __filename;
|
|
var KEY = parse({ loc: key }, "replacedKey").program.body[0].expression;
|
|
var VALUE = parse({ loc: key }, "+KEY").program.body[0].expression;
|
|
|
|
util.templates[key] = util.parseTemplate(key, "KEY = VALUE;");
|
|
var result = util.template(key, {KEY: KEY, VALUE: VALUE});
|
|
delete util.templates[key];
|
|
|
|
assert.strictEqual(
|
|
result.right.argument.name,
|
|
"KEY",
|
|
"template should not recurse into replaced nodes, " +
|
|
"replacing KEY inside VALUE"
|
|
);
|
|
});
|
|
|
|
test("canCompile", function () {
|
|
assert.ok(util.canCompile("test.js"));
|
|
assert.ok(util.canCompile("/test.js"));
|
|
assert.ok(util.canCompile("/scripts/test.js"));
|
|
|
|
assert.ok(util.canCompile("test.es6"));
|
|
assert.ok(util.canCompile("/test.es6"));
|
|
assert.ok(util.canCompile("/scripts/test.es6"));
|
|
|
|
assert.ok(util.canCompile("test.es"));
|
|
assert.ok(util.canCompile("/test.es"));
|
|
assert.ok(util.canCompile("/scripts/test.es"));
|
|
|
|
assert.ok(util.canCompile("test.jsx"));
|
|
assert.ok(util.canCompile("/test.jsx"));
|
|
assert.ok(util.canCompile("/scripts/test.jsx"));
|
|
|
|
assert.ok(!util.canCompile("test"));
|
|
assert.ok(!util.canCompile("test.css"));
|
|
assert.ok(!util.canCompile("/test.css"));
|
|
assert.ok(!util.canCompile("/scripts/test.css"));
|
|
});
|
|
|
|
test("list", function () {
|
|
assert.deepEqual(util.list(undefined), []);
|
|
assert.deepEqual(util.list(false), []);
|
|
assert.deepEqual(util.list(null), []);
|
|
assert.deepEqual(util.list(""), []);
|
|
assert.deepEqual(util.list("foo"), ["foo"]);
|
|
assert.deepEqual(util.list("foo,bar"), ["foo", "bar"]);
|
|
assert.deepEqual(util.list(["foo", "bar"]), ["foo", "bar"]);
|
|
assert.deepEqual(util.list(/foo/), [/foo/]);
|
|
|
|
var date = new Date;
|
|
assert.deepEqual(util.list(date), [date]);
|
|
});
|
|
|
|
test("arrayify", function () {
|
|
assert.deepEqual(util.arrayify(undefined), []);
|
|
assert.deepEqual(util.arrayify(false), []);
|
|
assert.deepEqual(util.arrayify(null), []);
|
|
assert.deepEqual(util.arrayify(""), []);
|
|
assert.deepEqual(util.arrayify("foo"), ["foo"]);
|
|
assert.deepEqual(util.arrayify("foo,bar"), ["foo", "bar"]);
|
|
assert.deepEqual(util.arrayify(["foo", "bar"]), ["foo", "bar"]);
|
|
|
|
assert.throws(function () {
|
|
util.arrayify({});
|
|
}, /illegal type for arrayify/);
|
|
});
|
|
|
|
test("regexify", function () {
|
|
assert.deepEqual(util.regexify(undefined), /.^/);
|
|
assert.deepEqual(util.regexify(false), /.^/);
|
|
assert.deepEqual(util.regexify(null), /.^/);
|
|
assert.deepEqual(util.regexify(""), /.^/);
|
|
assert.deepEqual(util.regexify(["foo", "bar"]), /foo|bar/i);
|
|
assert.deepEqual(util.regexify("foobar"), /^(?:(?=.)foobar)$/i);
|
|
assert.deepEqual(util.regexify(/foobar/), /foobar/);
|
|
|
|
assert.throws(function () {
|
|
util.regexify({});
|
|
}, /illegal type for regexify/);
|
|
});
|
|
|
|
test("toIdentifier", function () {
|
|
assert.equal(t.toIdentifier(t.identifier("swag")), "swag");
|
|
assert.equal(t.toIdentifier("swag-lord"), "swagLord");
|
|
});
|
|
});
|