blob: f757ebefb45e88989de40a6f524011b5e9ec90bc [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
<script>
function test()
{
let suite = InspectorTest.createSyncSuite("WI.BoxShadow");
suite.addTestCase({
name: "WI.BoxShadow.fromString",
description: "Test we can detect box shadows from strings.",
test() {
InspectorTest.expectEqual((new WI.BoxShadow).toString(), "none", `default value should be "none"`);
InspectorTest.newline();
function testGood(string) {
let boxShadow = WI.BoxShadow.fromString(string);
InspectorTest.assert(boxShadow instanceof WI.BoxShadow, `'${string}' should be detected`);
if (boxShadow)
InspectorTest.log(`"${string}" resolves to "${boxShadow.toString()}"`);
}
// offsetX and offsetY
testGood("1px 2rem");
testGood("red 1px 2rem");
testGood("1px red 2rem");
testGood("1px 2rem red");
testGood("inset 1px 2rem");
testGood("1px inset 2rem");
testGood("1px 2rem inset");
testGood("inset 1px 2rem red");
testGood("1px inset 2rem red");
testGood("1px 2rem inset red");
testGood("1px 2rem red inset");
InspectorTest.newline();
// blurRadius
testGood("1px 2rem 3in");
testGood("red 1px 2rem 3in");
testGood("1px red 2rem 3in");
testGood("1px 2rem red 3in");
testGood("1px 2rem 3in red");
testGood("inset 1px 2rem 3in");
testGood("1px inset 2rem 3in");
testGood("1px 2rem inset 3in");
testGood("1px 2rem 3in inset");
testGood("inset 1px 2rem 3in red");
testGood("1px inset 2rem 3in red");
testGood("1px 2rem inset 3in red");
testGood("1px 2rem 3in inset red");
testGood("1px 2rem 3in red inset");
InspectorTest.newline();
// spreadRadius
testGood("1px 2rem 3in 4q");
testGood("red 1px 2rem 3in 4q");
testGood("1px red 2rem 3in 4q");
testGood("1px 2rem red 3in 4q");
testGood("1px 2rem 3in red 4q");
testGood("1px 2rem 3in 4q red");
testGood("inset 1px 2rem 3in 4q");
testGood("1px inset 2rem 3in 4q");
testGood("1px 2rem inset 3in 4q");
testGood("1px 2rem 3in inset 4q");
testGood("1px 2rem 3in 4q inset");
testGood("inset 1px 2rem 3in 4q red");
testGood("1px inset 2rem 3in 4q red");
testGood("1px 2rem inset 3in 4q red");
testGood("1px 2rem 3in inset 4q red");
testGood("1px 2rem 3in 4q inset red");
testGood("1px 2rem 3in 4q red inset");
InspectorTest.newline();
// 0 ignores unit
testGood("0 0 0 0 red inset");
testGood("0px 0px 0px 0px red inset");
testGood("0rem 0rem 0rem 0rem red inset");
testGood("0in 0in 0in 0in red inset");
testGood("0q 0q 0q 0q red inset");
InspectorTest.newline();
// keywords
testGood("none");
InspectorTest.newline();
// color with parenthesis
testGood("1px 2rem 3in 4q rgb(11, 12, 13) inset");
InspectorTest.newline();
function testBad(string) {
let boxShadow = WI.BoxShadow.fromString(string);
InspectorTest.expectNull(boxShadow, `'${string}' should not be detected`);
}
// missing unit
testBad("1");
InspectorTest.newline();
// invalid unit
testBad("1%");
testBad("1px 2%");
testBad("1px 2px 3%");
testBad("1px 2px 3px 4%");
InspectorTest.newline();
// missing or extra components
testBad("1px");
testBad("1px 2rem 3in 4q 5pt");
testBad("1px 2rem 3in 4q invalid");
testBad("1px 2rem 3in 4q red inset extra");
testBad("red");
testBad("inset");
InspectorTest.newline();
// duplicate components
testBad("red red");
testBad("inset inset");
InspectorTest.newline();
return true;
}
});
suite.runTestCasesAndFinish();
}
</script>
</head>
<body onload="runTest()">
<p>Tests for the WI.BoxShadow model object.</p>
</body>
</html>