| Index: third_party/WebKit/LayoutTests/fast/css/hex-colors.html
|
| diff --git a/third_party/WebKit/LayoutTests/fast/css/hex-colors.html b/third_party/WebKit/LayoutTests/fast/css/hex-colors.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..cf6258a5661d6b59f7bcddc7b5e9bc2ecefe2c39
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/fast/css/hex-colors.html
|
| @@ -0,0 +1,78 @@
|
| +<!doctype html>
|
| +<script>
|
| +if (window.testRunner)
|
| + testRunner.dumpAsText();
|
| +
|
| +var TESTS = [
|
| + ["#000", 0, 0, 0],
|
| + ["#001", 0, 0, 17],
|
| + ["#012", 0, 17, 34],
|
| + ["#123", 17, 34, 51],
|
| + ["#0001", 0, 0, 0, 17],
|
| + ["#0012", 0, 0, 17,34],
|
| + ["#0123", 0, 17, 34, 51],
|
| + ["#1234", 17, 34, 51, 68],
|
| + ["#000000", 0, 0, 0],
|
| + ["#000012", 0, 0, 18],
|
| + ["#001234", 0, 18, 52],
|
| + ["#123456", 18, 52, 86],
|
| + ["#00000000", 0, 0, 0, 0],
|
| + ["#00000012", 0, 0, 0, 18],
|
| + ["#00001234", 0, 0, 18, 52],
|
| + ["#00123456", 0, 18, 52, 86],
|
| + ["#12345678", 18, 52, 86, 120],
|
| + // Bad content from here on shows the red failure color.
|
| + ["#12x3", 255, 0, 0],
|
| + ["#123x", 255, 0, 0],
|
| + ["#123x4567", 255, 0, 0],
|
| + ["#1234567r", 255, 0, 0],
|
| + ["#123456x6", 255, 0, 0],
|
| +];
|
| +
|
| +function extractComponents(rgbValue) {
|
| + var re = /rgba?\((\d+),\s(\d+),\s(\d+)(,\s([\d\.]+))?\)/;
|
| + var match = re.exec(rgbValue);
|
| + var results = [parseInt(match[1]), parseInt(match[2]), parseInt(match[3])];
|
| + if (match[5])
|
| + results.push(Math.round(parseFloat(match[5]) * 255));
|
| + return results;
|
| +}
|
| +
|
| +function componentsMatch(components, expectedR, expectedG, expectedB, expectedA) {
|
| + if (components[0] == expectedR && components[1] == expectedG && components[2] == expectedB) {
|
| + if (components.length != 4)
|
| + return true;
|
| + return components[3] == expectedA;
|
| + }
|
| +}
|
| +
|
| +function componentsAsRGBA(r, g, b, a) {
|
| + if (a !== undefined)
|
| + return "red:" + r + " green: " + g + " blue: " + b + " alpha: " + a;
|
| + return "red:" + r + " green: " + g + " blue: " + b;
|
| +}
|
| +
|
| +function runTest() {
|
| + var element = document.querySelector("p");
|
| + var results = "";
|
| +
|
| + for (var test of TESTS) {
|
| + element.style.color = test[0];
|
| + var components = extractComponents(window.getComputedStyle(element).color);
|
| + if (componentsMatch(components, test[1], test[2], test[3], test[4]))
|
| + results += "PASS " + test[0] + " was " + componentsAsRGBA(test[1], test[2], test[3], test[4]) + "<br>";
|
| + else
|
| + results += "FAIL " + test[0] + " should be " + componentsAsRGBA(test[1], test[2], test[3], test[4]) + " but was " + componentsAsRGBA(components[0], components[1], components[2], components[3]) + "<br>";
|
| +
|
| + // Force a color reset and style recalc.
|
| + element.style.color = "red";
|
| + computedStyle = window.getComputedStyle(element).color;
|
| + }
|
| +
|
| + document.querySelector("div").innerHTML = results;
|
| +}
|
| +
|
| +window.addEventListener("load", runTest, false);
|
| +</script>
|
| +<div id="results"></div>
|
| +<p></p>
|
|
|