<!DOCTYPE html>
<html>
<style>
* { font-size: 16px; }
div { font-size: 8px; }
</style>
<body>
<script src="../../resources/js-test-pre.js"></script>
<script>
description('Test that clip-path shapes accept different length units');

function computedStyle(property, value) {
    var div = document.createElement("div");
    document.body.appendChild(div);
    div.style.setProperty(property, value);
    var computedValue = getComputedStyle(div).getPropertyValue(property);
    document.body.removeChild(div);
    return computedValue;
}

function innerStyle(property, value) {
    var div = document.createElement("div");
    div.style.setProperty(property, value);
    return div.style.getPropertyValue(property);
}

function testComputed(property, value, expected) {
    shouldBeEqualToString('computedStyle("' + property + '", "' + value + '")', expected);
}

function testInner(property, value, expected) {
    if (expected === null)
        expected = "";
    shouldBeEqualToString('innerStyle("' + property + '", "' + value + '")', expected);
}

function negativeTest(property, value) {
    testInner(property, value, null);
    testComputed(property, value, 'none');
}

// absolute lengths - number serialization, units
testInner("-webkit-clip-path", "circle(0 at 0 0)", "circle(0px at 0% 0%)");
testInner("-webkit-clip-path", "circle(1px at -1px +1px)", "circle(1px at -1px 1px)");
testInner("-webkit-clip-path", "circle(1.5px at -1.5px +1.5px)", "circle(1.5px at -1.5px 1.5px)");
testInner("-webkit-clip-path", "circle(.5px at -.5px +.5px)", "circle(0.5px at -0.5px 0.5px)");

// font-relative lengths - number serialization, units, resolution
testInner("-webkit-clip-path", "circle(1em at -1em +1em)", "circle(1em at -1em 1em)");
testInner("-webkit-clip-path", "circle(1.5em at -1.5em +1.5em)", "circle(1.5em at -1.5em 1.5em)");
testInner("-webkit-clip-path", "circle(.5em at -.5em +.5em)", "circle(0.5em at -0.5em 0.5em)");

testInner("-webkit-clip-path", "circle(1ex at 1ex 1ex)", "circle(1ex at 1ex 1ex)");
// FIXME: Add ch test when it is supported
testInner("-webkit-clip-path", "circle(1rem at 1rem 1rem)", "circle(1rem at 1rem 1rem)");

testComputed("-webkit-clip-path", "circle(1.5em at .5em 1em)", "circle(12px at 4px 8px)");
testComputed("-webkit-clip-path", "circle(1.5rem at .5rem 1rem)", "circle(24px at 8px 16px)");

// viewport-percentage lengths - units, resolution
testInner("-webkit-clip-path", "circle(1vw at 1vw 1vw)", "circle(1vw at 1vw 1vw)");
testInner("-webkit-clip-path", "circle(1vh at 1vh 1vh)", "circle(1vh at 1vh 1vh)");
testInner("-webkit-clip-path", "circle(1vmin at 1vmin 1vmin)", "circle(1vmin at 1vmin 1vmin)");

testComputed("-webkit-clip-path", "circle(1.5vw at .5vw 1vw)", "circle(12px at 4px 8px)");
testComputed("-webkit-clip-path", "circle(1.5vh at .5vh 1vh)", "circle(9px at 3px 6px)");
testComputed("-webkit-clip-path", "circle(1.5vmin at .5vmin 1vmin)", "circle(9px at 3px 6px)");

// percentage lengths - units
testComputed("-webkit-clip-path", "circle(150% at 50% 100%)", "circle(150% at 50% 100%)");
testComputed("-webkit-clip-path", "inset(45% 45% 90% 60% round 25% 10%)", "inset(45% 45% 90% 60% round 25% 10%)");
testComputed("-webkit-clip-path", "ellipse(100% 100% at 100% 100%)", "ellipse(100% 100% at 100% 100%)");
testComputed("-webkit-clip-path", "polygon(10% 20%, 30% 40%, 40% 50%)", "polygon(10% 20%, 30% 40%, 40% 50%)");

