products/Sources/formale Sprachen/C/Firefox/editor/composer/test/test_bug384147.html
<!DOCTYPE HTML >
<html >
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=384147
-->
<head >
<title >Test for Bug 384147</title >
<script src="/tests/SimpleTest/SimpleTest.js" ></script >
<script src="/tests/SimpleTest/EventUtils.js" ></script >
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head >
<body >
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=384147 " >Mozilla Bug 384147</a>
<p id="display" ></p>
<div id="content" style ="display: block" >
<div contentEditable id="editor" ></div >
</div >
<pre id="test" >
<script class="testbody" type="text/javascript" >
/** Test for Bug 384147 **/
SimpleTest.waitForExplicitFinish();
var editor = document.getElementById("editor" );
editor.innerHTML = "Item 1 Item 2 Item 3 " ;
editor.focus();
// If executed directly, a race condition exists that will cause execCommand
// to fail occasionally (but often). Defer test execution to page load.
addLoadEvent(function() {
var sel = window.getSelection();
// Test the effect that the tab key has on list items. Each test is
// documented with the initial state of the list on the left, and the
// expected state of the list on the right. {\t} indicates the list item
// that will be indented. {\st} indicates that a shift-tab will be simulated
// on that list item, outdenting it.
//
// Note: any test failing will likely result in all following tests failing
// as well, since each test depends on the document being in a given state.
// Unfortunately, due to the problems getting document focus and key events
// to fire consistently, it's difficult to reset state between tests.
// If there are test failures here, only debug the first test failure.
// *** test 1 ***
// 1. Item 1 1. Item 1
// 2. {\t}Item 2 1. Item 2
// 1. Item 3 2. Item 3
// * Item 4 * Item 4
// * Item 5 * Item 5
sel.removeAllRanges();
sel.selectAllChildren(editor.getElementsByTagName("li" )[1]);
document.execCommand("indent" , false, null);
ok(editor.innerHTML == "Item 1 Item 2 Item 3 " ,
"html output doesn't match expected value in test 1" );
// *** test 2 ***
// 1. Item 1 1. Item 1
// 1. Item 2 1. Item 2
// 2. {\t}Item 3 1. Item 3
// * Item 4 * Item 4
// * Item 5 * Item 5
sel.removeAllRanges();
sel.selectAllChildren(editor.getElementsByTagName("li" )[2]);
document.execCommand("indent" , false, null);
ok(editor.innerHTML == "Item 1 Item 2 Item 3 " ,
"html output doesn't match expected value in test 2" );
// *** test 3 ***
// 1. Item 1 1. Item 1
// 1. Item 2 1. Item 2
// 1. {\st}Item 3 2. Item 3
// * Item 4 * Item 4
// * Item 5 * Item 5
document.execCommand("outdent" , false, null);
ok(editor.innerHTML == "Item 1 Item 2 Item 3 " ,
"html output doesn't match expected value in test 3" );
// *** test 4 ***
// 1. Item 1 1. Item 1
// 1. Item 2 1. Item 2
// 2. {\st}Item 3 2. Item 3
// * Item 4 * Item 4
// * Item 5 * Item 5
document.execCommand("outdent" , false, null);
ok(editor.innerHTML == "Item 1 Item 2 Item 3 " ,
"html output doesn't match expected value in test 4" );
// *** test 5 ***
// 1. Item 1 1. Item 1
// 1. {\st}Item 2 2. Item 2
// 2. Item 3 3. Item 3
// * Item 4 * Item 4
// * Item 5 * Item 5
sel.removeAllRanges();
sel.selectAllChildren(editor.getElementsByTagName("li" )[1]);
document.execCommand("outdent" , false, null);
ok(editor.innerHTML == "Item 1 Item 2 Item 3 " ,
"html output doesn't match expected value in test 5" );
// *** test 6 ***
// 1. Item 1 1. Item 1
// 2. {\t}Item 2 1. Item 2
// 3. Item 3 2. Item 3
// * Item 4 * Item 4
// * Item 5 * Item 5
document.execCommand("indent" , false, null);
ok(editor.innerHTML == "Item 1 Item 2 Item 3 " ,
"html output doesn't match expected value in test 6" );
// *** test 7 ***
// 1. Item 1 1. Item 1
// 1. Item 2 1. Item 2
// 2. {\t}Item 3 2. Item 3
// * Item 4 * Item 4
// * Item 5 * Item 5
sel.removeAllRanges();
sel.selectAllChildren(editor.getElementsByTagName("li" )[2]);
document.execCommand("indent" , false, null);
ok(editor.innerHTML == "Item 1 Item 2 Item 3 " ,
"html output doesn't match expected value in test 7" );
// That covers the basics of merging lists on indent and outdent.
// We also want to check that ul / ol lists won't be merged together,
// since they're different types of lists.
// *** test 8 ***
// 1. Item 1 1. Item 1
// 1. Item 2 1. Item 2
// 2. Item 3 2. Item 3
// * {\t}Item 4 * Item 4
// * Item 5 * Item 5
sel.removeAllRanges();
sel.selectAllChildren(editor.getElementsByTagName("li" )[3]);
document.execCommand("indent" , false, null);
ok(editor.innerHTML == "Item 1 Item 2 Item 3 " ,
"html output doesn't match expected value in test 8" );
// Better test merging with <ul > rather than <ol > too.
// *** test 9 ***
// 1. Item 1 1. Item 1
// 1. Item 2 1. Item 2
// 2. Item 3 2. Item 3
// * Item 4 * Item 4
// * {\t}Item 5 * Item 5
sel.removeAllRanges();
sel.selectAllChildren(editor.getElementsByTagName("li" )[4]);
document.execCommand("indent" , false, null);
ok(editor.innerHTML == "Item 1 Item 2 Item 3 " ,
"html output doesn't match expected value in test 9" );
// Same test as test 8, but with outdent rather than indent.
// *** test 10 ***
// 1. Item 1 1. Item 1
// 1. Item 2 1. Item 2
// 2. Item 3 2. Item 3
// * {\st}Item 4 * Item 4
// * Item 5 * Item 5
sel.removeAllRanges();
sel.selectAllChildren(editor.getElementsByTagName("li" )[3]);
document.execCommand("outdent" , false, null);
ok(editor.innerHTML == "Item 1 Item 2 Item 3 " ,
"html output doesn't match expected value in test 10" );
// Test indenting multiple items at once. Hold down "shift" and select
// upwards to get all the <ol > items and the first <ul > item.
// *** test 11 ***
// 1. Item 1 1. Item 1
// 1. {\t}Item 2 1. Item 2
// 2. {\t}Item 3 2. Item 3
// * {\t}Item 4 * Item 4
// * Item 5 * Item 5
sel.removeAllRanges();
var range = document.createRange();
range.setStart(editor.getElementsByTagName("li" )[1], 0);
range.setEnd(editor.getElementsByTagName("li" )[3], editor.getElementsByTagName("li" )[3].childNodes.length);
sel.addRange(range);
document.execCommand("indent" , false, null);
ok(editor.innerHTML == "Item 1 Item 2 Item 3 " ,
"html output doesn't match expected value in test 11" );
// Test outdenting multiple items at once. Selection is already ready...
// *** test 12 ***
// 1. Item 1 1. Item 1
// 1. {\st}Item 2 1. Item 2
// 2. {\st}Item 3 2. Item 3
// * {\st}Item 4 * Item 4
// * Item 5 * Item 5
document.execCommand("outdent" , false, null);
ok(editor.innerHTML == "Item 1 Item 2 Item 3 " ,
"html output doesn't match expected value in test 12" );
SimpleTest.finish();
});
</script >
</pre >
</body >
</html >
quality 100%
¤ Dauer der Verarbeitung: 0.5 Sekunden
¤
*© Formatika GbR, Deutschland