<!DOCTYPE html>
<html>
<body>
<script src="../../resources/js-test-pre.js"></script>
<script>
description("Tests support for calling removeEventListener() with an EventListenerOptions dictionary");

var wasListenerCalled = false;
function listenerFunction(ev)
{
    wasListenerCalled = true;
}

function isListenerRegistered()
{
    document.body.dispatchEvent(new Event('test'));
    var result = wasListenerCalled;
    wasListenerCalled = false;
    return result;
}

function testAddThenRemove(addOptions, removeOptions)
{
    document.body.addEventListener('test', listenerFunction, addOptions);
    if (!isListenerRegistered())
        testFailed("Failed to add event listener with given options");
    document.body.removeEventListener('test', listenerFunction, removeOptions);
    var result = !isListenerRegistered();

    // clean up.
    capture = false;
    if (typeof(addOptions) === "boolean")
        capture = addOptions;
    else if (typeof(addOptions) === "object")
        capture = addOptions.capture;
    document.body.removeEventListener('test', listenerFunction, capture);

    return result;
}

testAddThenRemove(undefined, undefined, true);

// capture is false by default.
shouldBeTrue("testAddThenRemove(undefined, false)");
shouldBeTrue("testAddThenRemove(undefined, { 'capture': false })");
shouldBeTrue("testAddThenRemove(undefined, { })");
shouldBeTrue("testAddThenRemove(undefined, undefined)");
shouldBeFalse("testAddThenRemove(undefined, true)");
shouldBeFalse("testAddThenRemove(undefined, { 'capture': true })");

debug("");
shouldBeTrue("testAddThenRemove(false, false)");
shouldBeTrue("testAddThenRemove(false, { 'capture': false })");
shouldBeTrue("testAddThenRemove(false, { })");
shouldBeTrue("testAddThenRemove(false, undefined)");
shouldBeFalse("testAddThenRemove(false, true)");
shouldBeFalse("testAddThenRemove(false, { 'capture': true })");

debug("");
shouldBeTrue("testAddThenRemove({ 'capture': false }, false)");
shouldBeTrue("testAddThenRemove({ 'capture': false }, { 'capture': false })");
shouldBeTrue("testAddThenRemove({ 'capture': false }, { })");
shouldBeTrue("testAddThenRemove({ 'capture': false }, undefined)");
shouldBeFalse("testAddThenRemove({ 'capture': false }, true)");
shouldBeFalse("testAddThenRemove({ 'capture': false }, { 'capture': true })");

debug("");
shouldBeTrue("testAddThenRemove({ }, false)");
shouldBeTrue("testAddThenRemove({ }, { 'capture': false })");
shouldBeTrue("testAddThenRemove({ }, { })");
shouldBeTrue("testAddThenRemove({ }, undefined)");
shouldBeFalse("testAddThenRemove({ }, true)");
shouldBeFalse("testAddThenRemove({ }, { 'capture': true })");

debug("");
shouldBeTrue("testAddThenRemove(true, true)");
shouldBeTrue("testAddThenRemove(true, { 'capture': true })");
shouldBeFalse("testAddThenRemove(true, { })");
shouldBeFalse("testAddThenRemove(true, undefined)");
shouldBeFalse("testAddThenRemove(true, false)");
shouldBeFalse("testAddThenRemove(true, { 'capture': false })");

debug("");
shouldBeTrue("testAddThenRemove({ 'capture': true } , true)");
shouldBeTrue("testAddThenRemove({ 'capture': true }, { 'capture': true })");
shouldBeFalse("testAddThenRemove({ 'capture': true }, { })");
shouldBeFalse("testAddThenRemove({ 'capture': true }, undefined)");
shouldBeFalse("testAddThenRemove({ 'capture': true }, false)");
shouldBeFalse("testAddThenRemove({ 'capture': true }, { 'capture': false })");
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
