<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<script>
description("This test makes sure that calling checkValidity() on a cloned node does not crash a Debug build. The test passes if there is no crash (and if you don't see any 'FAIL's)");

var element;
var element2;

function checkInputElement() {
    element = document.createElement("input");
    element.required = true;
    element.value = "hi"
    shouldBeTrue("element.checkValidity()");
    element2 = element.cloneNode();
    shouldBeTrue("element2.checkValidity()");
}

function checkDeepSelect() {
    element = document.createElement("select")
    element.innerHTML =   "<option>Volvo</option><option>Saab</option><option>Opel</option>";
    element.required=true;
    shouldBeTrue("element.checkValidity()");
    element2 = element.cloneNode(true);
    shouldBeTrue("element2.checkValidity()");
}

function checkShallowSelect() {
    element = document.createElement("select")
    element.innerHTML =   "<option>Volvo</option><option>Saab</option><option>Opel</option>";
    element.required = true;
    shouldBeTrue("element.checkValidity()");
    element2 = element.cloneNode();
    shouldBeFalse("element2.checkValidity()");
}

function checkTextArea() {
    element = document.createElement("textarea")
    element.required = true;
    element.checkValidity();
    element.value = "a";
    shouldBeTrue("element.checkValidity()");
    element2 = element.cloneNode();
    shouldBeEqualToString("element2.value", "a");
    shouldBeTrue("element2.checkValidity()");
    element2.value = element.value;
    shouldBeTrue("element2.checkValidity()");
}

checkInputElement();
checkDeepSelect();
checkShallowSelect();
checkTextArea();
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
