<!DOCTYPE html>
<html>
<head>
<title>variable definition cascading tests</title>
<meta rel="author" title="Kevin Babbitt">
<meta rel="author" title="Greg Whitworth">
<link rel="author" title="Microsoft Corporation" href="http://microsoft.com" />
<link rel="help" href="http://www.w3.org/TR/css-variables-1/#using-variables">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
* {
--var0:x;
}
</style>
</head>
<body>
<!-- test global selector -->
<div id="t0"></div>
<!-- multiple unique variables cascading together -->
<div id="t1a" style="--var1:a">
<div id="t1b" style="--var2:b">
<div id="t1c" style="--var3:c"></div>
<div id="t1d" style="--var4:d"></div>
</div>
</div>
<!-- testing overwriting -->
<div id="t2a" style="--var0:a">
<div id="t2b" style="--var0:b;--var1:c">
<div id="t2c" style="--var0:d;--var1:e"></div>
<div id="t2d" style="--var2:f"></div>
</div>
</div>
<script type="text/javascript">
"use strict";
var tests = [
{"divid": "t0", "expectedValues":["x"]},
{"divid": "t1a", "expectedValues":["x","a"]},
{"divid": "t1b", "expectedValues":["x","a","b"]},
{"divid": "t1c", "expectedValues":["x","a","b","c"]},
{"divid": "t1d", "expectedValues":["x","a","b","","d"]},
{"divid": "t2a", "expectedValues":["a"]},
{"divid": "t2b", "expectedValues":["b","c"]},
{"divid": "t2c", "expectedValues":["d","e"]},
{"divid": "t2d", "expectedValues":["x","c","f"]}
];
let maxVariables = 5;
tests.forEach(function (testCase) {
test( function () {
let div = document.getElementById(testCase.divid);
let computedStyle = window.getComputedStyle(div);
for (var i = 0; i < maxVariables; ++i) {
let testVar = "--var" + i;
let actualValue = computedStyle.getPropertyValue(testVar);
let expectedValue = testCase.expectedValues[i];
if (expectedValue === undefined){
expectedValue = "";
}
assert_equals(actualValue, expectedValue, "Actual Value for '" + testVar + "' should match expected value");
}
}, "testing cascaded CSS Variables on div '" + testCase.divid + "'");
});
</script>
</body>
</html>