Remove DOM utilities, put temporary to JS to keep compatibility
This commit is contained in:
@@ -1,33 +0,0 @@
|
||||
package test.browser
|
||||
|
||||
import kotlin.dom.*
|
||||
import kotlin.browser.*
|
||||
|
||||
import kotlin.test.*
|
||||
import org.junit.Test as test
|
||||
|
||||
class BrowserTest {
|
||||
|
||||
@test fun accessBrowserDOM() {
|
||||
registerBrowserPage()
|
||||
|
||||
val h1 = document["h1"].first()
|
||||
assertEquals("Hello World!", h1.textContent)
|
||||
}
|
||||
|
||||
protected fun registerBrowserPage() {
|
||||
// lets simulate being a browser registering its DOM
|
||||
val doc = createDocument()
|
||||
doc.addElement("html") {
|
||||
addElement("body") {
|
||||
addElement("h1") {
|
||||
addText("Hello World!")
|
||||
}
|
||||
addElement("p") {
|
||||
addText("This is some text content")
|
||||
}
|
||||
}
|
||||
}
|
||||
document = doc
|
||||
}
|
||||
}
|
||||
@@ -1,130 +0,0 @@
|
||||
package test.dom
|
||||
|
||||
import kotlin.dom.*
|
||||
import kotlin.test.*
|
||||
import org.w3c.dom.*
|
||||
import org.junit.Test as test
|
||||
|
||||
class DomBuilderTest() {
|
||||
|
||||
@test fun buildDocument() {
|
||||
var doc = createDocument()
|
||||
|
||||
assertTrue {
|
||||
doc["grandchild"].isEmpty()
|
||||
}
|
||||
|
||||
doc.addElement("foo") {
|
||||
id = "id1"
|
||||
style = "bold"
|
||||
classes = "bar"
|
||||
addElement("child") {
|
||||
id = "id2"
|
||||
classes = "another"
|
||||
addElement("grandChild") {
|
||||
id = "id3"
|
||||
classes = " bar tiny"
|
||||
addText("Hello World!")
|
||||
// TODO support neater syntax sugar for adding text?
|
||||
// += "Hello World!"
|
||||
}
|
||||
addElement("grandChild2") {
|
||||
id = "id3"
|
||||
classes = "tiny thing bar "
|
||||
addText("Hello World!")
|
||||
// TODO support neater syntax sugar for adding text?
|
||||
// += "Hello World!"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// test css selections on document
|
||||
assertEquals(0, doc[".doesNotExist"].size())
|
||||
assertEquals(1, doc[".another"].size())
|
||||
assertEquals(3, doc[".bar"].size())
|
||||
assertEquals(2, doc[".tiny"].size())
|
||||
|
||||
// element tag selections
|
||||
assertEquals(0, doc["doesNotExist"].size())
|
||||
assertEquals(1, doc["foo"].size())
|
||||
assertEquals(1, doc["child"].size())
|
||||
assertEquals(1, doc["grandChild"].size())
|
||||
|
||||
// id selections
|
||||
assertEquals(1, doc["#id1"].size())
|
||||
assertEquals(1, doc["#id2"].size())
|
||||
assertEquals(1, doc["#id3"].size())
|
||||
|
||||
val root = doc.documentElement
|
||||
if (root == null) {
|
||||
fail("No root!")
|
||||
} else {
|
||||
assertTrue {
|
||||
root.hasClass("bar")
|
||||
}
|
||||
|
||||
// test css selections on element
|
||||
assertEquals(0, root[".doesNotExist"].size())
|
||||
assertEquals(1, root[".another"].size())
|
||||
assertEquals(2, root[".bar"].size())
|
||||
assertEquals(2, root[".tiny"].size())
|
||||
|
||||
// element tag selections
|
||||
assertEquals(0, root["doesNotExist"].size())
|
||||
assertEquals(0, root["foo"].size())
|
||||
assertEquals(1, root["child"].size())
|
||||
assertEquals(1, root["grandChild"].size())
|
||||
|
||||
// id selections
|
||||
assertEquals(1, root["#id1"].size())
|
||||
assertEquals(1, root["#id2"].size())
|
||||
assertEquals(1, root["#id3"].size())
|
||||
|
||||
// iterating through next element siblings
|
||||
for (e in root.nextElements()) {
|
||||
println("found element: $e")
|
||||
}
|
||||
|
||||
}
|
||||
val grandChild = doc["grandChild"].firstOrNull()
|
||||
if (grandChild != null) {
|
||||
assertEquals("Hello World!", grandChild.textContent)
|
||||
assertEquals(" bar tiny", grandChild.attribute("class"))
|
||||
|
||||
// test the classSet
|
||||
val classSet = grandChild.classSet
|
||||
|
||||
assertTrue(classSet.contains("bar"))
|
||||
assertTrue(classSet.contains("tiny"))
|
||||
assertTrue(classSet.size() == 2 )
|
||||
assertFalse(classSet.contains("doesNotExist"))
|
||||
|
||||
// lets add a new class and some existing classes
|
||||
grandChild.addClass("bar")
|
||||
grandChild.addClass("newThingy")
|
||||
assertEquals("bar tiny newThingy", grandChild.classes)
|
||||
|
||||
// remove
|
||||
grandChild.removeClass("bar")
|
||||
assertEquals("tiny newThingy", grandChild.classes)
|
||||
|
||||
grandChild.removeClass("tiny")
|
||||
assertEquals("newThingy", grandChild.classes)
|
||||
|
||||
} else {
|
||||
fail("Not an Element $grandChild")
|
||||
}
|
||||
val child = doc["child"].firstOrNull()
|
||||
if (child != null) {
|
||||
val gc1 = child.childElements("grandChild")
|
||||
assertEquals(1, gc1.size(), "Expected a single child but found $gc1")
|
||||
val gc2 = child.childElements("grandChild2")
|
||||
assertEquals(1, gc2.size(), "Expected a single child but found $gc2")
|
||||
} else {
|
||||
fail("No child found!")
|
||||
}
|
||||
val children = doc.documentElement.children()
|
||||
assertEquals(1, children.size())
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
package test.dom
|
||||
|
||||
import kotlin.*
|
||||
import kotlin.dom.*
|
||||
import kotlin.test.*
|
||||
import org.w3c.dom.*
|
||||
import org.junit.Test as test
|
||||
|
||||
class DomTest {
|
||||
|
||||
@test fun testCreateDocument() {
|
||||
var doc = createDocument()
|
||||
assertNotNull(doc, "Should have created a document")
|
||||
|
||||
val e = doc.createElement("foo")!!
|
||||
assertCssClass(e, "")
|
||||
|
||||
// now lets update the cssClass property
|
||||
e.classes = "foo"
|
||||
assertCssClass(e, "foo")
|
||||
|
||||
// now using the attribute directly
|
||||
e.setAttribute("class", "bar")
|
||||
assertCssClass(e, "bar")
|
||||
|
||||
doc + e
|
||||
println("document ${doc.toXmlString()}")
|
||||
}
|
||||
|
||||
@test fun addText() {
|
||||
var doc = createDocument()
|
||||
assertNotNull(doc, "Should have created a document")
|
||||
|
||||
val e = doc.createElement("foo")!!
|
||||
e + "hello"
|
||||
|
||||
val xml = e.toXmlString()
|
||||
println("element after text ${xml}")
|
||||
|
||||
assertEquals("hello", e.textContent)
|
||||
|
||||
}
|
||||
|
||||
|
||||
fun assertCssClass(e: Element, value: String?): Unit {
|
||||
val cl = e.classes
|
||||
val cl2 = e.getAttribute("class")
|
||||
val xml = e.toXmlString()
|
||||
println("element ${xml} has cssClass `${cl}` class attr `${cl2}`")
|
||||
|
||||
assertEquals(value, cl, "value of element.cssClass")
|
||||
assertEquals(value, cl2, "value of element.getAttribute(\"class\")")
|
||||
}
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
package test.dom
|
||||
|
||||
import kotlin.dom.*
|
||||
import kotlin.test.*
|
||||
import org.w3c.dom.*
|
||||
import org.junit.Test as test
|
||||
|
||||
class NextSiblingTest {
|
||||
|
||||
@test fun nextSibling() {
|
||||
val doc = createDocument()
|
||||
|
||||
doc.addElement("foo") {
|
||||
id = "id1"
|
||||
style = "bold"
|
||||
classes = "bar"
|
||||
addElement("child") {
|
||||
id = "id2"
|
||||
classes = "another"
|
||||
addElement("grandChild") {
|
||||
id = "id3"
|
||||
classes = " bar tiny"
|
||||
addText("Hello World!")
|
||||
// TODO support neater syntax sugar for adding text?
|
||||
// += "Hello World!"
|
||||
}
|
||||
addElement("grandChild2") {
|
||||
id = "id4"
|
||||
classes = "tiny thing bar "
|
||||
addText("Hello World!")
|
||||
// TODO support neater syntax sugar for adding text?
|
||||
// += "Hello World!"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
println("builder document: ${doc.toXmlString()}")
|
||||
|
||||
|
||||
val elems = doc["#id3"]
|
||||
val element = elems.first()
|
||||
val elements = element.nextElements()
|
||||
val nodes = element.nextSiblings().toList()
|
||||
|
||||
assertEquals(1, elements.size())
|
||||
assertEquals(1, nodes.size())
|
||||
}
|
||||
}
|
||||
@@ -1,155 +0,0 @@
|
||||
package test.js
|
||||
|
||||
import kotlin.*
|
||||
import kotlin.browser.*
|
||||
import kotlin.dom.*
|
||||
import kotlin.test.*
|
||||
import org.w3c.dom.*
|
||||
import org.junit.Test as test
|
||||
|
||||
class JsDomTest {
|
||||
|
||||
@test fun testCreateDocument() {
|
||||
var doc = document
|
||||
assertNotNull(doc, "Should have created a document")
|
||||
|
||||
val e = doc.createElement("foo")!!
|
||||
assertCssClass(e, "")
|
||||
|
||||
// now lets update the cssClass property
|
||||
e.classes = "foo"
|
||||
assertCssClass(e, "foo")
|
||||
|
||||
// now using the attribute directly
|
||||
e.setAttribute("class", "bar")
|
||||
assertCssClass(e, "bar")
|
||||
}
|
||||
|
||||
@test fun addText() {
|
||||
var doc = document
|
||||
assertNotNull(doc, "Should have created a document")
|
||||
|
||||
val e = doc.createElement("foo")!!
|
||||
e + "hello"
|
||||
|
||||
val xml = e.toXmlString()
|
||||
println("element after text ${xml}")
|
||||
|
||||
assertEquals("hello", e.textContent)
|
||||
}
|
||||
|
||||
@test fun testAddClassMissing() {
|
||||
val e = document.createElement("e")!!
|
||||
assertNotNull(e)
|
||||
|
||||
e.classes = "class1"
|
||||
|
||||
e.addClass("class1", "class2")
|
||||
|
||||
assertEquals("class1 class2", e.classes)
|
||||
}
|
||||
|
||||
@test fun testAddClassPresent() {
|
||||
val e = document.createElement("e")!!
|
||||
assertNotNull(e)
|
||||
|
||||
e.classes = "class2 class1"
|
||||
|
||||
e.addClass("class1", "class2")
|
||||
|
||||
assertEquals("class2 class1", e.classes)
|
||||
}
|
||||
|
||||
@test fun testAddClassUndefinedClasses() {
|
||||
val e = document.createElement("e")!!
|
||||
e.addClass("class1")
|
||||
assertEquals("class1", e.classes)
|
||||
}
|
||||
|
||||
@test fun testRemoveClassMissing() {
|
||||
val e = document.createElement("e")!!
|
||||
assertNotNull(e)
|
||||
|
||||
e.classes = "class2 class1"
|
||||
|
||||
e.removeClass("class3")
|
||||
|
||||
assertEquals("class2 class1", e.classes)
|
||||
}
|
||||
|
||||
@test fun testRemoveClassPresent1() {
|
||||
val e = document.createElement("e")!!
|
||||
assertNotNull(e)
|
||||
|
||||
e.classes = "class2 class1"
|
||||
|
||||
e.removeClass("class2")
|
||||
|
||||
assertEquals("class1", e.classes)
|
||||
}
|
||||
|
||||
@test fun testRemoveClassPresent2() {
|
||||
val e = document.createElement("e")!!
|
||||
assertNotNull(e)
|
||||
|
||||
e.classes = "class2 class1"
|
||||
|
||||
e.removeClass("class1")
|
||||
|
||||
assertEquals("class2", e.classes)
|
||||
}
|
||||
|
||||
@test fun testRemoveClassPresent3() {
|
||||
val e = document.createElement("e")!!
|
||||
assertNotNull(e)
|
||||
|
||||
e.classes = "class2 class1 class3"
|
||||
|
||||
e.removeClass("class1")
|
||||
|
||||
assertEquals("class2 class3", e.classes)
|
||||
}
|
||||
|
||||
@test fun testRemoveClassUndefinedClasses() {
|
||||
val e = document.createElement("e")!!
|
||||
e.removeClass("class1")
|
||||
assertEquals("", e.classes)
|
||||
}
|
||||
|
||||
@test fun testRemoveFromParent() {
|
||||
val doc = document
|
||||
|
||||
val parent = doc.createElement("pp")
|
||||
val child = doc.createElement("cc")
|
||||
parent.appendChild(child)
|
||||
|
||||
assertEquals(parent, child.parentNode)
|
||||
assertEquals(listOf(child), parent.childNodes.asList())
|
||||
|
||||
child.removeFromParent()
|
||||
|
||||
assertNull(child.parentNode)
|
||||
assertEquals(emptyList<Node>(), parent.childNodes.asList())
|
||||
|
||||
child.removeFromParent()
|
||||
assertNull(child.parentNode)
|
||||
}
|
||||
|
||||
@test fun testRemoveFromParentOrphanNode() {
|
||||
val child = document.createElement("cc")
|
||||
|
||||
child.removeFromParent()
|
||||
|
||||
assertNull(child.parentNode)
|
||||
}
|
||||
|
||||
private fun assertCssClass(e: Element, value: String?): Unit {
|
||||
val cl = e.classes
|
||||
val cl2 = e.getAttribute("class") ?: ""
|
||||
val xml = e.toXmlString()
|
||||
println("element ${xml} has cssClass `${cl}` class attr `${cl2}`")
|
||||
|
||||
assertEquals(value, cl, "value of element.cssClass")
|
||||
assertEquals(value, cl2, "value of element.getAttribute(\"class\")")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user