module( 've.dm.Document' ); /* Tests */ test( 'getOuterLength', 1, function() { var doc = new ve.dm.Document( ve.dm.example.data ); strictEqual( doc.getDocumentNode().getOuterLength(), ve.dm.example.data.length, 'document does not have elements around it' ); } ); test( 'rebuildNodes', function() { var doc = new ve.dm.Document( ve.dm.example.data.slice( 0 ) ), documentNode = doc.getDocumentNode(); // Rebuild without changes doc.rebuildNodes( documentNode, 1, 1, 5, 30 ); ve.example.nodeTreeEqual( documentNode, ve.dm.example.tree ); // XXX: Create a new document node tree from the old one var tree = new ve.dm.DocumentNode( ve.dm.example.tree.getChildren() ); // Replace table with paragraph doc.data.splice( 5, 30, { 'type': 'paragraph' }, 'a', 'b', 'c', { 'type': '/paragraph' } ); // Remove table from tree model tree.splice( 1, 1, new ve.dm.ParagraphNode( [new ve.dm.TextNode( 3 )] ) ); // Rebuild with changes doc.rebuildNodes( documentNode, 1, 1, 5, 5 ); ve.example.nodeTreeEqual( documentNode, tree ); } ); test( 'selectNodes', function() { var doc = new ve.dm.Document( ve.dm.example.data ), cases = ve.example.getSelectNodesCases( doc ); for ( var i = 0; i < cases.length; i++ ) { ve.example.nodeSelectionEqual( cases[i].actual, cases[i].expected ); } } );