| <!DOCTYPE html> |
| <link rel="help" href="https://drafts.css-houdini.org/css-properties-values-api-1/#cssom"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <style> |
| @property --valid { |
| syntax: "<color> | none"; |
| inherits: false; |
| initial-value: red; |
| } |
| @property --valid-reverse { |
| initial-value: 0px; |
| inherits: true; |
| syntax: "<length>"; |
| } |
| @property --valid-universal { |
| syntax: "*"; |
| inherits: false; |
| } |
| @property --valid-whitespace { |
| syntax: " <color>+ "; |
| inherits: false; |
| initial-value: red, blue; |
| } |
| @property --vALId { |
| syntax: "<color> | none"; |
| inherits: false; |
| initial-value: red; |
| } |
| @property --no-descriptors { |
| |
| } |
| @property --no-syntax { |
| inherits: false; |
| initial-value: red; |
| } |
| @property --no-inherits { |
| syntax: "<color> | none"; |
| initial-value: red; |
| } |
| @property --no-initial-value { |
| syntax: "<color> | none"; |
| inherits: false; |
| } |
| @property --syntax-only { |
| syntax: "<color> | none"; |
| } |
| @property --inherits-only { |
| inherits: true; |
| } |
| @property --initial-value-only { |
| initial-value: red; |
| } |
| /* U+0009 CHARACTER TABULATION */ |
| @property --tab\9 tab { } |
| </style> |
| <script> |
| |
| function find_at_property_rule(name) { |
| for (let rule of document.styleSheets[0].cssRules) { |
| if (rule.constructor.name != "CSSPropertyRule") |
| continue; |
| if (rule.name == name) |
| return rule; |
| } |
| return null; |
| } |
| |
| function test_css_text(name, expected) { |
| test(() => { |
| let rule = find_at_property_rule(name); |
| assert_true(!!rule); |
| assert_equals(rule.cssText, expected); |
| }, `Rule for ${name} has expected cssText`); |
| } |
| |
| function test_name(name) { |
| test(() => { |
| let rule = find_at_property_rule(name); |
| assert_true(!!rule); |
| assert_equals(rule.name, name); |
| }, `Rule for ${name} returns expected value for CSSPropertyRule.name`); |
| } |
| |
| function test_syntax(name, expected) { |
| test(() => { |
| let rule = find_at_property_rule(name); |
| assert_true(!!rule); |
| assert_equals(rule.syntax, expected); |
| }, `Rule for ${name} returns expected value for CSSPropertyRule.syntax`); |
| } |
| |
| function test_inherits(name, expected) { |
| test(() => { |
| let rule = find_at_property_rule(name); |
| assert_true(!!rule); |
| assert_equals(rule.inherits, expected); |
| }, `Rule for ${name} returns expected value for CSSPropertyRule.inherits`); |
| } |
| |
| function test_initial_value(name, expected) { |
| test(() => { |
| let rule = find_at_property_rule(name); |
| assert_true(!!rule); |
| assert_equals(rule.initialValue, expected); |
| }, `Rule for ${name} returns expected value for CSSPropertyRule.initialValue`); |
| } |
| |
| // CSSPropertyRule.cssText |
| |
| test_css_text('--valid', '@property --valid { syntax: "<color> | none"; inherits: false; initial-value: red; }'); |
| test_css_text('--valid-reverse', '@property --valid-reverse { syntax: "<length>"; inherits: true; initial-value: 0px; }'); |
| test_css_text('--valid-universal', '@property --valid-universal { syntax: "*"; inherits: false; }'); |
| test_css_text('--valid-whitespace', '@property --valid-whitespace { syntax: " <color>+ "; inherits: false; initial-value: red, blue; }'); |
| test_css_text('--vALId', '@property --vALId { syntax: "<color> | none"; inherits: false; initial-value: red; }'); |
| |
| test_css_text('--no-descriptors', '@property --no-descriptors { }'); |
| test_css_text('--no-syntax', '@property --no-syntax { inherits: false; initial-value: red; }'); |
| test_css_text('--no-inherits', '@property --no-inherits { syntax: "<color> | none"; initial-value: red; }'); |
| test_css_text('--no-initial-value', '@property --no-initial-value { syntax: "<color> | none"; inherits: false; }'); |
| test_css_text('--syntax-only', '@property --syntax-only { syntax: "<color> | none"; }'); |
| test_css_text('--inherits-only', '@property --inherits-only { inherits: true; }'); |
| test_css_text('--initial-value-only', '@property --initial-value-only { initial-value: red; }'); |
| test_css_text('--tab\ttab', '@property --tab\\9 tab { }'); |
| |
| // CSSRule.type |
| |
| test(() => { |
| let rule = find_at_property_rule('--valid'); |
| assert_equals(rule.type, 0); |
| }, 'CSSRule.type returns 0'); |
| |
| // CSSPropertyRule.name |
| |
| test_name('--valid'); |
| test_name('--valid-reverse'); |
| test_name('--valid-universal'); |
| test_name('--valid-whitespace'); |
| test_name('--vALId'); |
| |
| test_name('--no-descriptors'); |
| test_name('--no-syntax'); |
| test_name('--no-inherits'); |
| test_name('--no-initial-value'); |
| test_name('--syntax-only'); |
| test_name('--inherits-only'); |
| test_name('--initial-value-only'); |
| |
| // CSSPropertyRule.syntax |
| |
| test_syntax('--valid', '<color> | none'); |
| test_syntax('--valid-reverse', '<length>'); |
| test_syntax('--valid-universal', '*'); |
| test_syntax('--valid-whitespace', ' <color>+ '); |
| test_syntax('--vALId', '<color> | none'); |
| |
| test_syntax('--no-descriptors', ''); |
| test_syntax('--no-syntax', ''); |
| test_syntax('--no-inherits', '<color> | none'); |
| test_syntax('--no-initial-value', '<color> | none'); |
| test_syntax('--syntax-only', '<color> | none'); |
| test_syntax('--inherits-only', ''); |
| test_syntax('--initial-value-only', ''); |
| |
| // CSSPropertyRule.inherits |
| |
| test_inherits('--valid', false); |
| test_inherits('--valid-reverse', true); |
| test_inherits('--valid-universal', false); |
| test_inherits('--valid-whitespace', false); |
| test_inherits('--vALId', false); |
| |
| test_inherits('--no-descriptors', false); |
| test_inherits('--no-syntax', false); |
| test_inherits('--no-inherits', false); |
| test_inherits('--no-initial-value', false); |
| test_inherits('--syntax-only', false); |
| test_inherits('--inherits-only', true); |
| test_inherits('--initial-value-only', false); |
| |
| // CSSPropertyRule.initialValue |
| |
| test_initial_value('--valid', ' red'); |
| test_initial_value('--valid-reverse', ' 0px'); |
| test_initial_value('--valid-universal', null); |
| test_initial_value('--valid-whitespace', ' red, blue'); |
| test_initial_value('--vALId', ' red'); |
| |
| test_initial_value('--no-descriptors', null); |
| test_initial_value('--no-syntax', ' red'); |
| test_initial_value('--no-inherits', ' red'); |
| test_initial_value('--no-initial-value', null); |
| test_initial_value('--syntax-only', null); |
| test_initial_value('--inherits-only', null); |
| test_initial_value('--initial-value-only', ' red'); |
| |
| </script> |