+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>CKEDITOR.dom.walker</title>\r
- <link rel="stylesheet" type="text/css" href="../../test.css" />\r
- <script type="text/javascript" src="../../../ckeditor.js"></script>\r
- <script type="text/javascript" src="../../test.js"></script>\r
- <script type="text/javascript">\r
- //<![CDATA[\r
-\r
-var tc;\r
-\r
-CKEDITOR.test.addTestCase( tc = (function()\r
-{\r
- // Local reference to the "assert" object.\r
- var assert = CKEDITOR.test.assert;\r
-\r
- var doc = new CKEDITOR.dom.document( document );\r
-\r
- function assertNodesList( wanted, nodes )\r
- {\r
- var simplifiedNodes = [];\r
-\r
- for ( var i = 0 ; i < nodes.length ; i++ )\r
- simplifiedNodes.push( nodes[i].type == CKEDITOR.NODE_TEXT ? nodes[i].getText() : ( '<' + nodes[i].getName() + '>' ) );\r
-\r
- assert.areSame( wanted.toString(), simplifiedNodes.toString() );\r
- }\r
-\r
- return {\r
-\r
- test_collapsed : function()\r
- {\r
- var node = doc.getById( 'playground' );\r
- node.setHtml( '<p>Test</p>' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStartAt( node.getFirst(), CKEDITOR.POSITION_AFTER_START );\r
- range.collapse( true );\r
-\r
- var walker = new CKEDITOR.dom.walker( range );\r
-\r
- assert.isNull( walker.next() );\r
- },\r
-\r
- test_next_1 : function()\r
- {\r
- var node = doc.getById( 'playground' );\r
- node.setHtml( '<p>This is <b>a <i>simple</i></b> test</p>' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.selectNodeContents( node );\r
-\r
- var walker = new CKEDITOR.dom.walker( range );\r
-\r
- var nodes = [];\r
- while ( ( node = walker.next() ) )\r
- nodes.push( node );\r
-\r
- assertNodesList( [ '<p>', 'This is ', '<b>', 'a ', '<i>', 'simple', ' test' ], nodes );\r
- },\r
-\r
- test_next_2 : function()\r
- {\r
- var node = doc.getById( 'playground' );\r
- node.setHtml( '<p>This is <b>a <i>simple</i></b> test</p>' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStartAt( node.getFirst(), CKEDITOR.POSITION_AFTER_START );\r
- range.setEnd( node.getChild( [0,1,1,0] ), 2 );\r
-\r
- var walker = new CKEDITOR.dom.walker( range );\r
-\r
- var nodes = [];\r
- while ( ( node = walker.next() ) )\r
- nodes.push( node );\r
-\r
- assertNodesList( [ 'This is ', '<b>', 'a ', '<i>', 'si' ], nodes );\r
- },\r
-\r
- test_next_3 : function()\r
- {\r
- var node = doc.getById( 'playground' );\r
- node.setHtml( '<p>Test</p><h1>More</h1>' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStartAt( node.getChild( 1 ), CKEDITOR.POSITION_BEFORE_START );\r
- range.setEndAt( node.getChild( 1 ), CKEDITOR.POSITION_AFTER_START );\r
-\r
- var walker = new CKEDITOR.dom.walker( range );\r
-\r
- var nodes = [];\r
- while ( ( node = walker.next() ) )\r
- nodes.push( node );\r
-\r
- assertNodesList( [ '<h1>' ], nodes );\r
- },\r
-\r
- test_next_4 : function()\r
- {\r
- var node = doc.getById( 'playground' );\r
- node.setHtml( '<p>Test</p><h1>More</h1>' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStartAt( node.getChild( 0 ), CKEDITOR.POSITION_BEFORE_END );\r
- range.setEndAt( node.getChild( 0 ), CKEDITOR.POSITION_AFTER_END );\r
-\r
- var walker = new CKEDITOR.dom.walker( range );\r
-\r
- var nodes = [];\r
- while ( ( node = walker.next() ) )\r
- nodes.push( node );\r
-\r
- assertNodesList( [], nodes );\r
- },\r
-\r
- test_next_5 : function()\r
- {\r
- var node = doc.getById( 'playground' );\r
- node.setHtml( '<p>Test</p><h1>More</h1>' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStartAt( node.getChild( 0 ), CKEDITOR.POSITION_BEFORE_END );\r
- range.setEndAt( node.getChild( 1 ), CKEDITOR.POSITION_AFTER_START );\r
-\r
- var walker = new CKEDITOR.dom.walker( range );\r
-\r
- var nodes = [];\r
- while ( ( node = walker.next() ) )\r
- nodes.push( node );\r
-\r
- assertNodesList( [ '<h1>' ], nodes );\r
- },\r
-\r
- test_previous_1 : function()\r
- {\r
- var node = doc.getById( 'playground' );\r
- node.setHtml( '<p>This is <b>a <i>simple</i></b> test</p>' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.selectNodeContents( node );\r
-\r
- var walker = new CKEDITOR.dom.walker( range );\r
-\r
- var nodes = [];\r
- while ( ( node = walker.previous() ) )\r
- nodes.push( node );\r
-\r
- assertNodesList( [ '<p>', ' test', '<b>', '<i>', 'simple', 'a ', 'This is ' ], nodes );\r
- },\r
-\r
- test_previous_2 : function()\r
- {\r
- var node = doc.getById( 'playground' );\r
- node.setHtml( '<p>This is <b>a <i>simple</i></b> test</p>' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setEnd( node.getChild( [0,0] ), 2 );\r
- range.setEnd( node.getChild( [0,1,1,0] ), 2 );\r
-\r
- var walker = new CKEDITOR.dom.walker( range );\r
-\r
- var nodes = [];\r
- while ( ( node = walker.previous() ) )\r
- nodes.push( node );\r
-\r
- assertNodesList( [ 'si', 'a ', 'is is ' ], nodes );\r
- },\r
-\r
- test_previous_3 : function()\r
- {\r
- var node = doc.getById( 'playground' );\r
- node.setHtml( '<p>Test</p><h1>More</h1>' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStartAt( node.getChild( 1 ), CKEDITOR.POSITION_BEFORE_START );\r
- range.setEndAt( node.getChild( 1 ), CKEDITOR.POSITION_AFTER_START );\r
-\r
- var walker = new CKEDITOR.dom.walker( range );\r
-\r
- var nodes = [];\r
- while ( ( node = walker.previous() ) )\r
- nodes.push( node );\r
-\r
- assertNodesList( [ '' ], nodes );\r
- },\r
-\r
- test_previous_4 : function()\r
- {\r
- var node = doc.getById( 'playground' );\r
- node.setHtml( '<p>Test</p><h1>More</h1>' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStartAt( node.getChild( 0 ), CKEDITOR.POSITION_BEFORE_END );\r
- range.setEndAt( node.getChild( 0 ), CKEDITOR.POSITION_AFTER_END );\r
-\r
- var walker = new CKEDITOR.dom.walker( range );\r
-\r
- var nodes = [];\r
- while ( ( node = walker.previous() ) )\r
- nodes.push( node );\r
-\r
- assertNodesList( [ '<p>' ], nodes );\r
- },\r
-\r
- test_previous_5 : function()\r
- {\r
- var node = doc.getById( 'playground' );\r
- node.setHtml( '<p>Test</p><h1>More</h1>' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStartAt( node.getChild( 0 ), CKEDITOR.POSITION_BEFORE_END );\r
- range.setEndAt( node.getChild( 1 ), CKEDITOR.POSITION_AFTER_START );\r
-\r
- var walker = new CKEDITOR.dom.walker( range );\r
-\r
- var nodes = [];\r
- while ( ( node = walker.previous() ) )\r
- nodes.push( node );\r
-\r
- assertNodesList( [ '<p>' ], nodes );\r
- },\r
-\r
- /**\r
- * Test guard function is invoked on every move when iterating forward.\r
- */\r
- test_guard_1 : function()\r
- {\r
- var node = doc.getById( 'playground' );\r
- node.setHtml( '<p>This is <b>a <i>simple</i></b> test</p>' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.selectNodeContents( node );\r
-\r
- var walker = new CKEDITOR.dom.walker( range );\r
- var nodes = [];\r
-\r
- walker.guard = function( node )\r
- {\r
- nodes.push( node );\r
- return true;\r
- };\r
-\r
- while ( ( node = walker.next() ) )\r
- { /*jsl:pass*/ }\r
-\r
- assertNodesList( [ '<p>', 'This is ', '<b>', 'a ', '<i>', 'simple', '<i>', '<b>',' test' , '<p>' ], nodes );\r
- },\r
-\r
- /**\r
- * Test guard function is invoked on every move when iterating backward.\r
- */\r
- test_guard_2 : function()\r
- {\r
- var node = doc.getById( 'playground' );\r
- node.setHtml( '<p>This is <b>a <i>simple</i></b> test</p>' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.selectNodeContents( node );\r
-\r
- var walker = new CKEDITOR.dom.walker( range );\r
- var nodes = [];\r
-\r
- walker.guard = function( node )\r
- {\r
- nodes.push( node );\r
- return true;\r
- };\r
-\r
- while ( ( node = walker.previous() ) )\r
- { /*jsl:pass*/ }\r
-\r
- assertNodesList( [ '<p>', ' test', '<b>', '<i>', 'simple', '<i>', 'a ', '<b>', 'This is ', '<p>' ], nodes );\r
- },\r
-\r
- /**\r
- * Test evaluator function is invoked on every step when iterating backward.\r
- */\r
- test_evaluator_1 : function()\r
- {\r
- var node = doc.getById( 'playground' );\r
- node.setHtml( '<p>This is <b>a <i>simple</i></b> test</p>' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.selectNodeContents( node );\r
-\r
- var walker = new CKEDITOR.dom.walker( range );\r
- var nodes = [];\r
-\r
- walker.evaluator = function( node )\r
- {\r
- nodes.push( node );\r
- return true;\r
- };\r
-\r
- while ( ( node = walker.previous() ) )\r
- { /*jsl:pass*/ }\r
-\r
- assertNodesList( [ '<p>', ' test', '<b>', '<i>', 'simple', 'a ', 'This is ' ], nodes );\r
- },\r
- /**\r
- * Test walker stop at empty endContainer.\r
- */\r
- test_stopGuard : function()\r
- {\r
- var node = doc.getById( 'playground' );\r
- node.setHtml( '<span></span>afterEnd' );\r
- var endContainer = node.getFirst();\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.selectNodeContents( node );\r
- range.setEndAt( endContainer, CKEDITOR.POSITION_AFTER_START );\r
-\r
- var walker = new CKEDITOR.dom.walker( range );\r
- var nodes = [];\r
-\r
- walker.evaluator = function( node )\r
- {\r
- nodes.push( node );\r
- return true;\r
- };\r
-\r
- while ( ( node = walker.next() ) )\r
- { /*jsl:pass*/ }\r
-\r
- assertNodesList( [ '<span>' ], nodes );\r
-\r
- },\r
- name : document.title\r
- };\r
-})() );\r
-\r
-//window.onload = tc.test_stopGuard;\r
- //]]>\r
- </script>\r
-</head>\r
-<body>\r
- <div id="playground"></div>\r
-</body>\r
-</html>\r