Ticket #3367: test_walker_guard.patch

File test_walker_guard.patch, 3.5 KB (added by Garry Yao, 13 years ago)

Unit Test Case

  • _source/tests/core/dom/walker_guard.html

     
     1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2<html xmlns="http://www.w3.org/1999/xhtml">
     3<head>
     4        <title>CKEDITOR.dom.walker</title>
     5        <link rel="stylesheet" type="text/css" href="../../test.css" />
     6        <script type="text/javascript" src="../../../../ckeditor_source.js"></script> <!-- %REMOVE_LINE%
     7        <script type="text/javascript" src="../../../ckeditor.js"></script>
     8        %REMOVE_LINE% -->
     9        <script type="text/javascript" src="../../test.js"></script>
     10        <script type="text/javascript">
     11        //<![CDATA[
     12var tc;
     13CKEDITOR.test.addTestCase( tc = (function()
     14{
     15        // Local reference to the "assert" object.
     16        var assert = CKEDITOR.test.assert;
     17
     18        var doc = new CKEDITOR.dom.document( document );
     19       
     20        function assertNodesList( wanted, nodes )
     21        {
     22                var simplifiedNodes = [];
     23               
     24                for ( var i = 0 ; i < nodes.length ; i++ )
     25                        simplifiedNodes.push( nodes[i].type == CKEDITOR.NODE_TEXT ? nodes[i].getText() : ( '<' + nodes[i].getName() + '>' ) );
     26
     27                assert.areSame( wanted.toString(), simplifiedNodes.toString() );
     28        }
     29
     30        return {
     31
     32                /**
     33                 *  Test guard function is invoked on every move when iterating forward.
     34                 */
     35                test_guard_1 : function()
     36                {
     37                        var node = doc.getById( 'playground' );
     38                        node.setHtml( '<p>This is <b>a <i>simple</i></b> test</p>' );
     39
     40                        var range = new CKEDITOR.dom.range( doc );
     41                        range.selectNodeContents( node );
     42                       
     43                        var walker = new CKEDITOR.dom.walker( range );
     44                        var nodes = [],
     45                                node;
     46                        walker.guard = function( node ){
     47                                nodes.push( node );
     48                                return true;
     49                        };
     50                        while ( node = walker.next() )
     51                        {}
     52
     53                        assertNodesList( [ '<p>', 'This is ', '<b>', 'a ', '<i>', 'simple', '<i>', '<b>',' test' , '<p>' ], nodes );
     54                },
     55
     56                /**
     57                 *  Test guard function is invoked on every move when iterating backward.
     58                 */
     59                test_guard_2 : function()
     60                {
     61                        var node = doc.getById( 'playground' );
     62                        node.setHtml( '<p>This is <b>a <i>simple</i></b> test</p>' );
     63
     64                        var range = new CKEDITOR.dom.range( doc );
     65                        range.selectNodeContents( node );
     66                       
     67                        var walker = new CKEDITOR.dom.walker( range );
     68                        var nodes = [],
     69                                node;
     70                        walker.guard = function( node ){
     71                                nodes.push( node );
     72                                return true;
     73                        };
     74                        while ( node = walker.previous() )
     75                        {}
     76
     77                        assertNodesList( [ '<p>', ' test', '<b>', '<i>', 'simple', '<i>', 'a ', '<b>', 'This is ', '<p>' ], nodes );
     78                },
     79
     80                /**
     81                 *  Test evaluator function is invoked on every  step when iterating backward.
     82                 */
     83                test_evaluator_1 : function()
     84                {
     85                        var node = doc.getById( 'playground' );
     86                        node.setHtml( '<p>This is <b>a <i>simple</i></b> test</p>' );
     87
     88                        var range = new CKEDITOR.dom.range( doc );
     89                        range.selectNodeContents( node );
     90                       
     91                        var walker = new CKEDITOR.dom.walker( range );
     92                        var nodes = [],
     93                                node;
     94                        walker.evaluator = function( node ){
     95                                nodes.push( node );
     96                                return true;
     97                        };
     98                        while ( node = walker.previous() )
     99                        {}
     100
     101                        assertNodesList( [ '<p>', ' test', '<b>', '<i>', 'simple', 'a ', 'This is ' ], nodes );
     102                },
     103
     104                name : document.title
     105        };
     106})() );
     107
     108//window.onload = tc.test_guard_2;
     109        //]]>
     110        </script>
     111</head>
     112<body>
     113        <div id="playground"></p>
     114</body>
     115</html>
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy