diff --git a/editions/test/tiddlers/tests/test-html-parser.js b/editions/test/tiddlers/tests/test-html-parser.js new file mode 100644 index 000000000..f8db75164 --- /dev/null +++ b/editions/test/tiddlers/tests/test-html-parser.js @@ -0,0 +1,80 @@ +/*\ +title: test-html-parser.js +type: application/javascript +tags: [[$:/tags/test-spec]] + +Tests the parse rule for HTML elements + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +describe("HTML tag parser tests", function() { + + // Create a wiki + var wiki = new $tw.Wiki(); + + // Define a parsing shortcut + var parse = function(text) { + return wiki.parseText("text/vnd.tiddlywiki",text).tree; + }; + + it("should parse unclosed tags", function() { + expect(parse("
")).toEqual( + + [ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'br', isBlock : false, attributes : { }, children : [ ] } ] } ] + + ); + expect(parse("
")).toEqual( + + [ { type : 'element', tag : 'p', children : [ { type : 'text', text : '
' } ] } ] + + ); + expect(parse("
")).toEqual( + + [ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { }, children : [ ] } ] } ] + + ); + expect(parse("
")).toEqual( + + [ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { }, children : [ ] } ] } ] + + ); + expect(parse("
")).toEqual( + + [ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { }, children : [ ] } ] } ] + + ); + expect(parse("
some text
")).toEqual( + + [ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { }, children : [ { type : 'text', text : 'some text' } ] } ] } ] + + ); + expect(parse("
some text
")).toEqual( + + [ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { attribute : { type : 'string', value : 'true' } }, children : [ { type : 'text', text : 'some text' } ] } ] } ] + + ); + expect(parse("
some text
")).toEqual( + + [ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { attribute : { type : 'string', value : 'value' } }, children : [ { type : 'text', text : 'some text' } ] } ] } ] + + ); + expect(parse("
some text
")).toEqual( + + [ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { attribute : { type : 'indirect', textReference : 'TiddlerTitle' } }, children : [ { type : 'text', text : 'some text' } ] } ] } ] + + ); + expect(parse("
some text
")).toEqual( + + [ { type : 'element', tag : 'p', children : [ { type : 'element', tag : 'div', isBlock : false, attributes : { attribute : { type : 'indirect', textReference : 'TiddlerTitle!!field' } }, children : [ { type : 'text', text : 'some text' } ] } ] } ] + + ); + }); + +}); + +})();