haikuwebkit/LayoutTests/inspector/model/gradient.html

126 lines
5.0 KiB
HTML

<!doctype html>
<html>
<head>
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
<script>
function test()
{
let suite = InspectorTest.createAsyncSuite("WI.Gradient");
suite.addTestCase({
name: "WI.Gradient.fromString",
description: "Test we can detect gradients from strings.",
test(resolve, reject) {
function testGood(string, expectedSubclass) {
let gradient = WI.Gradient.fromString(string);
InspectorTest.expectThat(gradient instanceof WI.Gradient, `'${string}' is valid`);
InspectorTest.expectThat(gradient && gradient instanceof expectedSubclass, `'${string}' is the expected subclass '${expectedSubclass.name}'`);
}
function testBad(string) {
let gradient = WI.Gradient.fromString(string);
InspectorTest.expectThat(!gradient, `'${string}' is not valid`);
if (gradient)
InspectorTest.fail(`'${string}' is valid with subclass '${gradient.constructor.name}'`);
}
testGood("linear-gradient(red, blue)", WI.LinearGradient);
testGood("linear-gradient(0deg, red, blue)", WI.LinearGradient);
testGood("linear-gradient(to top, red, blue)", WI.LinearGradient);
testGood("linear-gradient(to top, red, green 50%, blue)", WI.LinearGradient);
testGood("repeating-linear-gradient(0deg, red, blue)", WI.LinearGradient);
testGood("radial-gradient(red, blue)", WI.RadialGradient);
testGood("radial-gradient(0deg, red, blue)", WI.RadialGradient);
testGood("radial-gradient(ellipse, red, blue)", WI.RadialGradient);
testGood("radial-gradient(ellipse, red, green 50%, blue)", WI.RadialGradient);
testGood("repeating-radial-gradient(red, blue)", WI.RadialGradient);
InspectorTest.log("");
testBad("bad");
testBad("linear-gradient");
testBad("linear-gradient()");
testBad("linear-gradient(0, red)");
testBad("linear-gradient(0, red, blue)");
testBad("linear-gradient(to, red, blue)");
testBad("linear-gradient(0deg, red, blue");
testBad("linear-gradient(0deg, red, blue,)");
testBad("radial-gradient");
testBad("radial-gradient()");
testBad("radial-gradient(red, blue");
testBad("radial-gradient(red, blue,)");
resolve();
}
});
suite.addTestCase({
name: "WI.Gradient.prototype.toString",
description: "Test the different toString outputs.",
test(resolve, reject) {
function test(string, expected = string) {
let gradient = WI.Gradient.fromString(string);
InspectorTest.expectThat(gradient instanceof WI.Gradient, `'${string}' is valid`);
InspectorTest.expectEqual(gradient && gradient.toString(), expected, `toString() output matches '${expected}'`);
}
test("linear-gradient(0deg, red, blue)", "linear-gradient(to top, red, blue)");
test("linear-gradient(to top, red, blue)");
test("linear-gradient(30deg, red, blue)");
test("repeating-linear-gradient(red, blue)");
test("radial-gradient(red, blue)");
test("radial-gradient(30deg, red, blue)");
test("radial-gradient(ellipse, red, blue)");
test("repeating-radial-gradient(red, blue)");
resolve();
}
});
suite.addTestCase({
name: "WI.LinearGradient.prototype.set angleUnits",
description: "Test the recalculation of the angle value when changing angle units.",
test(resolve, reject) {
let gradient = WI.Gradient.fromString("linear-gradient(red, blue)");
if (!gradient) {
InspectorTest.fail("'linear-gradient(red, blue)' is not valid");
reject();
}
function test(angleValue, angleUnits) {
InspectorTest.expectEqual(gradient.angleValue, angleValue, `Gradient has angle value of '${angleValue}'`);
InspectorTest.expectEqual(gradient.angleUnits, angleUnits, `Gradient has angle units of '${angleUnits}'`);
InspectorTest.expectEqual(gradient.toString(), "linear-gradient(red, blue)", "toString() returns the same value regardless of angle units");
}
test(180, WI.LinearGradient.AngleUnits.DEG);
gradient.angleUnits = WI.LinearGradient.AngleUnits.RAD;
test(3.14, WI.LinearGradient.AngleUnits.RAD);
gradient.angleUnits = WI.LinearGradient.AngleUnits.GRAD;
test(200, WI.LinearGradient.AngleUnits.GRAD);
gradient.angleUnits = WI.LinearGradient.AngleUnits.TURN;
test(0.5, WI.LinearGradient.AngleUnits.TURN);
resolve();
}
});
suite.runTestCasesAndFinish();
}
</script>
</head>
<body onload="runTest()">
<p>Tests for the WI.Gradient model object.</p>
</body>
</html>