| |
| 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); |
| } |
| }); |