<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style>
        ol { margin: 0; }
        .lower-armenian { list-style-type: lower-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 Lower Armenian</h1>
    <div id="description">This test was derived from Richard Ishida's test "lower-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/16/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>lower-armenian</h2>
        <ol class="lower-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="lower-armenian" start="43">
            <li>խգ</li>
        </ol>
        <ol class="lower-armenian" start="77">
            <li>հէ</li>
        </ol>
        <ol class="lower-armenian" start="80">
            <li>ձ</li>
        </ol>
        <ol class="lower-armenian" start="99">
            <li>ղթ</li>
            <li>ճ</li>
            <li>ճա</li>
        </ol>
        <ol class="lower-armenian" start="222">
            <li>միբ</li>
        </ol>
        <ol class="lower-armenian" start="540">
            <li>շխ</li>
        </ol>
        <ol class="lower-armenian" start="999">
            <li>ջղթ</li>
            <li>ռ</li>
        </ol>
        <ol class="lower-armenian" start="1005">
            <li>ռե</li>
        </ol>
        <ol class="lower-armenian" start="1060">
            <li>ռկ</li>
        </ol>
        <ol class="lower-armenian" start="1065">
            <li>ռկե</li>
        </ol>
        <ol class="lower-armenian" start="1800">
            <li>ռպ</li>
        </ol>
        <ol class="lower-armenian" start="1860">
            <li>ռպկ</li>
        </ol>
        <ol class="lower-armenian" start="1865">
            <li>ռպկե</li>
        </ol>
        <ol class="lower-armenian" start="5865">
            <li>րպկե</li>
        </ol>
        <ol class="lower-armenian" start="7005">
            <li>ւե</li>
        </ol>
        <ol class="lower-armenian" start="7800">
            <li>ւպ</li>
        </ol>
        <ol class="lower-armenian" start="7865">
            <li>ւպկե</li>
        </ol>
        <ol class="lower-armenian" start="9999">
            <li>քջղթ</li>
        </ol>
    </div>
</body>
</html>
