<!DOCTYPE html>
<html>
<body>
<script src="../../resources/js-test-pre.js"></script>
<script>

description('Test that parsing of css shapes related properties is enabled by default.');

function testInlineStyle(property, value) {
    var div = document.createElement("div");
    div.setAttribute("style", property + ": " + value);
    return div.style.getPropertyValue(property);
}

function testComputedStyle(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 testStyle(property, value, expected) {
    shouldBeEqualToString('testInlineStyle("' + property + '", "' + value + '")', expected);
    shouldBeEqualToString('testComputedStyle("' + property + '", "' + value + '")', expected);
}

testStyle("-webkit-shape-margin", "10px", "10px");
testStyle("-webkit-shape-outside", "circle(10px at 10px 10px)", "circle(10px at 10px 10px)");

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