<html>
<head>
<style>
#valid_normal {
    font-feature-settings: normal;
}

#valid_value_1 {
    font-feature-settings: "dlig" 1;
}

#valid_value_2 {
    font-feature-settings: "swsh" 2;
}

#valid_value_on {
    font-feature-settings: "smcp" on;
}

#valid_value_off {
    font-feature-settings: "liga" off;
}

#valid_value_omit {
    font-feature-settings: "c2sc";
}

#valid_valuelist {
    font-feature-settings: "tnum", 'hist';
}

#valid_singlequote {
    font-feature-settings: 'PKRN';
}

#valid_unusual_tag {
    font-feature-settings: "!@#$";
}

#valid_tag_space {
    font-feature-settings: "a bc";
}

#valid_composite {
    font-feature-settings: "dlig" 1, 'smcp' on, 'lig ' off;
}

#invalid_ident {
    font-feature-settings: dlig;
}

#invalid_cases {
    font-feature-settings: dlig, DLIG, DLig;
}

#invalid_1 {
    font-feature-settings: 1;
}

#invalid_off {
    font-feature-settings: off;
}

#invalid_normal_duplicate {
    font-feature-settings: normal, normal;
}

#invalid_normal_list {
    font-feature-settings: normal, aaaa;
}

#invalid_longer_ident {
    font-feature-settings: aaaaa;
}

#invalid_longer_quote {
    font-feature-settings: "aaaaa";
}

#invalid_negative {
    font-feature-settings: aaaa -1;
}

#invalid_float {
    font-feature-settings: aaaa 1.5;
}

#invalid_missing_comma {
    font-feature-settings: aaaa "bbbb";
}

#invalid_missing_comma_ident {
    font-feature-settings: aaaa bbbb;
}

#invalid_comma {
    font-feature-settings: ,;
}

#invalid_ending_comma {
    font-feature-settings: aaaa,;
}

#invalid_beginning_comma {
    font-feature-settings: ,aaaa;
}

#invalid_on {
    font-feature-settings: aaaa, on;
}

#invalid_0 {
    font-feature-settings: "aaaa" 1, "bbbb", 0;
}

#invalid_composite {
    font-feature-settings: aaaaa on, dlig on, PKRN -1;
}
</style>
<style>
@font-face {
    font-feature-settings: 'liga';
}

@font-face {
    font-feature-settings: aaaaa;
}
</style>
<script src="../resources/js-test-pre.js"></script>
</head>
<body>
<div id="valid_normal"></div>
<div id="valid_value_1"></div>
<div id="valid_value_2"></div>
<div id="valid_value_on"></div>
<div id="valid_value_off"></div>
<div id="valid_value_omit"></div>
<div id="valid_valuelist"></div>
<div id="valid_singlequote"></div>
<div id="valid_unusual_tag"></div>
<div id="valid_tag_space"></div>
<div id="valid_composite"></div>

<div id="invalid_ident"></div>
<div id="invalid_cases"></div>
<div id="invalid_1"></div>
<div id="invalid_off"></div>
<div id="invalid_normal_duplicate"></div>
<div id="invalid_normal_list"></div>
<div id="invalid_longer_ident"></div>
<div id="invalid_longer_quote"></div>
<div id="invalid_negative"></div>
<div id="invalid_float"></div>
<div id="invalid_missing_comma"></div>
<div id="invalid_missing_comma_ident"></div>
<div id="invalid_comma"></div>
<div id="invalid_ending_comma"></div>
<div id="invalid_beginning_comma"></div>
<div id="invalid_on"></div>
<div id="invalid_0"></div>

<div id="outer" style="font-feature-settings: 'dlig';">
  <div id="inner"></div>
</div>

<p id="description"></p>
<div id="console"></div>
<script>
description('Test parsing of the CSS3 font-feature-settings property.');

