<!doctype html>
<meta charset="utf-8">
<title>tHead tests</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<table id="t">
<caption id="tcaption"></caption><thead id="thead1"></thead><thead id="thead2"></thead><thead id="thead3"></thead><tbody id="tbody1"></tbody><tbody id="tbody2"></tbody><tfoot id="tfoot"></tfoot>
</table>
<table>
<thead id="t2thead">
<td>
<table id="t2">
</table>
</table>
<script>
test(function() {
    var t = document.getElementById("t");
    var thead1 = document.getElementById("thead1");

    assert_equals(t.tHead, thead1);

    var thead2 = document.getElementById("thead2");
    t.tHead = null;

    assert_equals(t.tHead, thead2);

    var thead3 = document.getElementById("thead3");
    t.deleteTHead();

    assert_equals(t.tHead, thead3);

    var thead = t.createTHead();
    assert_equals(t.tHead, thead);
    assert_equals(thead, thead3);

    t.deleteTHead();
    assert_equals(t.tHead, null);

    var tcaption = document.getElementById("tcaption");
    var tbody1 = document.getElementById("tbody1");

    thead = t.createTHead();
    assert_equals(t.tHead, thead);

    assert_equals(t.tHead.previousSibling, tcaption);
    assert_equals(t.tHead.nextSibling, tbody1);

    assert_throws_js(TypeError, function(){
        t.tHead = document.createElement("div");
    });

    assert_throws_dom("HierarchyRequestError", function(){
        t.tHead = document.createElement("tbody");
    });

});

test(function() {
    var t2 = document.getElementById("t2");
    var t2thead = document.getElementById("t2thead");

    assert_throws_dom("HierarchyRequestError", function() {
        t2.tHead = t2thead;
    });
});

test(function () {
    var table = document.createElementNS("http://www.w3.org/1999/xhtml", "foo:table")
    var thead = table.createTHead();

    assert_equals(table.tHead, thead);
    assert_equals(thead.prefix, null);
});
</script>
