Procházet zdrojové kódy

Tests: added tree walker test for walking document fragment.

Szymon Cofalik před 8 roky
rodič
revize
6114c67aa1

+ 25 - 0
packages/ckeditor5-engine/tests/model/treewalker.js

@@ -4,6 +4,7 @@
  */
 
 import Document from '../../src/model/document';
+import DocumentFragment from '../../src/model/documentfragment';
 import Element from '../../src/model/element';
 import Text from '../../src/model/text';
 import TreeWalker from '../../src/model/treewalker';
@@ -537,6 +538,30 @@ describe( 'TreeWalker', () => {
 			} );
 		} );
 	} );
+
+	it( 'should iterate over document fragment', () => {
+		const foo = new Text( 'foo' );
+		const bar = new Text( 'bar' );
+		const p = new Element( 'p', null, [ foo, bar ] );
+		const docFrag = new DocumentFragment( [ p ] );
+
+		const iterator = new TreeWalker( {
+			startPosition: new Position( docFrag, [ 0 ] ),
+			ignoreElementEnd: true
+		} );
+
+		const expected = [
+			{ type: 'elementStart', item: p },
+			{ type: 'text', data: 'foo', attrs: [] },
+			{ type: 'text', data: 'bar', attrs: [] }
+		];
+
+		let i = 0;
+
+		for ( let value of iterator ) {
+			expectValue( value, expected[ i++ ], { ignoreElementEnd: true } );
+		}
+	} );
 } );
 
 function expectValue( value, expected, options ) {

+ 18 - 0
packages/ckeditor5-engine/tests/view/treewalker.js

@@ -6,6 +6,7 @@
 /* globals document */
 
 import Document from '../../src/view/document';
+import DocumentFragment from '../../src/view/documentfragment';
 import AttributeElement from '../../src/view/attributeelement';
 import ContainerElement from '../../src/view/containerelement';
 import Text from '../../src/view/text';
@@ -977,6 +978,23 @@ describe( 'TreeWalker', () => {
 			} );
 		} );
 	} );
+
+	it( 'should iterate over document fragment', () => {
+		const foo = new Text( 'foo' );
+		const bar = new Text( 'bar' );
+		const p = new ContainerElement( 'p', null, foo );
+		const b = new AttributeElement( 'b', null, bar );
+		const docFrag = new DocumentFragment( [ p, b ] );
+
+		const iterator = new TreeWalker( {
+			startPosition: new Position( docFrag, 0 ),
+			ignoreElementEnd: true
+		} );
+
+		const nodes = Array.from( iterator ).map( ( step ) => step.item );
+
+		expect( nodes ).to.deep.equal( [ p, foo, b, bar ] );
+	} );
 } );
 
 function expectValue( value, expected, options = {} ) {