JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
9556774991324a220654226b664ba06ffffcf879
[ckeditor.git] / _source / tests / core / htmlparser / fragment.html
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
3 <head>\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
9         //<![CDATA[\r
10 \r
11 var tc;\r
12 \r
13 CKEDITOR.test.addTestCase( tc = (function()\r
14 {\r
15         // Local reference to the "assert" object.\r
16         var assert = CKEDITOR.test.assert;\r
17 \r
18         function testParser( input, expected )\r
19         {\r
20                 var fragment = CKEDITOR.htmlParser.fragment.fromHtml( input, 'p' ),\r
21                         writer = new CKEDITOR.htmlParser.basicWriter();\r
22 \r
23                 fragment.writeHtml( writer );\r
24 \r
25                 assert.areSame( expected, writer.getHtml( true ) );\r
26         }\r
27 \r
28         return {\r
29                 test_fromHtml_1 : function()\r
30                 {\r
31                         var fragment = CKEDITOR.htmlParser.fragment.fromHtml( '<p>Test</p>' );\r
32 \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
36                 },\r
37 \r
38                 test_parser_1 : function()\r
39                 {\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
42                 },\r
43 \r
44                 test_parser_2 : function()\r
45                 {\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
48                 },\r
49 \r
50                 test_parser_3_1 : function()\r
51                 {\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
54                 },\r
55 \r
56                 test_parser_3_2 : function()\r
57                 {\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
60                 },\r
61 \r
62                 test_parser_4 : function()\r
63                 {\r
64                         testParser(     '<b><i>Test',\r
65                                                 '<p><b><i>Test</i></b></p>' );\r
66                 },\r
67 \r
68                 test_parser_5 : function()\r
69                 {\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
72                 },\r
73 \r
74                 test_parser_6 : function()\r
75                 {\r
76                         testParser(     '<b>A</b><i>B</i>',\r
77                                                 '<p><b>A</b><i>B</i></p>' );\r
78                 },\r
79 \r
80                 test_parser_7 : function()\r
81                 {\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
84                 },\r
85 \r
86                 /**\r
87                  * Test remove empty inline element.\r
88                  */\r
89                 test_parser_8 : function()\r
90                 {\r
91                         testParser(     '<p><b></b>text</p>',\r
92                                                 '<p>text</p>' );\r
93                 },\r
94 \r
95                 /**\r
96                  *  Test remove multiple empty inline elements.\r
97                  */\r
98                 test_parser_8_2 : function()\r
99                 {\r
100                         testParser(     '<p><b><i></b></i>text</p>',\r
101                                                 '<p>text</p>' );\r
102                 },\r
103 \r
104                 /**\r
105                  * Test fixing malformed inline element closing.\r
106                  */\r
107                 test_parser_9 : function()\r
108                 {\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
111                 },\r
112 \r
113                 test_ticket_10 : function()\r
114                 {\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
117                 },\r
118 \r
119                 /**\r
120                  *  Test fixing paragraph inside table row.\r
121                  */\r
122                 test_ticket_3195 : function()\r
123                 {\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
126                 },\r
127 \r
128                 /**\r
129                  *  Test fixing paragraph inside list.\r
130                  */\r
131                 test_ticket_3195_2 : function()\r
132                 {\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
135                 },\r
136 \r
137                 /**\r
138                  *  Test fixing 'div' inside paragraph.\r
139                  */\r
140                 test_ticket_3195_3 : function()\r
141                 {\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
144                 },\r
145 \r
146                 test_ticket_3441 : function()\r
147                 {\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
150                 },\r
151 \r
152                 test_ticket_3585 : function()\r
153                 {\r
154                         testParser(     '<p><br />\t\r\n</p>',\r
155                                                 '<p><br /></p>' );\r
156                 },\r
157 \r
158                 test_ticket_3585_1 : function()\r
159                 {\r
160                         testParser(     '<p><br />text\t\r\n</p>',\r
161                                                 '<p><br />text</p>' );\r
162                 },\r
163 \r
164                 test_ticket_3585_2 : function()\r
165                 {\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
168                 },\r
169 \r
170                 test_ticket_3744 : function()\r
171                 {\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
174                 },\r
175 \r
176                 name : document.title\r
177         };\r
178 })() );\r
179 \r
180 // Uncomment the following to run a single test.\r
181 // window.onload = tc.test_ticket_3585_2;\r
182 \r
183         //]]>\r
184         </script>\r
185 </head>\r
186 <body>\r
187 </body>\r
188 </html>\r