blob: c34aa3ea9e61e2ed73876103a7ae66816c0acc83 [file] [edit]
<!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>