2010-10-15 Ryosuke Niwa <rniwa@webkit.org>
[WebKit-https.git] / LayoutTests / editing / execCommand / script-tests / query-format-block.js
1 description("Tests queryCommandValue('formatBlock')")
2
3 var testContainer = document.createElement("span");
4 testContainer.contentEditable = true;
5 document.body.appendChild(testContainer);
6
7 function queryFormatBlock(selector, content, expected)
8 {
9     testContainer.innerHTML = content;
10     var selected = selector(testContainer);
11     var actual = document.queryCommandValue('formatBlock');
12     var action = "queryCommand('formatBlock') returned \"" + actual + '" selecting ' + selected + ' of "' + content + '"';
13     if (actual == expected)
14         testPassed(action);
15     else
16         testFailed(action + ' but expected "' + expected + '"');
17 }
18
19 function selectFirstPosition(container) {
20     while (container.firstChild)
21         container = container.firstChild;
22     window.getSelection().setPosition(container, 0);
23     return 'first position'
24 }
25
26 function selectMiddleOfHelloWorld(container) {
27     window.getSelection().setPosition(container, 0);
28     window.getSelection().modify('move', 'forward', 'character');
29     window.getSelection().modify('move', 'forward', 'character');
30     window.getSelection().modify('extend', 'forward', 'word');
31     window.getSelection().modify('extend', 'forward', 'character');
32     window.getSelection().modify('extend', 'forward', 'character');
33     window.getSelection().modify('extend', 'forward', 'character');
34     return '"llo wo"'
35 }
36
37 debug('Basic cases');
38 queryFormatBlock(function () {return 'none' }, 'hello', '');
39 queryFormatBlock(selectFirstPosition, 'hello', '');
40 queryFormatBlock(selectFirstPosition, '<a>hello</a>', '');
41 queryFormatBlock(selectFirstPosition, '<abbr>hello</abbr>', '');
42 queryFormatBlock(selectFirstPosition, '<acronym>hello</acronym>', '');
43 queryFormatBlock(selectFirstPosition, '<b>hello</b>', '');
44 queryFormatBlock(selectFirstPosition, '<bdo>hello</bdo>', '');
45 queryFormatBlock(selectFirstPosition, '<big>hello</big>', '');
46 queryFormatBlock(selectFirstPosition, '<button>hello</button>', '');
47 queryFormatBlock(selectFirstPosition, '<caption>hello</caption>', '');
48 queryFormatBlock(selectFirstPosition, '<center>hello</center>', '');
49 queryFormatBlock(selectFirstPosition, '<cite>hello</cite>', '');
50 queryFormatBlock(selectFirstPosition, '<code>hello</code>', '');
51 queryFormatBlock(selectFirstPosition, '<del>hello</del>', '');
52 queryFormatBlock(selectFirstPosition, '<dfn>hello</dfn>', '');
53 queryFormatBlock(selectFirstPosition, '<dir>hello</dir>', '');
54 queryFormatBlock(selectFirstPosition, '<em>hello</em>', '');
55 queryFormatBlock(selectFirstPosition, '<form><fieldset>hello</fieldset></form>', '');
56 queryFormatBlock(selectFirstPosition, '<font>hello</font>', '');
57 queryFormatBlock(selectFirstPosition, '<form>hello</form>', '');
58 queryFormatBlock(selectFirstPosition, '<i>hello</i>', '');
59 queryFormatBlock(selectFirstPosition, '<kbd>hello</kbd>', '');
60 queryFormatBlock(selectFirstPosition, '<label>hello</label>', '');
61 queryFormatBlock(selectFirstPosition, '<legend>hello</legend>', '');
62 queryFormatBlock(selectFirstPosition, '<ul><li>hello<li></ul>', '');
63 queryFormatBlock(selectFirstPosition, '<menu>hello</menu>', '');
64 queryFormatBlock(selectFirstPosition, '<ol>hello</ol>', '');
65 queryFormatBlock(selectFirstPosition, '<q>hello</q>', '');
66 queryFormatBlock(selectFirstPosition, '<s>hello</s>', '');
67 queryFormatBlock(selectFirstPosition, '<samp>hello</samp>', '');
68 queryFormatBlock(selectFirstPosition, '<small>hello</small>', '');
69 queryFormatBlock(selectFirstPosition, '<span>hello</span>', '');
70 queryFormatBlock(selectFirstPosition, '<strike>hello</strike>', '');
71 queryFormatBlock(selectFirstPosition, '<strong>hello</strong>', '');
72 queryFormatBlock(selectFirstPosition, '<sub>hello</sub>', '');
73 queryFormatBlock(selectFirstPosition, '<sup>hello</sup>', '');
74 queryFormatBlock(selectFirstPosition, '<table><td>hello</td></table>', '');
75 queryFormatBlock(selectFirstPosition, '<table><th>hello</th></table>', '');
76 queryFormatBlock(selectFirstPosition, '<tt>hello</tt>', '');
77 queryFormatBlock(selectFirstPosition, '<u>hello</u>', '');
78 queryFormatBlock(selectFirstPosition, '<ul>hello</ul>', '');
79 queryFormatBlock(selectFirstPosition, '<var>hello</var>', '');
80
81 queryFormatBlock(selectFirstPosition, '<address>hello</address>', 'address');
82 queryFormatBlock(selectFirstPosition, '<article>hello</article>', 'article');
83 queryFormatBlock(selectFirstPosition, '<aside>hello</aside>', 'aside');
84 queryFormatBlock(selectFirstPosition, '<blockquote>hello</blockquote>', 'blockquote');
85 queryFormatBlock(selectFirstPosition, '<dd>hello</dd>', 'dd');
86 queryFormatBlock(selectFirstPosition, '<dl><dd>hello</dd></dl>', 'dd');
87 queryFormatBlock(selectFirstPosition, '<div>hello</div>', 'div');
88 queryFormatBlock(selectFirstPosition, '<dl>hello</dl>', 'dl');
89 queryFormatBlock(selectFirstPosition, '<dt>hello</dt>', 'dt');
90 queryFormatBlock(selectFirstPosition, '<dl><dt>hello</dt></dl>', 'dt');
91 queryFormatBlock(selectFirstPosition, '<footer>hello</footer>', 'footer');
92 queryFormatBlock(selectFirstPosition, '<h1>hello</h1>', 'h1');
93 queryFormatBlock(selectFirstPosition, '<h2>hello</h2>', 'h2');
94 queryFormatBlock(selectFirstPosition, '<h3>hello</h3>', 'h3');
95 queryFormatBlock(selectFirstPosition, '<h4>hello</h4>', 'h4');
96 queryFormatBlock(selectFirstPosition, '<h5>hello</h5>', 'h5');
97 queryFormatBlock(selectFirstPosition, '<h6>hello</h6>', 'h6');
98 queryFormatBlock(selectFirstPosition, '<header>hello</header>', 'header');
99 queryFormatBlock(selectFirstPosition, '<hgroup>hello</hgroup>', 'hgroup');
100 queryFormatBlock(selectFirstPosition, '<nav>hello</nav>', 'nav');
101 queryFormatBlock(selectFirstPosition, '<p>hello</p>', 'p');
102 queryFormatBlock(selectFirstPosition, '<pre>hello</pre>', 'pre');
103 queryFormatBlock(selectFirstPosition, '<section>hello</section>', 'section');
104
105 debug('');
106 debug('Nested cases');
107 queryFormatBlock(selectFirstPosition, '<h1><h2>hello</h2></h1>', 'h2');
108 queryFormatBlock(selectFirstPosition, '<h1><address>hello</address></h1>', 'address');
109 queryFormatBlock(selectFirstPosition, '<pre>hello<p>world</p></pre>', 'pre');
110 queryFormatBlock(selectMiddleOfHelloWorld, '<pre>hello<p>world</p></pre>', 'pre');
111 queryFormatBlock(selectMiddleOfHelloWorld, '<address><h1>hello</h1>world</address>', 'address');
112 queryFormatBlock(selectMiddleOfHelloWorld, '<h1>hello</h1>world', '');
113
114 document.body.removeChild(testContainer);
115 var successfullyParsed = true;