1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
\r
2 <html xmlns="http://www.w3.org/1999/xhtml">
\r
4 <title>CKEDITOR.htmlParser.fragment</title>
\r
5 <link rel="stylesheet" type="text/css" href="../../test.css" />
\r
6 <script type="text/javascript" src="../../../ckeditor.js"></script>
\r
7 <script type="text/javascript" src="../../test.js"></script>
\r
8 <script type="text/javascript">
\r
13 CKEDITOR.test.addTestCase( tc = (function()
\r
15 // Local reference to the "assert" object.
\r
16 var assert = CKEDITOR.test.assert;
\r
18 function testParser( input, expected )
\r
20 var fragment = CKEDITOR.htmlParser.fragment.fromHtml( input, 'p' ),
\r
21 writer = new CKEDITOR.htmlParser.basicWriter();
\r
23 fragment.writeHtml( writer );
\r
25 assert.areSame( expected, writer.getHtml( true ) );
\r
29 test_fromHtml_1 : function()
\r
31 var fragment = CKEDITOR.htmlParser.fragment.fromHtml( '<p>Test</p>' );
\r
33 assert.areSame( 1, fragment.children.length, 'Wrong size' );
\r
34 assert.areSame( CKEDITOR.NODE_ELEMENT, fragment.children[0].type, 'Wrong child type' );
\r
35 assert.areSame( 'p', fragment.children[0].name, 'Wrong child name' );
\r
38 test_parser_1 : function()
\r
40 testParser( '<table><tr><td>1</td><p><b>2</b> Test</p><td>3</td></tr></table>',
\r
41 '<p><b>2</b> Test</p><table><tr><td>1</td><td>3</td></tr></table>' );
\r
44 test_parser_2 : function()
\r
46 testParser( '<b><table><tr><td>1</td><td>2</td></tr></table></b>',
\r
47 '<table><tr><td><b>1</b></td><td><b>2</b></td></tr></table>' );
\r
50 test_parser_3_1 : function()
\r
52 testParser( '<b><i>Table:<table><tr><td>1</td><td>2</td></tr></table></i></b>',
\r
53 '<p><b><i>Table:</i></b></p><table><tr><td><b><i>1</i></b></td><td><b><i>2</i></b></td></tr></table>' );
\r
56 test_parser_3_2 : function()
\r
58 testParser( '<b><i><table><tr><td>1</td><td>2</td></tr></table>Table</i></b>',
\r
59 '<table><tr><td><b><i>1</i></b></td><td><b><i>2</i></b></td></tr></table><p><b><i>Table</i></b></p>' );
\r
62 test_parser_4 : function()
\r
64 testParser( '<b><i>Test',
\r
65 '<p><b><i>Test</i></b></p>' );
\r
68 test_parser_5 : function()
\r
70 testParser( '<p>Para 1<p>Para 2<p>Para 3',
\r
71 '<p>Para 1</p><p>Para 2</p><p>Para 3</p>' );
\r
74 test_parser_6 : function()
\r
76 testParser( '<b>A</b><i>B</i>',
\r
77 '<p><b>A</b><i>B</i></p>' );
\r
80 test_parser_7 : function()
\r
82 testParser( '<p>Para 1<hr>Para 2<h1>Para 3',
\r
83 '<p>Para 1</p><hr /><p>Para 2</p><h1>Para 3</h1>' );
\r
87 * Test remove empty inline element.
\r
89 test_parser_8 : function()
\r
91 testParser( '<p><b></b>text</p>',
\r
96 * Test remove multiple empty inline elements.
\r
98 test_parser_8_2 : function()
\r
100 testParser( '<p><b><i></b></i>text</p>',
\r
105 * Test fixing malformed inline element closing.
\r
107 test_parser_9 : function()
\r
109 testParser( '<p><b>bold<i>ita</b>lic</i></p>',
\r
110 '<p><b>bold<i>ita</i></b><i>lic</i></p>' );
\r
113 test_ticket_10 : function()
\r
115 testParser( '<table><tbody><tr><td>A<b></b></td></tr></tbody></table>',
\r
116 '<table><tbody><tr><td>A</td></tr></tbody></table>' );
\r
120 * Test fixing paragraph inside table row.
\r
122 test_ticket_3195 : function()
\r
124 testParser( '<table><tr><td>1</td><p>2</p><td>3</td></tr></table>',
\r
125 '<p>2</p><table><tr><td>1</td><td>3</td></tr></table>' );
\r
129 * Test fixing paragraph inside list.
\r
131 test_ticket_3195_2 : function()
\r
133 testParser( '<ul><li>1</li><p>2</p><li>3</li></ul>',
\r
134 '<p>2</p><ul><li>1</li><li>3</li></ul>' );
\r
138 * Test fixing 'div' inside paragraph.
\r
140 test_ticket_3195_3 : function()
\r
142 testParser( '<p>1<div>2</div><span>3</span></p>',
\r
143 '<p>1</p><div>2</div><p><span>3</span></p>' );
\r
146 test_ticket_3441 : function()
\r
148 testParser( '<p><b>Test</b></p><script type="test">var a = "<A Href=xxx>Testing</ A>";\nGo();<\/script>',
\r
149 '<p><b>Test</b></p><script type="test">var a = "<A Href=xxx>Testing</ A>";\nGo();<\/script>' );
\r
152 test_ticket_3585 : function()
\r
154 testParser( '<p><br />\t\r\n</p>',
\r
158 test_ticket_3585_1 : function()
\r
160 testParser( '<p><br />text\t\r\n</p>',
\r
161 '<p><br />text</p>' );
\r
164 test_ticket_3585_2 : function()
\r
166 testParser( '<b>inline </b>\n<p>paragraph\t\r\n</p>\t\r\n',
\r
167 '<p><b>inline </b></p><p>paragraph</p>' );
\r
170 test_ticket_3744 : function()
\r
172 testParser( '<div><b><font><span>A</font></span></b></div><div>X</div>',
\r
173 '<div><b><font><span>A</span></font></b></div><div>X</div>' );
\r
176 name : document.title
\r
180 // Uncomment the following to run a single test.
\r
181 // window.onload = tc.test_ticket_3585_2;
\r