<!DOCTYPE html>
<html>
<head>
<title>:checked pseudo selector not matching selected option</title>
</head>
<body>

<p>This is a :checked pseudo selector test.</p>
<div id="console"></div>

<form action=''>
<select id='sel' name='select' multiple>
    <option id="option1" selected>option1</option>
    <option id="option2">option2</option>
    <option id="option3" selected>option3</option>
    <option id="option4">option4</option>
</select>
<br>
<input id="radio1" type="radio" name="radiotest" value="radio1" /> Radio1
<br>
<input id="radio2" type="radio" name="radiotest" value="radio2" checked/> Radio2
<br>
<input id="checkbox1" type="checkbox" name="checktest" value="checkbox1" checked/> Checkbox1
<br>
<input id="checkbox2" type="checkbox" name="checktest" value="checkbox2" checked/> Checkbox2
</form>
<br>
<script language="JavaScript" type="text/javascript">
var totalChecked = 0;
var expectedCount = 0;
var idArray=new Array("option1","option2","option3","option4","radio1","radio2","checkbox1","checkbox2");

if (window.testRunner) {
    testRunner.dumpAsText();
}

function isCheckedOrSelected(id) {
    var obj = document.getElementById(id);
    if (obj.checked || obj.selected)
        return true;
}

function runTest() {
    for (var i = 0; i < idArray.length; i++) {
        if (isCheckedOrSelected(idArray[i]))
            expectedCount++;
    }
    totalChecked = document.querySelectorAll(':checked').length;
    logResult(totalChecked,expectedCount);
}

function logResult(totalChecked, expectedCount) {
     if (totalChecked != expectedCount)
        document.write('FAIL - expected: ' + expectedCount + ' and document.querySelectorAll got: ' + totalChecked);
    else
        document.write('PASS - expected: ' + expectedCount + ' and document.querySelectorAll got: ' + totalChecked);
    document.write('<br>');
    }

if (window.eventSender) {
    runTest();
 }
</script>
</body>
</html>
