<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style>
        ol { margin: 0; }
        .upper-armenian { list-style-type: upper-armenian; }
    </style>
    <script src="resources/dump-list.js"></script>
    <script>
        function runTest()
        {
            if (!window.testRunner)
                return;
                
            testRunner.dumpAsText();
            filterListsWithReplacement(document.querySelectorAll(".test ol"), testListItemMarkerEqualsListItemText);
            document.body.removeChild(document.getElementById("description")); // Remove description when running in DRT.
        }
        window.onload = runTest;
    </script>
</head>
<body>
    <h1>CSS3 Upper Armenian</h1>
    <div id="description">This test was derived from Richard Ishida's test "upper-armenian, up to 9,999" listed at <a href="http://www.w3.org/International/tests/tests-html-css/list-lists">http://www.w3.org/International/tests/tests-html-css/list-lists</a> (last updated 04/12/2010) and as it appeared when accessed on 11/17/2010. This test PASSED if the list item matches its bullet for every list item (below). 
    The test was updated under https://bugs.webkit.org/show_bug.cgi?id=81447 to reflect the revised rendering of numbers 7000-7999 which now begin with Ւ rather than ՈՒ.
    <p>Distributed under both the <a href="http://www.w3.org/Consortium/Legal/2008/04-testsuite-license">W3C Test Suite License</a> and the <a href="http://www.w3.org/Consortium/Legal/2008/03-bsd-license">W3C 3-clause BSD License</a>. To contribute to a W3C Test Suite, see the <a href="http://www.w3.org/2004/10/27-testcases">policies and contribution forms</a>.</p>
    </div>
    <div class="test">
        <h2>upper-armenian</h2>
        <ol class="upper-armenian">
            <li>Ա</li>
            <li>Բ</li>
            <li>Գ</li>
            <li>Դ</li>
            <li>Ե</li>
            <li>Զ</li>
            <li>Է</li>
            <li>Ը</li>
            <li>Թ</li>
            <li>Ժ</li>
            <li>ԺԱ</li>
            <li>ԺԲ</li>
        </ol>
        <ol class="upper-armenian" start="43">
            <li>ԽԳ</li>
        </ol>
        <ol class="upper-armenian" start="77">
            <li>ՀԷ</li>
        </ol>
        <ol class="upper-armenian" start="80">
            <li>Ձ</li>
        </ol>
        <ol class="upper-armenian" start="99">
            <li>ՂԹ</li>
            <li>Ճ</li>
            <li>ՃԱ</li>
        </ol>
        <ol class="upper-armenian" start="222">
            <li>ՄԻԲ</li>
        </ol>
        <ol class="upper-armenian" start="540">
            <li>ՇԽ</li>
        </ol>
        <ol class="upper-armenian" start="999">
            <li>ՋՂԹ</li>
            <li>Ռ</li>
        </ol>
        <ol class="upper-armenian" start="1005">
            <li>ՌԵ</li>
        </ol>
        <ol class="upper-armenian" start="1060">
            <li>ՌԿ</li>
        </ol>
        <ol class="upper-armenian" start="1065">
            <li>ՌԿԵ</li>
        </ol>
        <ol class="upper-armenian" start="1800">
            <li>ՌՊ</li>
        </ol>
        <ol class="upper-armenian" start="1860">
            <li>ՌՊԿ</li>
        </ol>
        <ol class="upper-armenian" start="1865">
            <li>ՌՊԿԵ</li>
        </ol>
        <ol class="upper-armenian" start="5865">
            <li>ՐՊԿԵ</li>
        </ol>
        <ol class="upper-armenian" start="7005">
            <li>ՒԵ</li>
        </ol>
        <ol class="upper-armenian" start="7800">
            <li>ՒՊ</li>
        </ol>
        <ol class="upper-armenian" start="7865">
            <li>ՒՊԿԵ</li>
        </ol>
        <ol class="upper-armenian" start="9999">
            <li>ՔՋՂԹ</li>
        </ol>
    </div>
</body>
</html>
