| /* |
| * Copyright 2017 Jacek Caban for CodeWeavers |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
| */ |
| |
| function test_input_selection() { |
| var input = document.createElement("input"); |
| input.type = "text"; |
| input.value = "test"; |
| document.body.appendChild(input); |
| |
| function test_range(start, end) { |
| ok(input.selectionStart === start, "input.selectionStart = " + input.selectionStart + " expected " + start); |
| ok(input.selectionEnd === end, "input.selectionEnd = " + input.selectionEnd + " expected " + end); |
| } |
| |
| test_range(0, 0); |
| |
| input.selectionStart = 2; |
| test_range(2, 2); |
| |
| input.selectionStart = -1; |
| test_range(0, 2); |
| |
| input.selectionStart = 10; |
| test_range(4, 4); |
| |
| input.selectionEnd = 2; |
| test_range(2, 2); |
| |
| input.selectionEnd = -1; |
| test_range(0, 0); |
| |
| input.selectionEnd = 10; |
| test_range(0, 4); |
| |
| input.setSelectionRange(2, 3); |
| test_range(2, 3); |
| |
| input.setSelectionRange(-1, 10); |
| test_range(0, 4); |
| |
| input.setSelectionRange(3, 3); |
| test_range(3, 3); |
| |
| next_test(); |
| } |
| |
| function test_textContent() { |
| var text = document.createTextNode("test"); |
| ok(text.textContent === "test", "text.textContent = " + text.textContent); |
| |
| var div = document.createElement("div"); |
| document.body.appendChild(div); |
| div.innerHTML = "abc<script>/* */</script><div>text</div>"; |
| ok(div.textContent === "abc/* */text", "div.textContent = " + div.textContent); |
| |
| div.textContent = "test"; |
| ok(div.textContent === "test", "div.textContent = " + div.textContent); |
| ok(div.childNodes.length === 1, "div.childNodes.length = " + div.childNodes.length); |
| ok(div.firstChild.textContent === "test", "div.firstChild.textContent = " + div.firstChild.textContent); |
| |
| div.textContent = ""; |
| ok(div.textContent === "", "div.textContent = " + div.textContent); |
| ok(div.childNodes.length === 0, "div.childNodes.length = " + div.childNodes.length); |
| |
| ok(document.textContent === null, "document.textContent = " + document.textContent); |
| |
| next_test(); |
| } |
| |
| function test_ElementTraversal() { |
| var div = document.createElement("div"); |
| div.innerHTML = "abc<b>bold</b><script>/* */<script><div>text</div>def"; |
| ok(div.firstElementChild.outerHTML === "<b>bold</b>", |
| "div.firstElementChild.outerHTML = " + div.firstElementChild.outerHTML); |
| |
| div.innerHTML = "abc"; |
| ok(div.firstElementChild === null, "div.firstElementChild = " + div.firstElementChild); |
| |
| ok(!("firstElementChild" in document), "firstElementChild found in document"); |
| |
| next_test(); |
| } |
| |
| function test_head() { |
| var h = document.head; |
| ok(h.tagName === "HEAD", "h.tagName = " + h.tagName); |
| ok(h === document.getElementsByTagName("head")[0], "unexpected head element"); |
| |
| next_test(); |
| } |
| |
| function test_getElementsByClassName() { |
| var elems; |
| |
| document.body.innerHTML = '<div class="class1">' |
| + '<div class="class1"></div>' |
| + '<a id="class1" class="class2"></a>' |
| + '</div>' |
| + '<script class="class1"></script>'; |
| |
| elems = document.getElementsByClassName("class1"); |
| ok(elems.length === 3, "elems.length = " + elems.length); |
| ok(elems[0].tagName === "DIV", "elems[0].tagName = " + elems[0].tagName); |
| ok(elems[1].tagName === "DIV", "elems[1].tagName = " + elems[1].tagName); |
| ok(elems[2].tagName === "SCRIPT", "elems[2].tagName = " + elems[2].tagName); |
| |
| elems = document.getElementsByClassName("class2"); |
| ok(elems.length === 1, "elems.length = " + elems.length); |
| ok(elems[0].tagName === "A", "elems[0].tagName = " + elems[0].tagName); |
| |
| elems = document.getElementsByClassName("classnotfound"); |
| ok(elems.length == 0, "elems.length = " + elems.length); |
| |
| next_test(); |
| } |
| |
| var tests = [ |
| test_input_selection, |
| test_textContent, |
| test_ElementTraversal, |
| test_getElementsByClassName, |
| test_head |
| ]; |