diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/css/css-typed-om/stylevalue-subclasses/cssOKLab.html | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/css/css-typed-om/stylevalue-subclasses/cssOKLab.html')
-rw-r--r-- | testing/web-platform/tests/css/css-typed-om/stylevalue-subclasses/cssOKLab.html | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/css-typed-om/stylevalue-subclasses/cssOKLab.html b/testing/web-platform/tests/css/css-typed-om/stylevalue-subclasses/cssOKLab.html new file mode 100644 index 0000000000..b597845a54 --- /dev/null +++ b/testing/web-platform/tests/css/css-typed-om/stylevalue-subclasses/cssOKLab.html @@ -0,0 +1,79 @@ +<!doctype html> +<meta charset="utf-8"> +<title>CSSOKLab tests</title> +<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#csshwb"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/testhelper.js"></script> +<script> +'use strict'; + +const gValidLightnessInputs = [ + {lightness: CSS.percent(50), desc: 'percent', expected: CSS.percent(50)}, + {lightness: 0.5, desc: 'number', expected: CSS.percent(50)}, +]; + +const gInvalidLightnessInputs = [ + {lightness: CSS.px(1), desc: "css pixels"}, + {lightness: CSS.deg(180), desc: "degrees"}, +] + +for (const {lightness, desc, expected} of gValidLightnessInputs) { + test(() => { + const result = new CSSOKLab(lightness, 0.5, 0.5); + assert_color_channel_approx_equals(result.l, expected); + }, `Constructing a CSSOKLab with ${desc} for the lightness works as intended.`); + + test(() => { + const result = new CSSOKLab(CSS.percent(0), 0.5, 0.5); + result.l = lightness; + assert_color_channel_approx_equals(result.l, expected); + }, `CSSOKLab.l can be updated with a ${desc}.`); +} + +for (const {lightness, desc} of gInvalidLightnessInputs) { + test(() => { + assert_throws_dom("SyntaxError", () => new CSSOKLab(lightness, 0, 0)); + }, `Constructing a CSSOKLab with ${desc} for lightness throws a SyntaxError.`); +} + +test(() => { + const result = new CSSOKLab(CSS.percent(27), 7, CSS.number(8)); + assert_color_channel_approx_equals(result.l, CSS.percent(27)); + assert_color_channel_approx_equals(result.a, CSS.number(7)); + assert_color_channel_approx_equals(result.b, CSS.number(8)); + assert_color_channel_approx_equals(result.alpha, CSS.percent(100)); +}, 'CSSOKLab can be constructed from three numbers and will get an alpha of 100%.'); + +test(() => { + const result = new CSSOKLab(0.2, 7, CSS.number(8), CSS.percent(0.4)); + assert_color_channel_approx_equals(result.l, CSS.percent(20)); + assert_color_channel_approx_equals(result.a, CSS.number(7)); + assert_color_channel_approx_equals(result.b, CSS.number(8)); + assert_color_channel_approx_equals(result.alpha, CSS.percent(0.4)); +}, 'CSSOKLab can be constructed from four numbers.'); + +test(() => { + assert_throws_dom("SyntaxError", () => new CSSOKLab(CSS.number(1), 0, 0, 0)); + assert_throws_dom("SyntaxError", () => new CSSOKLab(0, 0, 0, CSS.number(1))); +}, `Constructing a CSSOKLab with CSS.number for l or alpha throws a SyntaxError`); + +for (const attr of ['l', 'alpha']) { + test(() => { + const result = new CSSOKLab(CSS.percent(0), 0, 0); + assert_throws_dom("SyntaxError", () => result[attr] = CSS.number(1)); + }, `Updating a CSSOKLab with CSS.number for ${attr} throws a SyntaxError`); + + test(() => { + const result = new CSSOKLab(CSS.percent(0), 0, 0); + result[attr] = 0.5; + assert_color_channel_approx_equals(result[attr], CSS.percent(50)); + }, 'CSSOKLab.' + attr + ' can be updated to a number.'); + + test(() => { + const result = new CSSOKLab(CSS.percent(0), 0, 0); + result[attr] = CSS.percent(50); + assert_color_channel_approx_equals(result[attr], CSS.percent(50)); + }, 'CSSOKLab.' + attr + ' can be updated with a CSS percent.'); +} +</script> |