123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- <!DOCTYPE HTML>
- <html>
- <!--
- https://bugzilla.mozilla.org/show_bug.cgi?id=395107
- -->
- <head>
- <title>Test for Bug 395107</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.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=395107">Mozilla Bug 395107</a>
- <p id="display"></p>
- <div id="content" style="display: none">
-
- </div>
- <pre id="test">
- <script class="testbody" type="text/javascript">
- /** Test for Bug 395107 **/
- var testNumber = 0;
- function assertSelected(aOption, aExpectDefaultSelected, aExpectSelected) {
- ++testNumber;
- is(aOption.defaultSelected, aExpectDefaultSelected,
- "Asserting default-selected state for option " + testNumber);
- is(aOption.selected, aExpectSelected,
- "Asserting selected state for option " + testNumber);
- }
- function assertSame(aSel1, aSel2Str, aTestNumber) {
- var div = document.createElement("div");
- div.innerHTML = aSel2Str;
- sel2 = div.firstChild;
- is(aSel1.options.length, sel2.options.length,
- "Length should be same in select test " + aTestNumber);
- is(aSel1.selectedIndex, sel2.selectedIndex,
- "Selected index should be same in select test " + aTestNumber);
- for (var i = 0; i < aSel1.options.length; ++i) {
- is(aSel1.options[i].selected, sel2.options[i].selected,
- "Options[" + i + "].selected should be the same in select test " +
- aTestNumber);
- is(aSel1.options[i].defaultSelected, sel2.options[i].defaultSelected,
- "Options[" + i +
- "].defaultSelected should be the same in select test " +
- aTestNumber);
- }
- }
- // In a single-select, setting an option selected should deselect an
- // existing selected option.
- var sel = document.createElement("select");
- sel.appendChild(new Option());
- is(sel.selectedIndex, 0, "First option should be selected");
- assertSelected(sel.firstChild, false, true);
- sel.appendChild(new Option());
- is(sel.selectedIndex, 0, "First option should still be selected");
- assertSelected(sel.firstChild, false, true);
- assertSelected(sel.firstChild.nextSibling, false, false);
- opt = new Option();
- sel.appendChild(opt);
- opt.defaultSelected = true;
- assertSelected(sel.firstChild, false, false);
- assertSelected(sel.firstChild.nextSibling, false, false);
- assertSelected(opt, true, true);
- is(opt, sel.firstChild.nextSibling.nextSibling, "What happened here?");
- is(sel.options[0], sel.firstChild, "Unexpected option 0");
- is(sel.options[1], sel.firstChild.nextSibling, "Unexpected option 1");
- is(sel.options[2], opt, "Unexpected option 2");
- is(sel.selectedIndex, 2, "Unexpected selectedIndex in select test 1");
- assertSame(sel, "<select><option><option><option selected></select>", 1);
- // Same, but with the option that gets set selected earlier in the select
- sel = document.createElement("select");
- sel.appendChild(new Option());
- sel.appendChild(new Option());
- opt = new Option();
- opt.defaultSelected = true;
- sel.appendChild(opt);
- opt = new Option();
- sel.options[0] = opt;
- opt.defaultSelected = true;
- assertSelected(sel.options[0], true, true);
- assertSelected(sel.options[1], false, false);
- assertSelected(sel.options[2], true, false);
- is(sel.selectedIndex, 0, "Unexpected selectedIndex in select test 2");
- // And now try unselecting options
- sel = document.createElement("select");
- sel.appendChild(new Option());
- opt = new Option();
- opt.defaultSelected = true;
- sel.appendChild(opt);
- sel.appendChild(new Option());
- opt.defaultSelected = false;
- assertSelected(sel.options[0], false, true);
- assertSelected(sel.options[1], false, false);
- assertSelected(sel.options[2], false, false);
- is(sel.selectedIndex, 0, "Unexpected selectedIndex in select test 2");
- </script>
- </pre>
- </body>
- </html>
|