function canonicalize(fontFeatureSettingsString) {
    var pieces = fontFeatureSettingsString.split(", ");
    var lowered = pieces.map(function(piece) {
        return piece.toLowerCase();
    });
    var sorted = lowered.sort();
    return sorted.join(", ");
}

function parseResultOf(id) {
    var element = document.getElementById(id);
    return window.getComputedStyle(element)['font-feature-settings'];
}

debug('- Tests valid inputs.');
shouldBeEqualToString('canonicalize(parseResultOf("valid_normal"))', canonicalize("normal"));
shouldBeEqualToString('canonicalize(parseResultOf("valid_value_1"))', canonicalize("\"dlig\""));
shouldBeEqualToString('canonicalize(parseResultOf("valid_value_2"))', canonicalize("\"swsh\" 2"));
shouldBeEqualToString('canonicalize(parseResultOf("valid_value_on"))', canonicalize("\"smcp\""));
shouldBeEqualToString('canonicalize(parseResultOf("valid_value_off"))', canonicalize("\"liga\" 0"));
shouldBeEqualToString('canonicalize(parseResultOf("valid_value_omit"))', canonicalize("\"c2sc\""));
shouldBeEqualToString('canonicalize(parseResultOf("valid_valuelist"))', canonicalize("\"tnum\", \"hist\""));
shouldBeEqualToString('canonicalize(parseResultOf("valid_singlequote"))', canonicalize("\"PKRN\""));
shouldBeEqualToString('canonicalize(parseResultOf("valid_unusual_tag"))', canonicalize("\"!@#$\""));
shouldBeEqualToString('canonicalize(parseResultOf("valid_tag_space"))', canonicalize("\"a bc\""));
shouldBeEqualToString('canonicalize(parseResultOf("valid_composite"))', canonicalize("\"dlig\", \"smcp\", \"lig \" 0"));

debug('- Tests invalid inputs.  Results should be "normal".');
shouldBe('parseResultOf("invalid_ident")', '"normal"');
shouldBe('parseResultOf("invalid_cases")', '"normal"');
shouldBe('parseResultOf("invalid_1")', '"normal"');
shouldBe('parseResultOf("invalid_off")', '"normal"');
shouldBe('parseResultOf("invalid_normal_duplicate")', '"normal"');
shouldBe('parseResultOf("invalid_normal_list")', '"normal"');
shouldBe('parseResultOf("invalid_longer_ident")', '"normal"');
shouldBe('parseResultOf("invalid_longer_quote")', '"normal"');
shouldBe('parseResultOf("invalid_negative")', '"normal"');
shouldBe('parseResultOf("invalid_float")', '"normal"');
shouldBe('parseResultOf("invalid_missing_comma")', '"normal"');
shouldBe('parseResultOf("invalid_missing_comma_ident")', '"normal"');
shouldBe('parseResultOf("invalid_comma")', '"normal"');
shouldBe('parseResultOf("invalid_ending_comma")', '"normal"');
shouldBe('parseResultOf("invalid_beginning_comma")', '"normal"');
shouldBe('parseResultOf("invalid_on")', '"normal"');
shouldBe('parseResultOf("invalid_0")', '"normal"');

debug('- Tests inherit.');
shouldBeEqualToString('canonicalize(parseResultOf("outer"))', canonicalize("\"dlig\""));
shouldBeEqualToString('canonicalize(parseResultOf("inner"))', canonicalize("\"dlig\""));

debug('- Tests @font-face.');
var fontFaceRuleValid = document.styleSheets[1].cssRules[0].style['font-feature-settings'];
var fontFaceRuleInvalid = document.styleSheets[1].cssRules[1].style['font-feature-settings'];
shouldBeEqualToString('canonicalize(fontFaceRuleValid)', canonicalize("\"liga\""));
shouldBeEqualToString('fontFaceRuleInvalid', "");

</script>
<script src="../resources/js-test-post.js"></script>
</body>
</html>
