<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../../resources/js-test-pre.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script>
description('valueMissing tests for radio buttons');

var parent = document.createElement('div');
document.body.appendChild(parent);

debug('Without form element');
parent.innerHTML = '<input name=victim type=radio required>'
    + '<input name=victim type=radio>'
    + '<input name=victim type=radio>';
var inputs = document.getElementsByName('victim');
debug('No checked button:');
shouldBeTrue('inputs[0].validity.valueMissing');
shouldBeTrue('inputs[1].validity.valueMissing');
shouldBeTrue('inputs[2].validity.valueMissing');
debug('The second button has been checked:');
inputs[1].checked = true;
shouldBeFalse('inputs[0].validity.valueMissing');
shouldBeFalse('inputs[1].validity.valueMissing');
shouldBeFalse('inputs[2].validity.valueMissing');
debug('The first button has been checked:');
inputs[0].checked = true;
shouldBeFalse('inputs[0].validity.valueMissing');
shouldBeFalse('inputs[1].validity.valueMissing');
shouldBeFalse('inputs[2].validity.valueMissing');
debug('The third button has been checked:');
inputs[2].checked = true;
shouldBeFalse('inputs[0].validity.valueMissing');
shouldBeFalse('inputs[1].validity.valueMissing');
shouldBeFalse('inputs[2].validity.valueMissing');

debug('');
debug('With form element');
parent.innerHTML = '<form>'
    + '<input name=victim type=radio required>'
    + '<input name=victim type=radio>'
    + '<input name=victim type=radio>'
    + '</form>';
inputs = document.getElementsByName('victim');
debug('No checked button:');
shouldBeTrue('inputs[0].validity.valueMissing');
shouldBeTrue('inputs[1].validity.valueMissing');
shouldBeTrue('inputs[2].validity.valueMissing');
debug('The first button has been checked:');
inputs[0].checked = true;
shouldBeFalse('inputs[0].validity.valueMissing');
shouldBeFalse('inputs[1].validity.valueMissing');
shouldBeFalse('inputs[2].validity.valueMissing');
debug('The second button has been checked:');
inputs[1].checked = true;
shouldBeFalse('inputs[0].validity.valueMissing');
shouldBeFalse('inputs[1].validity.valueMissing');
shouldBeFalse('inputs[2].validity.valueMissing');
debug('The third button has been checked:');
inputs[2].checked = true;
shouldBeFalse('inputs[0].validity.valueMissing');
shouldBeFalse('inputs[1].validity.valueMissing');
shouldBeFalse('inputs[2].validity.valueMissing');

debug('');
debug('Not in a radio button group');
var requiredButton = document.createElement('input');
requiredButton.type = 'radio';
requiredButton.name = 'victim';
requiredButton.required = true;
shouldBeFalse('requiredButton.validity.valueMissing');

parent.innerHTML = '<input name=victim type=radio required><input name=victim type=radio>';
requiredButton = document.getElementsByName('victim')[0];
var button = document.getElementsByName('victim')[1];
shouldBeTrue('requiredButton.validity.valueMissing');
shouldBeTrue('button.validity.valueMissing');
parent.removeChild(button);
shouldBeFalse('button.validity.valueMissing');
parent.removeChild(requiredButton);
shouldBeFalse('requiredButton.validity.valueMissing');

</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>
