blob: a72800b8bdb8d618faffebfb1a199d5e0fa0ba48 [file] [log] [blame]
describe("Parses all of the IDLs to produce the correct ASTs", function () {
for (var i = 0, n = data.valid.idl.length; i < n; i++) {
var idl = data.valid.idl[i], json = data.valid.json[i];
var func = (function (idl, json) {
return function () {
try {
// the AST contains NaN and +/-Infinity that cannot be serialised to JSON
// the stored JSON ASTs use the same replacement function as is used below
// so we compare based on that
var diff = jsondiffpatch.diff(json, WebIDL2.parse(idl));
if (diff && debug) console.log(JSON.stringify(diff, null, 4));
expect(diff).to.be(undefined);
}
catch (e) {
console.log(e.toString());
throw e;
}
};
}(idl, json));
it("should produce the same AST for " + i, func);
}
});
describe("Parses all of the invalid IDLs to check that they blow up correctly", function () {
for (var i = 0, n = data.invalid.idl.length; i < n; i++) {
var idl = data.invalid.idl[i], error = data.invalid.json[i];
var func = (function (idl, err) {
return function () {
var error;
try {
var ast = WebIDL2.parse(idl);
console.log(JSON.stringify(ast, null, 4));
}
catch (e) {
error = e;
}
finally {
expect(error).to.be.ok();
expect(error.message).to.equal(err.message);
expect(error.line).to.equal(err.line);
}
};
}(idl, error));
it("should produce the right error for " + i, func);
}
});