126 lines
5.0 KiB
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>
|