<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS Fonts Module Level 4: parsing @font-palette-values</title>
<link rel="help" href="https://drafts.csswg.org/css-fonts/#font-palette-values">
<meta name="assert" content="@font-palette-values is parsed correctly.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style id="style">
@font-palette-values {
}

@font-palette-values A {
}

@font-palette-values --A --B {
}

/* 0 */
@font-palette-values --A {
    font-family: a, b;
}

/* 1 */
@font-palette-values --A {
    font-family: 1;
}

/* 2 */
@font-palette-values --A {
    font: 12px a;
}

/* 3 */
@font-palette-values --A {
    base-palette: 1 2;
}

/* 4 */
@font-palette-values --A {
    base-palette: ident;
}

/* 5 */
@font-palette-values --A {
    base-palette: "a" "b";
}

/* 6 */
@font-palette-values --A {
    base-palette: ;
}

/* 7 */
@font-palette-values --A {
    override-colors: ident #123;
}

/* 8 */
@font-palette-values --A {
    override-colors: 0 "red";
}

/* 9 */
@font-palette-values --A {
    override-colors: 0 #123, 1;
}

/* 10 */
@font-palette-values --A {
    override-colors: ;
}

/* 11 */
@font-palette-values --A {
    override-colors: 0 #123 1;
}

/* 12 */
@font-palette-values --A {
    override-colors: 0;
}

/* 13 */
@font-palette-values --A {
    font-family: "";
}

/* 14 */
@font-palette-values --A {
    base-palette: initial;
    override-colors: initial;
}

/* 15 */
@font-palette-values --A {
    base-palette: inherit;
    override-colors: inherit;
}

/* 16 */
@font-palette-values --A {
    base-palette: unset;
    override-colors: unset;
}

/* 17 */
@font-palette-values --A {
    base-palette: -1;
    override-color: -1 #123;
}

/* 18 */
@font-palette-values --A {
    override-colors: 0 canvas;
}
</style>
</head>
<body>
<script>
let rules = document.getElementById("style").sheet.cssRules;
test(function() {
    assert_equals(rules.length, 19);
});

test(function() {
    let text = rules[0].cssText;
    let rule = rules[0];
    assert_equals(text.indexOf("font-family"), -1);
    assert_equals(rule.fontFamily, "");
    rule.fontFamily = "SomeFontFamily";
    assert_equals(rule.fontFamily, "");
    assert_equals(rule.basePalette, "");
    rule.basePalette = "7";
    assert_equals(rule.basePalette, "");
    assert_throws_js(TypeError, function() {
        rule.clear();
    });
    assert_throws_js(TypeError, function() {
        rule.delete(4);
    });
    assert_throws_js(TypeError, function() {
        rule.set(4, "0 #123");
    });
});

test(function() {
    let text = rules[1].cssText;
    let rule = rules[1];
    assert_equals(text.indexOf("font-family"), -1);
    assert_equals(rule.fontFamily, "");
});

test(function() {
    let text = rules[2].cssText;
    let rule = rules[2];
    assert_equals(text.indexOf("font:"), -1);
    assert_equals(rule.fontFamily, "");
});

test(function() {
    let text = rules[3].cssText;
    let rule = rules[3];
    assert_equals(text.indexOf("base-palette"), -1);
    assert_equals(rule.basePalette, "");
});

test(function() {
    let text = rules[4].cssText;
    let rule = rules[4];
    assert_equals(text.indexOf("base-palette"), -1);
    assert_equals(rule.basePalette, "");
});

test(function() {
    let text = rules[5].cssText;
    let rule = rules[5];
    assert_equals(text.indexOf("base-palette"), -1);
    assert_equals(rule.basePalette, "");
});

test(function() {
    let text = rules[6].cssText;
    let rule = rules[6];
    assert_equals(text.indexOf("base-palette"), -1);
    assert_equals(rule.basePalette, "");
});

test(function() {
    let text = rules[7].cssText;
    let rule = rules[7];
    assert_equals(text.indexOf("override-colors"), -1);
    assert_equals(rule.overrideColors, "");
});

test(function() {
    let text = rules[8].cssText;
    let rule = rules[8];
    assert_equals(text.indexOf("override-colors"), -1);
    assert_equals(rule.overrideColors, "");
});

test(function() {
    let text = rules[9].cssText;
    let rule = rules[9];
    assert_equals(text.indexOf("override-colors"), -1);
    assert_equals(rule.overrideColors, "");
});

test(function() {
    let text = rules[10].cssText;
    let rule = rules[10];
    assert_equals(text.indexOf("override-colors"), -1);
    assert_equals(rule.overrideColors, "");
});

test(function() {
    let text = rules[11].cssText;
    let rule = rules[11];
    assert_equals(text.indexOf("override-colors"), -1);
    assert_equals(rule.overrideColors, "");
});

test(function() {
    let text = rules[12].cssText;
    let rule = rules[12];
    assert_equals(text.indexOf("override-colors"), -1);
    assert_equals(rule.overrideColors, "");
});

test(function() {
    let text = rules[13].cssText;
    let rule = rules[13];
    // I see nothing in the spec that indicates an empty string is a parse error.
    assert_not_equals(text.indexOf("font-family"), -1);
});

test(function() {
    let text = rules[14].cssText;
    let rule = rules[14];
    assert_equals(text.indexOf("base-palette"), -1);
    assert_equals(text.indexOf("override-colors"), -1);
    assert_equals(rule.basePalette, "");
    assert_equals(rule.overrideColors, "");
});

test(function() {
    let text = rules[15].cssText;
    let rule = rules[15];
    assert_equals(text.indexOf("base-palette"), -1);
    assert_equals(text.indexOf("override-colors"), -1);
    assert_equals(rule.basePalette, "");
    assert_equals(rule.overrideColors, "");
});

test(function() {
    let text = rules[16].cssText;
    let rule = rules[16];
    assert_equals(text.indexOf("base-palette"), -1);
    assert_equals(text.indexOf("override-colors"), -1);
    assert_equals(rule.basePalette, "");
    assert_equals(rule.overrideColors, "");
});

test(function() {
    assert_equals(CSSRule.FONT_PALETTE_VALUES_RULE, undefined);
});

test(function() {
    let text = rules[17].cssText;
    let rule = rules[17];
    assert_equals(text.indexOf("base-palette"), -1);
    assert_equals(text.indexOf("override-color"), -1);
    assert_equals(rule.basePalette, "");
    assert_equals(rule.overrideColors, "");
});

test(function() {
    let text = rules[18].cssText;
    let rule = rules[18];
    assert_equals(text.indexOf("override-colors"), -1);
    assert_equals(rule.basePalette, "");
    assert_equals(rule.overrideColors, "");
});
</script>
</body>
</html>
