Ticket #3049: test-domiterator-table.patch

File test-domiterator-table.patch, 3.6 KB (added by Garry Yao, 15 years ago)

Unit Test Case

  • _source/tests/plugins/domiterator/domiterator.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>Plugin: domiterator</title>
     5        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     6        <link rel="stylesheet" type="text/css" href="../../test.css" />
     7        <script type="text/javascript" src="../../../../ckeditor_source.js"></script>
     8        <script type="text/javascript" src="../../test.js"></script>
     9        <script type="text/javascript">
     10
     11CKEDITOR.plugins.load( [ 'htmldataprocessor', 'htmlwriter', 'domiterator'] );
     12
     13
     14        </script>
     15        <script type="text/javascript">
     16        //<![CDATA[
     17
     18/**
     19 * IE always returning CRLF for linefeed, so remove it when retrieve pre-formated text from text area.
     20 * @param {Object} id
     21 */     
     22function getTextAreaValue( id )
     23{
     24        return CKEDITOR.document.getById( id ).getValue().replace(/\r/gi,'');
     25}
     26
     27CKEDITOR.test.addTestCase( (function()
     28{
     29       
     30        // Local references.
     31        var assert = CKEDITOR.test.assert,
     32                arrayAssert = YAHOO.util.ArrayAssert;
     33       
     34        var doc = new CKEDITOR.dom.document( document );
     35
     36        // In these tests, we may "reset" the writer rules to avoid it formatting
     37        // the output, making the assertion easier to the done. We don't need to
     38        // test formatting features here, so this is ok.
     39        var getDataProcessor = function()
     40        {
     41                var dataProcessor = new CKEDITOR.htmlDataProcessor();
     42                dataProcessor.writer._.rules = [];
     43                return dataProcessor;
     44        };
     45
     46        /**
     47         * IE always returning CRLF for line-feed, so remove it when retrieving
     48         * pre-formated text from text area.
     49         */
     50        function getTextAreaValue( id )
     51        {
     52                return CKEDITOR.document.getById( id ).getValue().replace( /\r/gi, '' );
     53        }
     54       
     55        /**
     56         *
     57         * @param {String} containerId of html container which contents are iterated over.
     58         * @param {Object} iteratorOption
     59         * @param {Array} expectedTagList block elements tagName list in iteration orders.
     60         * @param {resultContainerId} resultHtml container of the assumed html string after the iteration finished.
     61         */
     62        function assumeIterationSameAs( containerId, iteratorOption, expectedTagList, resultContainerId )
     63        {
     64                var range = new CKEDITOR.dom.range( doc ),
     65                        container = doc.getById( containerId );
     66               
     67                range.selectNodeContents( container );
     68                       
     69                var iter = range.createIterator();
     70                CKEDITOR.tools.extend( iter, iteratorOption, true );
     71                var blockList = [], block;
     72                while (( block = iter.getNextParagraph() ) )
     73                {
     74                        blockList.push( block.getName() );
     75                }
     76                arrayAssert.itemsAreEqual( expectedTagList, blockList );
     77               
     78                //Assume result document content
     79                var html = getDataProcessor().toDataFormat( container );
     80                assert.areSame( getTextAreaValue( resultContainerId ) , html );
     81        }
     82       
     83
     84        return {
     85               
     86                /**
     87                 * Test iteration over table
     88                 */
     89                test_toDataFormat2 : function()
     90                {
     91                        assumeIterationSameAs( 'iterContainer2', null, [ 'th', 'th', 'td', 'td' ], 'iterResult2' );
     92                },
     93
     94               
     95                name : document.title
     96        };
     97})() );
     98
     99        //]]>
     100        </script>
     101</head>
     102<body>
     103
     104<div id="iterContainer2"><table><caption>Capton Para</caption><tr><th>Head1</th><th>Head2</th></tr><tr><td>Cell1</td><td>Cell2</td></tr></table></div>
     105<textarea id="iterResult2"><table><caption>Capton Para</caption><tr><th>Head1</th><th>Head2</th></tr><tr><td>Cell1</td><td>Cell2</td></tr></table></textarea>
     106
     107
     108</body>
     109</html>\ No newline at end of file
© 2003 – 2022, CKSource sp. z o.o. sp.k. All rights reserved. | Terms of use | Privacy policy