https://github.com/web-platform-tests/wpt
Raw File
Tip revision: 4c48a3d9b20a424888005867e9cc4119de8cfa14 authored by Anne van Kesteren on 11 April 2018, 12:38:33 UTC
don't use about:blank as that errors as well
Tip revision: 4c48a3d
selected-index.html
<!doctype html>
<meta charset=utf-8>
<title>HTMLSelectElement selectedIndex</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id=log></div>

<form id=form>
  <select id=empty></select>

  <select id=default>
    <option></option>
    <option></option>
    <option></option>
    <option></option>
    <option></option>
  </select>

  <select id=disabled>
    <option disabled></option>
    <option></option>
  </select>

  <select id=selected>
    <option></option>
    <option selected></option>
  </select>

  <select id=display-none>
    <option style="display:none"></option>
    <option></option>
  </select>
</form>

<script>
function assertSelectedIndex(select, value) {
  assert_equals(select.selectedIndex, value);
  assert_equals(select.options.selectedIndex, value);
}

test(function () {
  var select = document.getElementById('empty');
  assertSelectedIndex(select, -1);
}, "get empty");

test(function () {
  var select = document.getElementById('default');
  assertSelectedIndex(select, 0);
}, "get default");

test(function () {
  var select = document.getElementById('disabled');
  assertSelectedIndex(select, 1);
}, "get disabled");

test(function () {
  var select = document.getElementById('selected');
  assertSelectedIndex(select, 1);
}, "get unselected");

test(function () {
  var select = document.getElementById('empty');
  select.selectedIndex = 1;
  assertSelectedIndex(select, -1);
}, "set empty (HTMLSelectElement)");

test(function () {
  var select = document.getElementById('empty');
  select.options.selectedIndex = 1;
  assertSelectedIndex(select, -1);
}, "set empty (HTMLOptionsCollection)");

test(function () {
  var select = document.getElementById('default');
  assertSelectedIndex(select, 0);
  select.selectedIndex = 2;
  assertSelectedIndex(select, 2);
  this.add_cleanup(() => { select.selectedIndex = 0; });
}, "set (HTMLSelectElement)");

test(function () {
  var select = document.getElementById('default');
  assertSelectedIndex(select, 0);
  select.options.selectedIndex = 2;
  assertSelectedIndex(select, 2);
  this.add_cleanup(() => { select.selectedIndex = 0; });
}, "set (HTMLOptionsCollection)");

test(function () {
  var select = document.getElementById('selected');
  var form = document.getElementById('form');
  assertSelectedIndex(select, 1);
  select.selectedIndex = 0;
  assertSelectedIndex(select, 0);
  form.reset();
  assertSelectedIndex(select, 1);
}, "set and reset (HTMLSelectElement)");

test(function () {
  var select = document.getElementById('selected');
  var form = document.getElementById('form');
  assertSelectedIndex(select, 1);
  select.options.selectedIndex = 0;
  assertSelectedIndex(select, 0);
  form.reset();
  assertSelectedIndex(select, 1);
}, "set and reset (HTMLOptionsCollection)");

test(function () {
  var select = document.getElementById('display-none');
  assertSelectedIndex(select, 0);
}, "get display:none");

test(function () {
  var select = document.getElementById('display-none');
  select.offsetTop; // force rendering
  assertSelectedIndex(select, 0);
  select.options[1].selected = true;
  assertSelectedIndex(select, 1);
  select.options[1].selected = false;
  assertSelectedIndex(select, 0);
}, "reset to display:none");
</script>
back to top