<p>
<select id="menulist">
    <option>Apple</option>
    <option>Banana</option>
    <option>Carrot</option>
    <option>Cauliflower</option>
    <option>Corn</option>
    <option>Star fish</option>
    <option>Star fruit</option>
</select>
</p>
<div id="result">Cannot run interactively.</div>

<script>
var result = document.getElementById('result');
var menulist = document.getElementById('menulist');

function testTypeAheadFind(keys, expectedMenuListText)
{
    if (!window.eventSender)
        return;

    // Reset menu list to initial state.
    menulist.selectedIndex = 0;
    menulist.blur();

    eventSender.mouseMoveTo(menulist.offsetLeft + (menulist.offsetWidth / 2), menulist.offsetTop + (menulist.offsetHeight / 2));
    eventSender.mouseDown();
    eventSender.mouseUp();

    for (var i = 0; i < keys.length; i++)
        eventSender.keyDown(keys[i]);
    eventSender.keyDown('\n');

    result.innerHTML += "<br/>" + "Expected " + expectedMenuListText + ": ";
    result.innerHTML += "was " + menulist.value;
}

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

testTypeAheadFind(['a'], "Apple");
testTypeAheadFind(['c'], "Carrot");

// This tests that iterating via pressing the same key works.
testTypeAheadFind(['c', 'c'], "Cauliflower");
testTypeAheadFind(['c', 'c', 'c'], "Corn");

// This tests that this also wraps around properly.
testTypeAheadFind(['c', 'c', 'c', 'c'], "Carrot");

// This tests that typing larger segments of words works.
testTypeAheadFind(['a', 'p', 'p'], "Apple");
testTypeAheadFind(['c', 'a', 'u'], "Cauliflower");

// This tests that a sequence with a space works.
testTypeAheadFind(['S', 't', 'a', 'r', ' ', 'f', 'r'], "Star fruit");

</script>
