+++ /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>Plugin: domiterator</title>\r
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">\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
-\r
-CKEDITOR.plugins.load( [ 'htmldataprocessor', 'htmlwriter', 'domiterator'] );\r
-\r
-\r
- </script>\r
- <script type="text/javascript">\r
- //<![CDATA[\r
-\r
-/**\r
- * IE always returning CRLF for linefeed, so remove it when retrieve pre-formated text from text area.\r
- * @param {Object} id\r
- */\r
-function getTextAreaValue( id )\r
-{\r
- return CKEDITOR.document.getById( id ).getValue().replace(/\r/gi,'');\r
-}\r
-\r
-CKEDITOR.test.addTestCase( (function()\r
-{\r
-\r
- // Local references.\r
- var assert = CKEDITOR.test.assert,\r
- arrayAssert = YAHOO.util.ArrayAssert;\r
-\r
- var doc = new CKEDITOR.dom.document( document );\r
-\r
- // In these tests, we may "reset" the writer rules to avoid it formatting\r
- // the output, making the assertion easier to the done. We don't need to\r
- // test formatting features here, so this is ok.\r
- var getDataProcessor = function()\r
- {\r
- var dataProcessor = new CKEDITOR.htmlDataProcessor();\r
- dataProcessor.writer._.rules = [];\r
- return dataProcessor;\r
- };\r
-\r
- /**\r
- * IE always returning CRLF for line-feed, so remove it when retrieving\r
- * pre-formated text from text area.\r
- */\r
- function getTextAreaValue( id )\r
- {\r
- return CKEDITOR.document.getById( id ).getValue().replace( /\r/gi, '' );\r
- }\r
-\r
- function assumeElementContentAreSame( container, textareaId )\r
- {\r
- if( typeof container == 'string' )\r
- container = doc.getById( container );\r
- //Assume result document content\r
- var html = getDataProcessor().toDataFormat( container.getHtml() );\r
- assert.areSame( getTextAreaValue( textareaId ) , html );\r
- }\r
-\r
- function assumeElementAreSame( element, textareaId )\r
- {\r
- if( typeof element == 'string' )\r
- element = doc.getById( element );\r
- //Assume result document content\r
- var html = getDataProcessor().toDataFormat( element.getOuterHtml() );\r
- assert.areSame( getTextAreaValue( textareaId ) , html );\r
- }\r
-\r
- /**\r
- *\r
- * @param {String|CKEDITOR.dom.range} containerId|range Either the id of html container which contents are treated as range, or a exisiting range object.\r
- * @param {Object} iteratorOption\r
- * @param {Array} expectedTagList block elements tagName list in iteration orders.\r
- */\r
- function assumeIterationSameAs( containerIdOrRange, iteratorOption, expectedTagList )\r
- {\r
- var range;\r
- if( typeof containerIdOrRange == 'string' )\r
- {\r
- range = new CKEDITOR.dom.range( doc );\r
- range.selectNodeContents( doc.getById( containerIdOrRange ) );\r
- }\r
- else\r
- range = containerIdOrRange;\r
-\r
- var iter = range.createIterator();\r
- CKEDITOR.tools.extend( iter, iteratorOption, true );\r
- var blockList = [], block;\r
- while (( block = iter.getNextParagraph() ) )\r
- {\r
- blockList.push( block.getName() );\r
- }\r
- arrayAssert.itemsAreEqual( expectedTagList, blockList );\r
- }\r
-\r
- return {\r
-\r
- /**\r
- * Test iterating over table cells.\r
- */\r
- test_iterator_table_cells : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStartAt( doc.getById( 'iterTarget2a' ), CKEDITOR.POSITION_AFTER_START );\r
- range.setEndAt( doc.getById( 'iterTarget2b' ), CKEDITOR.POSITION_BEFORE_END );\r
- assumeIterationSameAs( range, null, [ 'th', 'p', 'td' ]);\r
- assumeElementContentAreSame( 'iterContainer2', 'iterResult2' );\r
- },\r
-\r
- /**\r
- * Test iterating over list items.\r
- */\r
- test_iterator_listItems : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStartAt( doc.getById( 'iterTarget3a' ), CKEDITOR.POSITION_AFTER_START );\r
- range.setEndAt( doc.getById( 'iterTarget3b' ), CKEDITOR.POSITION_BEFORE_END );\r
- assumeIterationSameAs( range, null, [ 'li', 'p', 'li' ,'p', 'li' ]);\r
- assumeElementContentAreSame( 'iterContainer3', 'iterResult3' );\r
- },\r
-\r
- /**\r
- * Test iterating over pseudo block.\r
- */\r
- test_iterator_pseudoBlock : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStartAt( doc.getById( 'iterTarget4a' ), CKEDITOR.POSITION_AFTER_START );\r
- range.setEndAt( doc.getById( 'iterTarget4b' ), CKEDITOR.POSITION_BEFORE_END );\r
- assumeIterationSameAs( range, null, [ 'p', 'p' ] );\r
- assumeElementContentAreSame( 'iterContainer4', 'iterResult4' );\r
- },\r
-\r
- /**\r
- * Test collapsed range before paraghraph end.\r
- */\r
- test_iterator_collapsed_before_paragraph : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStartAt( doc.getById( 'iterTarget7' ), CKEDITOR.POSITION_BEFORE_END );\r
- assumeIterationSameAs( range, null, [ 'p' ]);\r
- assumeElementContentAreSame( 'iterContainer7', 'iterResult7' );\r
- },\r
-\r
- /**\r
- * Test range collapsed inside paraghraph.\r
- */\r
- test_iterator_collapsed_inside_paragraph : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( 'para8' ).getFirst(), 3 );\r
- assumeIterationSameAs( range, null, [ 'p' ]);\r
- assumeElementContentAreSame( 'iterContainer8', 'iterResult8' );\r
- },\r
-\r
- /**\r
- * Test fix paragraph-less content.\r
- */\r
- test_iterator_establish_paragraph: function()\r
- {\r
- var range = new CKEDITOR.dom.range(doc);\r
- range.setStartAt(doc.getById('iterTarget9'), CKEDITOR.POSITION_AFTER_START);\r
- range.setEndAt(doc.getById('iterTarget9'), CKEDITOR.POSITION_BEFORE_END);\r
- assumeIterationSameAs(range, null, ['p']);\r
- assumeElementContentAreSame( 'iterContainer9', 'iterResult9');\r
- },\r
-\r
- /**\r
- * Test iterating over more than one paragraphs. (#3352)\r
- */\r
- test_iterator_multiple_paragraphs: function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStartAt(doc.getById( 'iterTarget10a' ), CKEDITOR.POSITION_AFTER_START );\r
- range.setEndAt(doc.getById( 'iterTarget10b' ), CKEDITOR.POSITION_BEFORE_END );\r
- assumeIterationSameAs( range, null, [ 'p', 'p' ] );\r
- },\r
-\r
- name : document.title\r
- };\r
-})() );\r
-\r
- //]]>\r
- </script>\r
-</head>\r
-<body>\r
-\r
-\r
-<div id="iterContainer2"><table summary="summary">\r
- <caption>caption</caption>\r
- <tr>\r
- <th id="iterTarget2a">\r
- head1</th>\r
- </tr>\r
- <tr>\r
- <td><p>cell1</p></td>\r
- </tr>\r
- <tr>\r
- <td id="iterTarget2b">cell2</td>\r
- </tr>\r
-</table></div>\r
-<textarea id="iterResult2"><table summary="summary"><caption>caption</caption><tbody><tr><th id="iterTarget2a">head1</th></tr><tr><td><p>cell1</p></td></tr><tr><td id="iterTarget2b">cell2</td></tr></tbody></table></textarea>\r
-\r
-<div id="iterContainer3"><ul>\r
- <li id="iterTarget3a">item1</li>\r
- <li><p>item2</p></li>\r
- <li>\r
- <ul><li>item3</li></ul>\r
- <ul><li><p>item5</p></li></ul>\r
- </li>\r
- <li id="iterTarget3b">item5</li>\r
- </ul></div>\r
-<textarea id="iterResult3"><ul><li id="iterTarget3a">item1</li><li><p>item2</p></li><li><ul><li>item3</li></ul><ul><li><p>item5</p></li></ul></li><li id="iterTarget3b">item5</li></ul></textarea>\r
-\r
-<div id="iterContainer4">\r
- <div id="iterTarget4b"><p id="iterTarget4a">paragraph</p>text</div>\r
-</div>\r
-<textarea id="iterResult4"><div id="iterTarget4b"><p id="iterTarget4a">paragraph</p><p>text</p></div></textarea>\r
-\r
-<div id="iterContainer7"><p id="iterTarget7">paragraph</p></div>\r
-<textarea id="iterResult7"><p id="iterTarget7">paragraph</p></textarea>\r
-\r
-<div id="iterContainer8"><p id="para8">paragraph</p></div>\r
-<textarea id="iterResult8"><p id="para8">paragraph</p></textarea>\r
-\r
-<form id="iterContainer9"><span id="iterTarget9">non-paragraph</span></form>\r
-<textarea id="iterResult9"><p><span id="iterTarget9">non-paragraph</span></p></textarea>\r
-\r
-<div id="iterContainer10"><p id="iterTarget10a">para1</p><p id="iterTarget10b">para2</p></div>\r
-\r
-</body>\r
-</html>\r