49 lines
1.6 KiB
JavaScript
49 lines
1.6 KiB
JavaScript
var generate = require("../../lib/babel/generation");
|
|
var assert = require("assert");
|
|
var helper = require("./_helper");
|
|
var parse = require("../../lib/babel/helpers/parse");
|
|
var chai = require("chai");
|
|
var t = require("../../lib/babel/types");
|
|
var _ = require("lodash");
|
|
|
|
suite("generation", function () {
|
|
test("completeness", function () {
|
|
_.each(t.VISITOR_KEYS, function (keys, type) {
|
|
assert.ok(!!generate.CodeGenerator.prototype[type], type + " should exist");
|
|
});
|
|
|
|
_.each(generate.CodeGenerator.prototype, function (fn, type) {
|
|
if (!/[A-Z]/.test(type[0])) return;
|
|
assert.ok(t.VISITOR_KEYS[type], type + " should not exist");
|
|
});
|
|
});
|
|
});
|
|
|
|
_.each(helper.get("generation"), function (testSuite) {
|
|
suite("generation/" + testSuite.title, function () {
|
|
_.each(testSuite.tests, function (task) {
|
|
test(task.title, !task.disabled && function () {
|
|
var expect = task.expect;
|
|
var actual = task.actual;
|
|
|
|
var actualAst = parse(actual.code, {
|
|
filename: actual.loc,
|
|
nonStandard: true,
|
|
strictMode: false,
|
|
sourceType: "module",
|
|
features: {
|
|
"es7.decorators": true,
|
|
"es7.comprehensions": true,
|
|
"es7.asyncFunctions": true,
|
|
"es7.exportExtensions": true,
|
|
"es7.functionBind": true
|
|
}
|
|
});
|
|
var actualCode = generate(actualAst, task.options, actual.code).code;
|
|
|
|
chai.expect(actualCode).to.equal(expect.code, actual.loc + " !== " + expect.loc);
|
|
});
|
|
});
|
|
});
|
|
});
|