4e84caf749efdc0fca33c2e25a08426c5e47060a
[WebKit-https.git] / LayoutTests / editing / execCommand / script-tests / query-format-block.js
1 description("Tests queryCommandValue('formatBlock')")
2
3 var testContainer = document.createElement("div");
4 testContainer.contentEditable = true;
5 document.body.appendChild(testContainer);
6
7 function queryFormatBlock(selector, content, expected)
8 {
9     testContainer.innerHTML = content;
10     selector(testContainer);
11     var actual = document.queryCommandValue('formatBlock');
12     var action = "queryCommand('format') returned \"" + actual + '"';
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 }
24
25 function selectMiddleOfHelloWorld(container) {
26     window.getSelection().setPosition(container, 0);
27     window.getSelection().modify('move', 'forward', 'character');
28     window.getSelection().modify('move', 'forward', 'character');
29     window.getSelection().modify('extend', 'forward', 'word');
30     window.getSelection().modify('extend', 'forward', 'character');
31     window.getSelection().modify('extend', 'forward', 'character');
32     window.getSelection().modify('extend', 'forward', 'character');
33 }
34
35 debug('Basic cases');
36 queryFormatBlock(function () {}, 'hello', '');
37 queryFormatBlock(selectFirstPosition, 'hello', '');
38 queryFormatBlock(selectFirstPosition, '<address>hello</address>', 'address');
39 queryFormatBlock(selectFirstPosition, '<h1>hello</h1>', 'h1');
40 queryFormatBlock(selectFirstPosition, '<h2>hello</h2>', 'h2');
41 queryFormatBlock(selectFirstPosition, '<h3>hello</h3>', 'h3');
42 queryFormatBlock(selectFirstPosition, '<h4>hello</h4>', 'h4');
43 queryFormatBlock(selectFirstPosition, '<h5>hello</h5>', 'h5');
44 queryFormatBlock(selectFirstPosition, '<h6>hello</h6>', 'h6');
45 queryFormatBlock(selectFirstPosition, '<p>hello</p>', 'p');
46 queryFormatBlock(selectFirstPosition, '<pre>hello</pre>', 'pre');
47
48 debug('');
49 debug('Nested cases');
50 queryFormatBlock(selectFirstPosition, '<h1><h2>hello</h2></h1>', 'h2');
51 queryFormatBlock(selectFirstPosition, '<h1><address>hello</address></h1>', 'address');
52 queryFormatBlock(selectFirstPosition, '<pre>hello<p>world</p></pre>', 'pre');
53 queryFormatBlock(selectMiddleOfHelloWorld, '<pre>hello<p>world</p></pre>', 'pre');
54 queryFormatBlock(selectMiddleOfHelloWorld, '<address><h1>hello</h1>world</address>', 'address');
55 queryFormatBlock(selectMiddleOfHelloWorld, '<h1>hello</h1>world', '');
56
57 document.body.removeChild(testContainer);
58 var successfullyParsed = true;