<!DOCTYPE html>
<html>
<head>
    <title>Parse, store, and serialize CSS variable (thorugh css Text)</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/#serializing-custom-props">

    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
</head>
<body>

<div id="target1" style="--var: var1;"></div>
<div id="target2" style="margin: var(--prop);"></div>
<div id="target3" style="background: var(--prop);"></div>
<div id="target4" style="margin: var(--prop) !important;"></div>
<div id="target5" style="background: var(--prop) !important;"></div>
<div id="target6" style="background: var(--prop); background: green;"></div>
<div id="target7" style="background: green; background: var(--prop);"></div>
<div id="target8" style="color: green; color: var(--prop);"></div>
<div id="target9" style="margin: var(--prop); margin-top: 10px"></div>
<div id="target10"style="expando: var(--prop);"></div>
<div id="target11"style="color: /* comment that must not be preserved */ var(--prop)  /* kept comment */ var(--prop); /* another stripped comment */ /* indeed */ "></div>

<script type="text/javascript">
    "use strict";

    var testcases = [
        { element: "target1",   expectedCssText: "--var: var1;" },
        { element: "target2",   expectedCssText: "margin: var(--prop);" },
        { element: "target3",   expectedCssText: "background: var(--prop);" },
        { element: "target4",   expectedCssText: "margin: var(--prop) !important;" },
        { element: "target5",   expectedCssText: "background: var(--prop) !important;" },
        { element: "target6",   expectedCssText: "background: green;" },
        { element: "target7",   expectedCssText: "background: var(--prop);" },
        { element: "target8",   expectedCssText: "color: var(--prop);" },
        { element: "target9",   expectedCssText: "margin-right: ; margin-bottom: ; margin-left: ; margin-top: 10px;" },
        { element: "target10",  expectedCssText: "" },
        { element: "target11",  expectedCssText: "color: var(--prop)  /* kept comment */ var(--prop);" }
    ];

    testcases.forEach(function (testcase) {
        test( function () {
            var div = document.getElementById(testcase.element);
            var actualCssText = div.style.cssText;
            assert_equals(actualCssText, testcase.expectedCssText);
        }, testcase.element);
    });
</script>

</body>
</html>
