<!DOCTYPE html>
<html><head>
        <title>getElementsByClassName</title>
        <meta content="move item in collection order" name="description">
    <link href="https://dom.spec.whatwg.org/#dom-document-getelementsbyclassname" rel="help">
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
</head>
    <body>
        <div id="log"></div>
        <div>
            <div>
                <a class="text link" href="#foo">test link #foo</a>
            </div>
            <b class="text">text</b>
        </div>
        <table>
            <caption class="text caption">text caption</caption>
            <thead>
                <tr>
                    <td class="TEXT head">TEXT head</td>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td class="td text1">td text1</td>
                </tr>
                <tr>
                    <td class="td text">td text</td>
                </tr>
                <tr>
                    <td class="td te xt">td te xt</td>
                </tr>
            </tbody>
            <tfoot>
                <tr>
                    <td class="TEXT foot">TEXT foot</td>
                </tr>
            </tfoot>
        </table>
        <div class="xt te">xt te</div>

        <script type="text/javascript">
            test(function()
            {
                var collection = document.getElementsByClassName("text");
                assert_equals(collection.length, 4);
                var boldText = document.getElementsByTagName("b")[0];
                document.getElementsByTagName("table")[0].tBodies[0].rows[0].cells[0].appendChild(boldText);

                assert_equals(collection.length, 4);
                assert_equals(collection[0].parentNode.nodeName, "DIV");
                assert_equals(collection[1].parentNode.nodeName, "TABLE");
                assert_equals(collection[2].parentNode.nodeName, "TD");
                assert_equals(collection[3].parentNode.nodeName, "TR");
            }, "move item in collection order");
        </script>
</body></html>