// boxes
testInner("-webkit-clip-path", "content-box", "content-box");
testInner("-webkit-clip-path", "padding-box", "padding-box");
testInner("-webkit-clip-path", "border-box", "border-box");
testInner("-webkit-clip-path", "margin-box", "margin-box");
testInner("-webkit-clip-path", "fill", "fill");
testInner("-webkit-clip-path", "stroke", "stroke");
testInner("-webkit-clip-path", "view-box", "view-box");
testInner("-webkit-clip-path", "circle(50% at 50% 50%) content-box", "circle(50% at 50% 50%) content-box");
testInner("-webkit-clip-path", "circle(50% at 50% 50%) padding-box", "circle(50% at 50% 50%) padding-box");
testInner("-webkit-clip-path", "margin-box circle(50% at 50% 50%)", "margin-box circle(50% at 50% 50%)");
testInner("-webkit-clip-path", "border-box circle(50% at 50% 50%)", "border-box circle(50% at 50% 50%)");
testInner("-webkit-clip-path", "circle(50% at 50% 50%) view-box", "circle(50% at 50% 50%) view-box");

testComputed("-webkit-clip-path", "content-box", "content-box");
testComputed("-webkit-clip-path", "padding-box", "padding-box");
testComputed("-webkit-clip-path", "border-box", "border-box");
testComputed("-webkit-clip-path", "margin-box", "margin-box");
testComputed("-webkit-clip-path", "fill", "fill");
testComputed("-webkit-clip-path", "stroke", "stroke");
testComputed("-webkit-clip-path", "view-box", "view-box");
testComputed("-webkit-clip-path", "circle(50% at 50% 50%) content-box", "circle(50% at 50% 50%) content-box");
testComputed("-webkit-clip-path", "circle(50% at 50% 50%) padding-box", "circle(50% at 50% 50%) padding-box");
testComputed("-webkit-clip-path", "margin-box circle(50% at 50% 50%)", "circle(50% at 50% 50%) margin-box");
testComputed("-webkit-clip-path", "border-box circle(50% at 50% 50%)", "circle(50% at 50% 50%) border-box");
testComputed("-webkit-clip-path", "circle(50% at 50% 50%) fill", "circle(50% at 50% 50%) fill");

// reject non-lengths
negativeTest("-webkit-clip-path", "circle(1 at 1px 1px)");
negativeTest("-webkit-clip-path", "circle(px at 1px 1px)");
negativeTest("-webkit-clip-path", "circle(1p at 1px 1px)");
negativeTest("-webkit-clip-path", "circle(calc() at 1px 1px)");

// reject negative radiuses
negativeTest("-webkit-clip-path", "circle(-1.5px at -1.5px +1.5px)");
negativeTest("-webkit-clip-path", "inset(1cm 1mm 1in 1px round -1pt, 1pc)");
negativeTest("-webkit-clip-path", "inset(1cm 1mm 1in 1px round 1pt -1pc)");
negativeTest("-webkit-clip-path", "ellipse(-1em 1em at 1em 1em)");
negativeTest("-webkit-clip-path", "ellipse(1em -1em at 1em 1em)");

// reject multiple <box> values
negativeTest("-webkit-clip-path", "fill circle(50% at 50% 50%) content-box");
negativeTest("-webkit-clip-path", "margin-box padding-box");
negativeTest("-webkit-clip-path", "padding-box border-box circle(50% at 50% 50%)");
negativeTest("-webkit-clip-path", "circle(50% at 50% 50%) content-box stroke");
negativeTest("-webkit-clip-path", "content-box margin-box padding-box");
negativeTest("-webkit-clip-path", "none content-box");
negativeTest("-webkit-clip-path", "url(#test) padding-box");

// general negative tests
negativeTest("-webkit-clip-path", "polygon(0, 0)");
negativeTest("-webkit-clip-path", "polygon(0 0, 0)");
negativeTest("-webkit-clip-path", "polygon(0)");
negativeTest("-webkit-clip-path", "polygon()");
negativeTest("-webkit-clip-path", "polygon(evenodd)");
negativeTest("-webkit-clip-path", "polygon(nonzero)");

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