blob: 7f98eb6336e85715ba2c8b345fa0c6a63d8a2a10 [file] [log] [blame]
<html>
<head>
<script src="../../fast/js/resources/js-test-pre.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script>
description("This tests the parser and serializer for widget region values.");
var style = document.getElementById('description').style;
function parseWidgetRegion(string)
{
try {
style.removeProperty("-webkit-widget-region");
style.setProperty("-webkit-widget-region", string, "");
var result = style.getPropertyValue("-webkit-widget-region");
style.removeProperty("-webkit-widget-region");
return result;
} catch (e) {
return "" + e;
}
}
function testCanonicalWidgetRegion(string)
{
shouldBe("parseWidgetRegion('" + string + "')", "'" + string + "'");
}
testCanonicalWidgetRegion('none');
debug('');
testCanonicalWidgetRegion('region(label circle)');
testCanonicalWidgetRegion('region(label circle 1px 2px 3px 4px)');
testCanonicalWidgetRegion('region(label circle 0px 0px 0px 0px)');
testCanonicalWidgetRegion('region(label circle auto auto auto auto)');
testCanonicalWidgetRegion('region(label circle 1px 2px 3px 4px)');
debug('');
testCanonicalWidgetRegion('region(label rectangle)');
testCanonicalWidgetRegion('region(label rectangle 1px 2px 3px 4px)');
debug('');
testCanonicalWidgetRegion('region(label circle) region(label circle)');
testCanonicalWidgetRegion('region(label circle) region(label rectangle)');
testCanonicalWidgetRegion('region(label circle 1px 2px 3px 4px) region(label rectangle 5px 6px 7px 8px)');
testCanonicalWidgetRegion('region(label rectangle 1px 2px 3px 4px) region(label circle 5px 6px 7px 8px)');
debug('');
debug('Tests to demonstrate that commas are allowed.');
debug('');
shouldBe("parseWidgetRegion('region(label, circle)')", "'region(label circle)'");
shouldBe("parseWidgetRegion('region(label, circle, 1px, 2px, 3px, 4px)')", "'region(label circle 1px 2px 3px 4px)'");
debug('');
debug('Tests for variations in whitespace that are allowed.');
debug('');
shouldBe("parseWidgetRegion(' region( label circle ) ')", "'region(label circle)'");
shouldBe("parseWidgetRegion(' region( label circle 1px 2px 3px 4px ) region(label rectangle 5px 6px 7px 8px ) ')", "'region(label circle 1px 2px 3px 4px) region(label rectangle 5px 6px 7px 8px)'");
shouldBe("parseWidgetRegion('region(label circle 1px 2px 3px 4px)region(label rectangle 5px 6px 7px 8px)')", "'region(label circle 1px 2px 3px 4px) region(label rectangle 5px 6px 7px 8px)'");
debug('');
debug('Tests for case insensitivity.');
debug('');
shouldBe("parseWidgetRegion('region(label Circle)')", "'region(label circle)'");
shouldBe("parseWidgetRegion('region(LABEL CIRCLE)')", "'region(LABEL circle)'");
shouldBe("parseWidgetRegion('region(LaBeL CiRcLe)')", "'region(LaBeL circle)'");
shouldBe("parseWidgetRegion('region(lAbEl cIrClE)')", "'region(lAbEl circle)'");
shouldBe("parseWidgetRegion('region(label Rectangle)')", "'region(label rectangle)'");
shouldBe("parseWidgetRegion('region(LABEL RECTANGLE)')", "'region(LABEL rectangle)'");
shouldBe("parseWidgetRegion('region(LaBeL ReCtAnGlE)')", "'region(LaBeL rectangle)'");
shouldBe("parseWidgetRegion('region(lAbEl rEcTaNgLe)')", "'region(lAbEl rectangle)'");
debug('');
debug('Some expected failures.');
debug('');
shouldBe("parseWidgetRegion('')", "null");
shouldBe("parseWidgetRegion(' ')", "null");
shouldBe("parseWidgetRegion('x')", "null");
shouldBe("parseWidgetRegion('dashboard-')", "null");
shouldBe("parseWidgetRegion('region')", "null");
shouldBe("parseWidgetRegion('region(')", "null");
shouldBe("parseWidgetRegion('region(label')", "null");
shouldBe("parseWidgetRegion('region(label ')", "null");
shouldBe("parseWidgetRegion('region(label c')", "null");
shouldBe("parseWidgetRegion('region(label circle')", "null");
shouldBe("parseWidgetRegion('region(label)')", "null");
shouldBe("parseWidgetRegion('region (label circle)')", "null");
shouldBe("parseWidgetRegion('region(label,, circle)')", "null");
shouldBe("parseWidgetRegion('region(label circle 1px2px 3px 4px)')", "null");
shouldBe("parseWidgetRegion('region(label,, circle, 1px, 2px, 3px, 4px)')", "null");
shouldBe("parseWidgetRegion('region(label, circle 1px 2px 3px 4px)')", "null");
shouldBe("parseWidgetRegion('region(label, circle, 1px 2px 3px 4px)')", "null");
shouldBe("parseWidgetRegion('region(label, circle, 1px, 2px 3px 4px)')", "null");
shouldBe("parseWidgetRegion('region(label, circle, 1px, 2px, 3px 4px)')", "null");
shouldBe("parseWidgetRegion('region(label circle, 1px, 2px, 3px, 4px)')", "null");
shouldBe("parseWidgetRegion('region(label circle 1px, 2px, 3px, 4px)')", "null");
shouldBe("parseWidgetRegion('region(label circle x)')", "null");
shouldBe("parseWidgetRegion('region(label circle x x)')", "null");
shouldBe("parseWidgetRegion('region(label circle x x x)')", "null");
shouldBe("parseWidgetRegion('region(label circle x x x x)')", "null");
shouldBe("parseWidgetRegion('region(label circle x x x x x)')", "null");
shouldBe("parseWidgetRegion('region(label circle 1px 2px 3px 4px x)')", "null");
shouldBe("parseWidgetRegion('region(label circle 1px 2px 3px 4px x x)')", "null");
shouldBe("parseWidgetRegion('region(label circle 1px 2px 3px 4px x x x)')", "null");
shouldBe("parseWidgetRegion('region(label circle 1px 2px 3px 4px x x x x)')", "null");
shouldBe("parseWidgetRegion('region(label circle 1px 2px 3px 4px x x x x x)')", "null");
shouldBe("parseWidgetRegion('region(label circle 1px 2px 3px 4px circle 5px 6px 7px 8px)')", "null");
shouldBe("parseWidgetRegion('region(label, circle, 1px, 2px, 3px, 4px, circle, 5px, 6px, 7px, 8px)')", "null");
shouldBe("parseWidgetRegion('none x')", "null");
shouldBe("parseWidgetRegion('none x x')", "null");
shouldBe("parseWidgetRegion('none x x x')", "null");
shouldBe("parseWidgetRegion('none x x x x')", "null");
shouldBe("parseWidgetRegion('none region(label, circle)')", "null");
shouldBe("parseWidgetRegion('region(label, circle) none')", "null");
shouldBe("parseWidgetRegion('attr(a)')", "null");
debug('');
</script>
<script src="../../fast/js/resources/js-test-post.js"></script>
</body>
</html>