blob: 226e04c41c6feabcb11089633e1fb0c531a6d0d2 [file] [log] [blame]
<!DOCTYPE html>
<title>Font Variant Shorthand Parsing</title>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script>
var shorthandWriteExpectations = [
{ writeFontVariant : "normal", readCaps : "normal", readLigatures : "normal", readNumeric : "normal" },
{ writeFontVariant : "none", readCaps : "normal", readLigatures : "none", readNumeric : "normal" },
{ writeFontVariant : "all-small-caps", readCaps : "all-small-caps", readLigatures : "normal", readNumeric : "normal" },
{ writeFontVariant : "historical-ligatures", readCaps : "normal", readLigatures : "historical-ligatures", readNumeric : "normal" },
{ writeFontVariant : "historical-ligatures discretionary-ligatures", readCaps : "normal",
readLigatures : "discretionary-ligatures historical-ligatures", readNumeric : "normal" },
{ writeFontVariant : "historical-ligatures petite-caps", readCaps : "petite-caps", readLigatures : "historical-ligatures", readNumeric : "normal" },
{ writeFontVariant : "", readCaps : "normal", readLigatures : "normal", readNumeric : "normal" },
{ writeFontVariant : "lining-nums", readCaps : "normal", readLigatures : "normal", readNumeric : "lining-nums" },
{ writeFontVariant : "lining-nums diagonal-fractions", readCaps : "normal",
readLigatures : "normal", readNumeric : "lining-nums diagonal-fractions" },
{ writeFontVariant : "lining-nums all-small-caps", readCaps : "all-small-caps",
readLigatures : "normal", readNumeric : "lining-nums" },
{ writeFontVariant : "lining-nums discretionary-ligatures", readCaps : "normal",
readLigatures : "discretionary-ligatures", readNumeric : "lining-nums" },
{ writeFontVariant : "lining-nums historical-ligatures ordinal all-small-caps",
readCaps : "all-small-caps",
readLigatures : "historical-ligatures",
readNumeric : "lining-nums ordinal" },
{ writeFontVariant : "ordinal discretionary-ligatures all-petite-caps historical-ligatures diagonal-fractions",
readCaps : "all-petite-caps",
readLigatures : "discretionary-ligatures historical-ligatures",
readNumeric : "diagonal-fractions ordinal"
}
];
var shorthandReadExpectations = [
{ writeCaps : "", writeLigatures: "", writeNumeric: "", readFontVariant: "normal" },
{ writeCaps : "normal", writeLigatures: "normal", writeNumeric: "normal", readFontVariant: "normal" },
{ writeCaps : "normal", writeLigatures: "none", writeNumeric: "normal", readFontVariant: "none" },
{ writeCaps : "all-small-caps", writeLigatures: "none", writeNumeric: "normal",
readFontVariant: "no-common-ligatures no-discretionary-ligatures no-historical-ligatures no-contextual all-small-caps" },
{ writeCaps : "all-small-caps", writeLigatures: "normal", writeNumeric: "normal", readFontVariant: "all-small-caps" },
{ writeCaps : "normal",
writeLigatures: "discretionary-ligatures historical-ligatures",
writeNumeric: "normal",
readFontVariant: "discretionary-ligatures historical-ligatures" },
{ writeCaps : "petite-caps", writeLigatures: "discretionary-ligatures", writeNumeric: "normal",
readFontVariant: "discretionary-ligatures petite-caps" },
{ writeCaps : "petite-caps", writeLigatures: "discretionary-ligatures", writeNumeric: "lining-nums diagonal-fractions",
readFontVariant: "discretionary-ligatures petite-caps lining-nums diagonal-fractions" },
{ writeCaps : "", writeLigatures: "", writeNumeric: "lining-nums diagonal-fractions",
readFontVariant: "lining-nums diagonal-fractions" },
];
var writeInvalidExpectations = {
"font-variant" : [ "historical-ligaturesTYPO",
"historical-ligaturesTYPO small-caps",
"discretionary-ligatures no-discretionary-ligatures",
"discretionary-ligatures small-caps no-historical-ligatures all-small-caps",
"discretionary-ligatures small-caps all-petite-caps",
"small-caps unicase"],
"font-variant-caps" : [ "typotypotypo", "all-small-caps all-petite-caps" ],
"font-variant-ligatures" : [ "discretionary-ligatures no-discretionary-ligatures", "typotypotypo", "none discretionary-ligatures" ],
"font-variant-numeric" : [ "lining-nums normal", "lining-nums slashed-zero diagonal-fractions oldstyle-nums" ]
};
</script>
<div id="testElement"></div>
<div id="log"></div>
<script>
setup({ explicit_done: true });
function writeFontVariantTests() {
for (testParameters of shorthandWriteExpectations) {
testElement.style.fontVariant = testParameters.writeFontVariant;
test(function(){
assert_equals(getComputedStyle(testElement).fontVariantCaps, testParameters.readCaps);
assert_equals(getComputedStyle(testElement).fontVariantLigatures, testParameters.readLigatures);
assert_equals(getComputedStyle(testElement).fontVariantNumeric, testParameters.readNumeric);
}, "Sub properties set from longhand value: " + testParameters.writeFontVariant);
}
}
function readFontVariantTests() {
for (testParameters of shorthandReadExpectations) {
testElement.style.fontVariantCaps = testParameters.writeCaps;
testElement.style.fontVariantLigatures = testParameters.writeLigatures;
testElement.style.fontVariantNumeric = testParameters.writeNumeric;
test(function(){
assert_equals(getComputedStyle(testElement).fontVariant, testParameters.readFontVariant);
}, "Shorthand from written subproperties: " + getComputedStyle(testElement).fontVariant);
}
}
function invalidWriteTests() {
for (key in writeInvalidExpectations) {
for (value of writeInvalidExpectations[key]) {
test(function(){
assert_false(CSS.supports(key, value));
}, "Value " + value + " invalid for property " + key + ".");
}
}
}
window.addEventListener("load", function() {
writeFontVariantTests();
readFontVariantTests();
invalidWriteTests();
done();
});
</script>