<!doctype html>
<html>
<head>
<title>Test for Bug 41509 - Ranges for @font-face unicode-range must be separated by commas</title>
<style>
.test {
    border: solid 1px;
}

/* Test 0: Comma-separated list, which is valid. */
@font-face {
    font-family:myfont_0;
    src: local('Times');
}
@font-face {
    font-family:myfont_0;
    src: local('Courier');
    unicode-range: u+69, u+6a; /* 'i' and 'j' */
}

/* Test 1: Comma-separated list with three elements, which is valid. */
@font-face {
    font-family:myfont_1;
    src: local('Times');
}
@font-face {
    font-family:myfont_1;
    src: local('Courier');
    unicode-range: u+69 , u+6a ,u+6c; /* 'i', 'j', and 'l' */
}

/* Test 2: Comma-separated list with two consecutive commas, which is invalid. */
@font-face {
    font-family:myfont_2;
    src: local('Times');
}
@font-face {
    font-family:myfont_2;
    src: local('Courier');
    unicode-range: u+69, , u+6a; /* 'i' and 'j' */
}

/* Test 3: Comma-separated list with a trailing comma, which is invalid. */
@font-face {
    font-family:myfont_3;
    src: local('Times');
}
@font-face {
    font-family:myfont_3;
    src: local('Courier');
    unicode-range: u+69, u+6a,; /* 'i' and 'j' */
}

/* Test 4: Comma-separated list with a leading comma, which is invalid. */
@font-face {
    font-family:myfont_4;
    src: local('Times');
}
@font-face {
    font-family:myfont_4;
    src: local('Courier');
    unicode-range: , u+69, u+6a; /* 'i' and 'j' */
}

/* Test 5: Space-separated list, which is invalid. */
@font-face {
    font-family:myfont_5;
    src: local('Times');
}
@font-face {
    font-family:myfont_5;
    src: local('Courier');
    unicode-range: u+69 u+6a ; /* 'i' and 'j' */
}

/* Test 6: Slash-separated list, which is invalid. */
@font-face {
    font-family:myfont_6;
    src: local('Times');
}
@font-face {
    font-family:myfont_6;
    src: local('Courier');
    unicode-range: u+69/u+6a; /* 'i' and 'j' */
}

</style>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<div id="description"></div>
<div id="tests"></div>

<div id="console"></div>
<script>
description("unicode-range can have comma-separated multiple ranges. For each of the following pairs, the upper and the lower lines should have the same length on screen.");

var testsElement = document.getElementById("tests");
var testStrings = [
    "iiiiiiiiii",
    "jjjjjjjjjj",
    "kkkkkkkkkk",
    "llllllllll"
];
var expectedResults = [
    // Effective font family for "i", "j", "k", and "l"
    ["Courier", "Courier", "Times", "Times"],
    ["Courier", "Courier", "Times", "Courier"],
    ["Courier", "Courier", "Courier", "Courier"],
    ["Courier", "Courier", "Courier", "Courier"],
    ["Courier", "Courier", "Courier", "Courier"],
    ["Courier", "Courier", "Courier", "Courier"],
    ["Courier", "Courier", "Courier", "Courier"]
];

function createAndAppendSpan(id, subId, fontFamily)
{
    var span = document.createElement("span");
    span.id = id;
    span.className = "test";
    span.style.fontFamily = fontFamily;
    span.innerHTML = testStrings[subId];
    testsElement.appendChild(span);
    testsElement.appendChild(document.createTextNode(" " + id));
    testsElement.appendChild(document.createElement("br"));
}

for (var mainTestId = 0; mainTestId < expectedResults.length; mainTestId++) {
    for (var subTestId = 0; subTestId < testStrings.length; subTestId++) {
        var testId = "test_" + mainTestId + "_" + subTestId;
        var testFontFamily = "myfont_" + mainTestId;
        createAndAppendSpan(testId, subTestId, testFontFamily);

        var refId = "ref_" + mainTestId + "_" + subTestId;
        var refFontFamily = expectedResults[mainTestId][subTestId];
        createAndAppendSpan(refId, subTestId, refFontFamily);

        shouldBe("document.getElementById('" + testId + "').offsetWidth", "document.getElementById('" + refId + "').offsetWidth");
    }
    testsElement.appendChild(document.createElement("br"));
}
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>

