added more working DOM test cases for JS
This commit is contained in:
@@ -11,6 +11,7 @@ native public val Node.outerHTML: String
|
|||||||
get() = js.noImpl
|
get() = js.noImpl
|
||||||
|
|
||||||
/** Converts the node to an XML String */
|
/** Converts the node to an XML String */
|
||||||
public fun Node.toXmlString(xmlDeclaration: Boolean = false): String {
|
public fun Node.toXmlString(): String = this.outerHTML
|
||||||
return this.outerHTML
|
|
||||||
}
|
/** Converts the node to an XML String */
|
||||||
|
public fun Node.toXmlString(xmlDeclaration: Boolean): String = this.outerHTML
|
||||||
|
|||||||
@@ -24,8 +24,9 @@ public class StdLibTestToJSTest extends StdLibTestSupport {
|
|||||||
public void testGenerateTestCase() throws Exception {
|
public void testGenerateTestCase() throws Exception {
|
||||||
generateJavaScriptFiles(EcmaVersion.all(),
|
generateJavaScriptFiles(EcmaVersion.all(),
|
||||||
"libraries/stdlib/test",
|
"libraries/stdlib/test",
|
||||||
//"dom/DomTest.kt",
|
"dom/DomTest.kt",
|
||||||
"js/MapTest.kt",
|
"js/MapTest.kt",
|
||||||
|
"js/JsDomTest.kt",
|
||||||
"ListTest.kt",
|
"ListTest.kt",
|
||||||
"StringTest.kt");
|
"StringTest.kt");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,6 +92,7 @@ public abstract class Config {
|
|||||||
*/
|
*/
|
||||||
@NotNull
|
@NotNull
|
||||||
public static final List<String> LIB_FILE_NAMES_DEPENDENT_ON_STDLIB = Arrays.asList(
|
public static final List<String> LIB_FILE_NAMES_DEPENDENT_ON_STDLIB = Arrays.asList(
|
||||||
|
"/stdlib/dom.kt",
|
||||||
"/stdlib/jutil.kt",
|
"/stdlib/jutil.kt",
|
||||||
"/stdlib/JUMaps.kt",
|
"/stdlib/JUMaps.kt",
|
||||||
"/stdlib/test.kt",
|
"/stdlib/test.kt",
|
||||||
|
|||||||
@@ -311,6 +311,25 @@ val NodeList?.last : Node?
|
|||||||
get() = this.tail
|
get() = this.tail
|
||||||
|
|
||||||
|
|
||||||
|
/** Converts the node list to an XML String */
|
||||||
|
fun NodeList?.toXmlString(xmlDeclaration: Boolean = false): String {
|
||||||
|
return if (this == null)
|
||||||
|
"" else {
|
||||||
|
nodesToXmlString(this.toList(), xmlDeclaration)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Converts the collection of nodes to an XML String */
|
||||||
|
public fun nodesToXmlString(nodes: java.lang.Iterable<Node>, xmlDeclaration: Boolean = false): String {
|
||||||
|
// TODO this should work...
|
||||||
|
// return this.map<Node,String>{it.toXmlString()}.makeString("")
|
||||||
|
val builder = StringBuilder()
|
||||||
|
for (n in nodes) {
|
||||||
|
builder.append(n.toXmlString(xmlDeclaration))
|
||||||
|
}
|
||||||
|
return builder.toString().sure()
|
||||||
|
}
|
||||||
|
|
||||||
// Syntax sugar
|
// Syntax sugar
|
||||||
|
|
||||||
inline fun Node.plus(child: Node?): Node {
|
inline fun Node.plus(child: Node?): Node {
|
||||||
@@ -381,7 +400,7 @@ Adds a newly created text node to an element which either already has an owner D
|
|||||||
*/
|
*/
|
||||||
fun Element.addText(text: String?, doc: Document? = null): Element {
|
fun Element.addText(text: String?, doc: Document? = null): Element {
|
||||||
if (text != null) {
|
if (text != null) {
|
||||||
val child = ownerDocument(doc).createTextNode(text)
|
val child = this.ownerDocument(doc).createTextNode(text)
|
||||||
this.appendChild(child)
|
this.appendChild(child)
|
||||||
}
|
}
|
||||||
return this
|
return this
|
||||||
|
|||||||
@@ -153,13 +153,6 @@ fun Element.removeClass(cssClass: String): Boolean {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Converts the node list to an XML String */
|
|
||||||
fun NodeList?.toXmlString(xmlDeclaration: Boolean = false): String {
|
|
||||||
return if (this == null)
|
|
||||||
"" else {
|
|
||||||
nodesToXmlString(this.toList(), xmlDeclaration)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Creates a new document with the given document builder*/
|
/** Creates a new document with the given document builder*/
|
||||||
public fun createDocument(builder: DocumentBuilder): Document {
|
public fun createDocument(builder: DocumentBuilder): Document {
|
||||||
@@ -225,7 +218,10 @@ public fun createTransformer(source: Source? = null, factory: TransformerFactory
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Converts the node to an XML String */
|
/** Converts the node to an XML String */
|
||||||
public fun Node.toXmlString(xmlDeclaration: Boolean = false): String {
|
public fun Node.toXmlString(): String = toXmlString(false)
|
||||||
|
|
||||||
|
/** Converts the node to an XML String */
|
||||||
|
public fun Node.toXmlString(xmlDeclaration: Boolean): String {
|
||||||
val writer = StringWriter()
|
val writer = StringWriter()
|
||||||
writeXmlString(writer, xmlDeclaration)
|
writeXmlString(writer, xmlDeclaration)
|
||||||
return writer.toString().sure()
|
return writer.toString().sure()
|
||||||
@@ -237,14 +233,3 @@ public fun Node.writeXmlString(writer: Writer, xmlDeclaration: Boolean): Unit {
|
|||||||
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, if (xmlDeclaration) "no" else "yes")
|
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, if (xmlDeclaration) "no" else "yes")
|
||||||
transformer.transform(DOMSource(this), StreamResult(writer))
|
transformer.transform(DOMSource(this), StreamResult(writer))
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Converts the collection of nodes to an XML String */
|
|
||||||
public fun nodesToXmlString(nodes: java.lang.Iterable<Node>, xmlDeclaration: Boolean = false): String {
|
|
||||||
// TODO this should work...
|
|
||||||
// return this.map<Node,String>{it.toXmlString()}.makeString("")
|
|
||||||
val builder = StringBuilder()
|
|
||||||
for (n in nodes) {
|
|
||||||
builder.append(n.toXmlString(xmlDeclaration))
|
|
||||||
}
|
|
||||||
return builder.toString().sure()
|
|
||||||
}
|
|
||||||
@@ -34,7 +34,8 @@ class DomTest {
|
|||||||
val e = doc.createElement("foo")!!
|
val e = doc.createElement("foo")!!
|
||||||
e + "hello"
|
e + "hello"
|
||||||
|
|
||||||
println("element after text ${e.toXmlString()}")
|
val xml = e.toXmlString()
|
||||||
|
println("element after text ${xml}")
|
||||||
|
|
||||||
assertEquals("hello", e.text)
|
assertEquals("hello", e.text)
|
||||||
|
|
||||||
@@ -44,7 +45,8 @@ class DomTest {
|
|||||||
fun assertCssClass(e: Element, value: String?): Unit {
|
fun assertCssClass(e: Element, value: String?): Unit {
|
||||||
val cl = e.classes
|
val cl = e.classes
|
||||||
val cl2 = e.getAttribute("class")
|
val cl2 = e.getAttribute("class")
|
||||||
println("element ${e.toXmlString()} has cssClass `${cl}` class attr `${cl2}`")
|
val xml = e.toXmlString()
|
||||||
|
println("element ${xml} has cssClass `${cl}` class attr `${cl2}`")
|
||||||
|
|
||||||
assertEquals(value, cl, "value of element.cssClass")
|
assertEquals(value, cl, "value of element.cssClass")
|
||||||
assertEquals(value, cl2, "value of element.getAttribute(\"class\")")
|
assertEquals(value, cl2, "value of element.getAttribute(\"class\")")
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
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.text)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
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