Changeset 2816

Show
Ignore:
Timestamp:
11/23/07 06:34:42 (1 year ago)
Author:
jun66j5
Message:

Added a test for TracWysiwyg#treeWalk()

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • tracwysiwygplugin/0.10/tests/testcase.js

    r2814 r2816  
    3636        var fragment = unit.fragment; 
    3737        var element = unit.element; 
     38 
     39        unit.add("treeWalk", function() { 
     40            var list; 
     41            function iterator(node) { 
     42                var value; 
     43                if (node) { 
     44                    switch (node.nodeType) { 
     45                    case 1: value = node.tagName.toLowerCase(); break; 
     46                    case 3: value = "#text"; break; 
     47                    } 
     48                } 
     49                else { 
     50                    value = "(null)"; 
     51                } 
     52                list.push(value); 
     53            } 
     54 
     55            function doTreeWalk(expected, dom) { 
     56                list = []; 
     57                instance.treeWalk(dom, iterator); 
     58                this.assertEqual(expected, list.join(" ")); 
     59 
     60                list = []; 
     61                instance._treeWalkEmulation(dom, iterator); 
     62                this.assertEqual(expected, list.join(" ")); 
     63            } 
     64 
     65            doTreeWalk.call(this, "p #text (null)", element("div", element("p", "paragraph"))); 
     66            doTreeWalk.call(this, "#text (null)", element("div", element("p", "paragraph")).firstChild); 
     67            doTreeWalk.call(this, "(null)", element("div", element("p")).firstChild); 
     68 
     69            var dom = element("div"); 
     70            dom.innerHTML = [ 
     71                '<h2 id="Tables">Tables</h2>', 
     72                '<p>', 
     73                'Simple tables can be created like this:', 
     74                '</p>', 
     75                '<pre class="wiki">||Cell 1||Cell 2||Cell 3||', 
     76                '||Cell 4||Cell 5||Cell 6||', 
     77                '</pre><p>', 
     78                'Display:', 
     79                '</p>', 
     80                '<table class="wiki">', 
     81                '<tbody><tr><td>Cell 1</td><td>Cell 2</td><td>Cell 3', 
     82                '</td></tr><tr><td>Cell 4</td><td>Cell 5</td><td>Cell 6', 
     83                '</td></tr></tbody></table>', 
     84                '<p>', 
     85                'Note that more complex tables can be created using', 
     86                '<a class="wiki" href="/practice/wiki/WikiRestructuredText#BiggerReSTExample">reStructuredText</a>.', 
     87                '</p>' ].join(""); 
     88            var expected = [ 
     89                'h2', '#text', 'p', '#text', 'pre', '#text', 'p', '#text', 
     90                'table', 'tbody', 
     91                'tr', 'td', '#text', 'td', '#text', 'td', '#text', 
     92                'tr', 'td', '#text', 'td', '#text', 'td', '#text', 
     93                'p', '#text', 'a', '#text', '#text', 
     94                '(null)'].join(" "); 
     95            doTreeWalk.call(this, expected, dom); 
     96        }); 
    3897 
    3998        unit.add("code block", function() { 
  • tracwysiwygplugin/0.10/tracwysiwyg/htdocs/wysiwyg.js

    r2814 r2816  
    26162616} 
    26172617 
     2618TracWysiwyg.prototype._treeWalkEmulation = function(root, iterator) { 
     2619    if (!root.firstChild) { 
     2620        iterator(null); 
     2621        return; 
     2622    } 
     2623    var element = root; 
     2624    var tmp; 
     2625    while (element) { 
     2626        if (tmp = element.firstChild) { 
     2627            element = tmp; 
     2628        } 
     2629        else if (tmp = element.nextSibling) { 
     2630            element = tmp; 
     2631        } 
     2632        else { 
     2633            for ( ; ; ) { 
     2634                element = element.parentNode; 
     2635                if (element == root || !element) { 
     2636                    iterator(null); 
     2637                    return; 
     2638                } 
     2639                if (tmp = element.nextSibling) { 
     2640                    element = tmp; 
     2641                    break; 
     2642                } 
     2643            } 
     2644        } 
     2645        iterator(element); 
     2646    } 
     2647}; 
     2648 
    26182649if (document.createTreeWalker) { 
    26192650    TracWysiwyg.prototype.treeWalk = function(root, iterator) { 
     
    26272658} 
    26282659else { 
    2629     TracWysiwyg.prototype.treeWalk = function(root, iterator) { 
    2630         if (!root.firstChild) { 
    2631             iterator(null); 
    2632             return; 
    2633         } 
    2634         var element = root; 
    2635         var tmp; 
    2636         while (element) { 
    2637             if (tmp = element.firstChild) { 
    2638                 element = tmp; 
    2639             } 
    2640             else if (tmp = element.nextSibling) { 
    2641                 element = tmp; 
    2642             } 
    2643             else { 
    2644                 for ( ; ; ) { 
    2645                     element = element.parentNode; 
    2646                     if (element == root || !element) { 
    2647                         iterator(null); 
    2648                         return; 
    2649                     } 
    2650                     if (tmp = element.nextSibling) { 
    2651                         element = tmp; 
    2652                         break; 
    2653                     } 
    2654                 } 
    2655             } 
    2656             iterator(element); 
    2657         } 
    2658     }; 
     2660    TracWysiwyg.prototype.treeWalk = TracWysiwyg.prototype._treeWalkEmulation; 
    26592661} 
    26602662 
  • tracwysiwygplugin/0.11/tests/testcase.js

    r2814 r2816  
    3636        var fragment = unit.fragment; 
    3737        var element = unit.element; 
     38 
     39        unit.add("treeWalk", function() { 
     40            var list; 
     41            function iterator(node) { 
     42                var value; 
     43                if (node) { 
     44                    switch (node.nodeType) { 
     45                    case 1: value = node.tagName.toLowerCase(); break; 
     46                    case 3: value = "#text"; break; 
     47                    } 
     48                } 
     49                else { 
     50                    value = "(null)"; 
     51                } 
     52                list.push(value); 
     53            } 
     54 
     55            function doTreeWalk(expected, dom) { 
     56                list = []; 
     57                instance.treeWalk(dom, iterator); 
     58                this.assertEqual(expected, list.join(" ")); 
     59 
     60                list = []; 
     61                instance._treeWalkEmulation(dom, iterator); 
     62                this.assertEqual(expected, list.join(" ")); 
     63            } 
     64 
     65            doTreeWalk.call(this, "p #text (null)", element("div", element("p", "paragraph"))); 
     66            doTreeWalk.call(this, "#text (null)", element("div", element("p", "paragraph")).firstChild); 
     67            doTreeWalk.call(this, "(null)", element("div", element("p")).firstChild); 
     68 
     69            var dom = element("div"); 
     70            dom.innerHTML = [ 
     71                '<h2 id="Tables">Tables</h2>', 
     72                '<p>', 
     73                'Simple tables can be created like this:', 
     74                '</p>', 
     75                '<pre class="wiki">||Cell 1||Cell 2||Cell 3||', 
     76                '||Cell 4||Cell 5||Cell 6||', 
     77                '</pre><p>', 
     78                'Display:', 
     79                '</p>', 
     80                '<table class="wiki">', 
     81                '<tbody><tr><td>Cell 1</td><td>Cell 2</td><td>Cell 3', 
     82                '</td></tr><tr><td>Cell 4</td><td>Cell 5</td><td>Cell 6', 
     83                '</td></tr></tbody></table>', 
     84                '<p>', 
     85                'Note that more complex tables can be created using', 
     86                '<a class="wiki" href="/practice/wiki/WikiRestructuredText#BiggerReSTExample">reStructuredText</a>.', 
     87                '</p>' ].join(""); 
     88            var expected = [ 
     89                'h2', '#text', 'p', '#text', 'pre', '#text', 'p', '#text', 
     90                'table', 'tbody', 
     91                'tr', 'td', '#text', 'td', '#text', 'td', '#text', 
     92                'tr', 'td', '#text', 'td', '#text', 'td', '#text', 
     93                'p', '#text', 'a', '#text', '#text', 
     94                '(null)'].join(" "); 
     95            doTreeWalk.call(this, expected, dom); 
     96        }); 
    3897 
    3998        unit.add("code block", function() { 
  • tracwysiwygplugin/0.11/tracwysiwyg/htdocs/wysiwyg.js

    r2814 r2816  
    26162616} 
    26172617 
     2618TracWysiwyg.prototype._treeWalkEmulation = function(root, iterator) { 
     2619    if (!root.firstChild) { 
     2620        iterator(null); 
     2621        return; 
     2622    } 
     2623    var element = root; 
     2624    var tmp; 
     2625    while (element) { 
     2626        if (tmp = element.firstChild) { 
     2627            element = tmp; 
     2628        } 
     2629        else if (tmp = element.nextSibling) { 
     2630            element = tmp; 
     2631        } 
     2632        else { 
     2633            for ( ; ; ) { 
     2634                element = element.parentNode; 
     2635                if (element == root || !element) { 
     2636                    iterator(null); 
     2637                    return; 
     2638                } 
     2639                if (tmp = element.nextSibling) { 
     2640                    element = tmp; 
     2641                    break; 
     2642                } 
     2643            } 
     2644        } 
     2645        iterator(element); 
     2646    } 
     2647}; 
     2648 
    26182649if (document.createTreeWalker) { 
    26192650    TracWysiwyg.prototype.treeWalk = function(root, iterator) { 
     
    26272658} 
    26282659else { 
    2629     TracWysiwyg.prototype.treeWalk = function(root, iterator) { 
    2630         if (!root.firstChild) { 
    2631             iterator(null); 
    2632             return; 
    2633         } 
    2634         var element = root; 
    2635         var tmp; 
    2636         while (element) { 
    2637             if (tmp = element.firstChild) { 
    2638                 element = tmp; 
    2639             } 
    2640             else if (tmp = element.nextSibling) { 
    2641                 element = tmp; 
    2642             } 
    2643             else { 
    2644                 for ( ; ; ) { 
    2645                     element = element.parentNode; 
    2646                     if (element == root || !element) { 
    2647                         iterator(null); 
    2648                         return; 
    2649                     } 
    2650                     if (tmp = element.nextSibling) { 
    2651                         element = tmp; 
    2652                         break; 
    2653                     } 
    2654                 } 
    2655             } 
    2656             iterator(element); 
    2657         } 
    2658     }; 
     2660    TracWysiwyg.prototype.treeWalk = TracWysiwyg.prototype._treeWalkEmulation; 
    26592661} 
    26602662