<pre id="output"></pre>
<script>
function debug(msg)
{
    var output = document.getElementById("output");
    output.appendChild(document.createTextNode(msg + "\n"));
}

function testComputedStyle(property, fullRule)
{
    var div = document.createElement("div");
    document.body.appendChild(div);
    div.setAttribute("style", property + ": " + fullRule);
    var computedValue = div.style[property];
    document.body.removeChild(div);
    return computedValue;
}

function testImageSetRule(description, property, rule)
{
    debug("");
    debug(`${description} : ${rule}`);

    var rule = `image-set(${rule})`;
    if (property == 'cursor')
        rule += ', default';

    if (testComputedStyle(property, rule) == rule)
        debug("Unprefixed: PASS");
    else
        debug("Unprefixed: FAIL");

    if (testComputedStyle(property, "-webkit-" + rule) == rule)
        debug("Prefixed: PASS");
    else
        debug("Prefixed: FAIL");
}

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

testImageSetRule("Single value for background-image",
                "background-image",
                "url(\"http://www.webkit.org/a\") 1x");

testImageSetRule("Multiple values for background-image",
                "background-image",
                "url(\"http://www.webkit.org/a\") 1x, url(\"http://www.webkit.org/b\") 2x");

testImageSetRule("Multiple values for background-image, out of order",
                "background-image",
                "url(\"http://www.webkit.org/c\") 3x, url(\"http://www.webkit.org/b\") 2x, url(\"http://www.webkit.org/a\") 1x");

testImageSetRule("Duplicate values for background-image",
                "background-image",
                "url(\"http://www.webkit.org/c\") 1x, url(\"http://www.webkit.org/b\") 2x, url(\"http://www.webkit.org/a\") 1x");

testImageSetRule("Fractional values for background-image",
                "background-image",
                "url(\"http://www.webkit.org/c\") 0.2x, url(\"http://www.webkit.org/b\") 2.3x, url(\"http://www.webkit.org/a\") 12.3456x");

testImageSetRule("Single value for cursor",
                "cursor",
                "url(\"http://www.webkit.org/a\") 1x");

testImageSetRule("Multiple values for cursor",
                "cursor",
                "url(\"http://www.webkit.org/a\") 1x, url(\"http://www.webkit.org/b\") 2x");

testImageSetRule("Multiple values for cursor, out of order",
                "cursor",
                "url(\"http://www.webkit.org/c\") 3x, url(\"http://www.webkit.org/b\") 2x, url(\"http://www.webkit.org/a\") 1x");

testImageSetRule("Duplicate values for cursor",
                "cursor",
                "url(\"http://www.webkit.org/c\") 1x, url(\"http://www.webkit.org/b\") 2x, url(\"http://www.webkit.org/a\") 1x");

testImageSetRule("Fractional values for cursor",
                "cursor",
                "url(\"http://www.webkit.org/c\") 0.2x, url(\"http://www.webkit.org/b\") 2.3x, url(\"http://www.webkit.org/a\") 12.3456x");

testImageSetRule("Single value for list-style-image",
                "list-style-image",
                "url(\"http://www.webkit.org/a\") 1x");

testImageSetRule("Multiple values for list-style-image",
                "list-style-image",
                "url(\"http://www.webkit.org/a\") 1x, url(\"http://www.webkit.org/b\") 2x");

testImageSetRule("Multiple values for list-style-image, out of order",
                "list-style-image",
                "url(\"http://www.webkit.org/c\") 3x, url(\"http://www.webkit.org/b\") 2x, url(\"http://www.webkit.org/a\") 1x");

testImageSetRule("Duplicate values for list-style-image",
                "list-style-image",
                "url(\"http://www.webkit.org/c\") 1x, url(\"http://www.webkit.org/b\") 2x, url(\"http://www.webkit.org/a\") 1x");

testImageSetRule("Fractional values for list-style-image",
                "list-style-image",
                "url(\"http://www.webkit.org/c\") 0.2x, url(\"http://www.webkit.org/b\") 2.3x, url(\"http://www.webkit.org/a\") 12.3456x");

testImageSetRule("Single value for content",
                "content",
                "url(\"http://www.webkit.org/a\") 1x");

testImageSetRule("Multiple values for content",
                "content",
                "url(\"http://www.webkit.org/a\") 1x, url(\"http://www.webkit.org/b\") 2x");

testImageSetRule("Multiple values for content, out of order",
                "content",
                "url(\"http://www.webkit.org/c\") 3x, url(\"http://www.webkit.org/b\") 2x, url(\"http://www.webkit.org/a\") 1x");

testImageSetRule("Duplicate values for content",
                "content",
                "url(\"http://www.webkit.org/c\") 1x, url(\"http://www.webkit.org/b\") 2x, url(\"http://www.webkit.org/a\") 1x");

testImageSetRule("Fractional values for content",
                "content",
                "url(\"http://www.webkit.org/c\") 0.2x, url(\"http://www.webkit.org/b\") 2.3x, url(\"http://www.webkit.org/a\") 12.3456x");


</script>
