<!DOCTYPE html>
<meta charset="utf-8">
<title>Tests for handling of CSS Custom Property names</title>
<link rel="help" href="https://drafts.csswg.org/css-variables/#serializing-custom-props">
<meta name="author" title="Cameron McCormack" href="mailto:cam@mcc.id.au">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>

// Valid custom property names, before and after CSS escaping.
var valid_names = [
  ["--a", "--a"],
  ["--a;b", "--a\\;b"],
  ["---", "---"],
  ["--\\", "--\\\\"],
  ["--ab", "--\\61 b"],
  ["--0", "--\\30 "],
];

valid_names.forEach(function(t) {
  var name = t[0];
  var escaped_name = t[1];

  test(function() {
    var e = document.createElement("span");
    e.style = escaped_name + ":value";

    for (var after_refeeding = 0; after_refeeding <= 1; ++after_refeeding) {
      var desc_suffix = (after_refeeding ? " (after " : " (before ") +
                        "serialization/re-parsing)";

      assert_equals(e.style.length, 1,
                    "appears on specified style" + desc_suffix);

      assert_equals(e.style[0], name,
                    "name returned correctly from specified " +
                    "style indexed getter" + desc_suffix);

      assert_equals(e.style.getPropertyValue(name), "value",
                    "property value returned correctly from " +
                    "specified style getPropertyValue" + desc_suffix);

      e.style = e.style.cssText;
    }
  }, "custom property '" + name + "'");
});
</script>
