<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
  <title>'paint-order' computed style serialization</title>
  <h:script src="/resources/testharness.js"/>
  <h:script src="/resources/testharnessreport.js"/>
  <text id="text" x="100" y="100"/>
  <script><![CDATA[
    'use strict';

    function make_tests(check, type) {
      let tests = [
        // Single keyword
        ["normal", "normal"],
        ["fill", "fill"],
        ["stroke", "stroke"],
        ["markers", "markers"],
        // Two keywords
        ["fill stroke", "fill"],
        ["fill markers", "fill markers"],
        ["stroke fill", "stroke"],
        ["stroke markers", "stroke markers"],
        ["markers fill", "markers"],
        ["markers stroke", "markers stroke"],
        // Three keywords
        ["fill stroke markers", "fill"],
        ["fill markers stroke", "fill markers"],
        ["stroke fill markers", "stroke"],
        ["stroke markers fill", "stroke markers"],
        ["markers fill stroke", "markers"],
        ["markers stroke fill", "markers stroke"],
        // Invalid
        ["foo", "normal"],
        ["fill foo", "normal"],
        ["stroke foo", "normal"],
        ["markers foo", "normal"],
        ["normal foo", "normal"],
        ["fill markers stroke foo", "normal"],
      ];
      for (let [value, expected] of tests) {
        test(() => {
          check(value, expected);
        }, `${document.title}, "${value}" => "${expected}" (${type})`);
      }
    }

    const text = document.getElementById("text");

    make_tests((value, expected) => {
      text.setAttribute("style", "paint-order: " + value);
      let actual = getComputedStyle(text).paintOrder;
      text.removeAttribute("style");
      assert_equals(actual, expected, value);
    }, "property");

    make_tests((value, expected) => {
      text.setAttribute("paint-order", value);
      let actual = getComputedStyle(text).paintOrder;
      text.removeAttribute("paint-order");
      assert_equals(actual, expected, value);
    }, "presentation attribute");
  ]]>
  </script>
</svg>
