| <!DOCTYPE html> | |
| <link rel="help" href="https://drafts.csswg.org/css-values-5/#funcdef-random-item"> | |
| <link rel="author" title="Joanne Pan" href="https://github.com/J0pan"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script src="/css/support/parsing-testcommon.js"></script> | |
| <script> | |
| // random-item() is an arbitrary substitution function, so only its argument grammar is | |
| // validated at parse time: | |
| // <random-item-args> = random-item( <declaration-value>, [ <declaration-value>? ]# ) | |
| // The first argument is parsed as a <random-key> and an item is selected at computed-value | |
| // time, not here. See https://drafts.csswg.org/css-values-5/#funcdef-random-item | |
| // A non-empty first argument followed by a comma-separated list of items is valid. | |
| test_valid_value('font-family', 'random-item(auto, serif)'); | |
| test_valid_value('font-family', 'random-item(auto, serif, sans-serif, monospace)'); | |
| test_valid_value('font-family', 'random-item(auto ,serif ,sans-serif)'); | |
| test_valid_value('font-family', 'random-item(auto , serif , sans-serif)'); | |
| // Items may be empty: [ <declaration-value>? ]#. | |
| test_valid_value('font-family', 'random-item(auto, )'); | |
| test_valid_value('font-family', 'random-item(auto, serif,)'); | |
| test_valid_value('font-family', 'random-item(auto, , serif)'); | |
| test_valid_value('font-family', 'random-item(auto, ,)'); | |
| // Comma-containing items are grouped with {}, including with whitespace around the braces. | |
| // https://drafts.csswg.org/css-values-5/#component-function-commas | |
| test_valid_value('font-family', 'random-item(auto, {Times, serif}, {Arial, sans-serif})'); | |
| test_valid_value('font-family', 'random-item(auto, {Times, serif}, sans-serif, {monospace})'); | |
| test_valid_value('font-family', 'random-item(auto, {Times, serif})'); | |
| test_valid_value('font-family', 'random-item(auto, { Times, serif }, { Arial, sans-serif })'); | |
| test_valid_value('font-family', 'random-item(auto, {Times, serif}, { Arial, sans-serif })'); | |
| test_valid_value('font-family', 'random-item(auto, { monospace })'); | |
| // The first argument is NOT parsed as <random-key> at parse time, so any non-empty | |
| // <declaration-value> is accepted here. These resolve (or become invalid) at computed-value time. | |
| test_valid_value('font-family', 'random-item(--x, serif, sans-serif)'); | |
| test_valid_value('font-family', 'random-item(fixed 0.5, serif, sans-serif)'); | |
| test_valid_value('font-family', 'random-item(serif, sans-serif)'); | |
| test_valid_value('font-family', 'random-item(foo, serif, sans-serif)'); | |
| test_valid_value('font-family', 'random-item(fixed -0.5, serif, sans-serif)'); | |
| test_valid_value('font-family', 'random-item(property-scoped, serif, sans-serif)'); | |
| test_valid_value('font-family', 'random-item(var(--key), serif, sans-serif)'); | |
| </script> |