# Features covered: Namespace related DOM actions. # # This file contains a collection of tests for some namespace related # actions. # # domnamespace-1.*: misc tests # domnamespace-2.*: moving namespaced nodes from one document to another # # Copyright (c) 2002 Rolf Ade. # # RCS: @(#) $Id: domnamespace.test,v 1.6 2003/09/28 00:32:31 rolf Exp $ source [file join [file dir [info script]] loadtdom.tcl] test domnamespace-1.1 {multiple definition of the same namespace (same prefix/uri)} {need_i18n} { set ch [open [file join [pwd] [file dir [info script]] data/REC-xslt-19991116.xml]] fconfigure $ch -encoding iso8859-1 set doc [dom parse -channel $ch] set root [$doc documentElement] set nodes [$root selectNodes //e:element-syntax] $doc delete llength $nodes } {35} test domnamespace-1.2 {more than 128 different namespaces in one doc} { set doc [dom parse { }] $doc documentElement root set result [[$root firstChild] namespace] lappend result [[$root lastChild] namespace] $doc delete set result } {n0 n129} test domnamespace-2.1 {moving namespaced nodes between documents} { set doc1 [dom parse {}] set root1 [$doc1 documentElement] set doc2 [dom parse {}] set root2 [$doc2 documentElement] $root2 appendChild [$root1 firstChild] set result [$root2 asXML -indent none] $doc1 delete $doc2 delete set result } {} test domnamespace-2.2 {moving namespaced nodes between documents} { set doc1 [dom parse {}] set root1 [$doc1 documentElement] set doc2 [dom parse {}] set root2 [$doc2 documentElement] set node [$root1 removeChild [$root1 firstChild]] $root2 appendChild $node set result [$root2 asXML -indent none] $doc1 delete $doc2 delete set result } {} test domnamespace-2.3 {moving namespaced nodes between documents} { set doc1 [dom parse {}] set root1 [$doc1 documentElement] set doc2 [dom parse {}] set root2 [$doc2 documentElement] set node [$root1 removeChild [$root1 firstChild]] $root2 appendChild $node set result [$root2 asXML -indent none] $doc1 delete $doc2 delete set result } {} test domnamespace-2.4 {moving namespaced nodes between documents} { set doc1 [dom parse {}] set root1 [$doc1 documentElement] set doc2 [dom parse {}] set root2 [$doc2 documentElement] set node [$root1 removeChild [$root1 firstChild]] $root2 appendChild $node set result [$root2 asXML -indent none] $doc1 delete $doc2 delete set result } {} test domnamespace-2.5 {moving namespaced nodes between documents} { set doc1 [dom parse {}] set root1 [$doc1 documentElement] set doc2 [dom parse {}] set root2 [$doc2 documentElement] set node [$root1 removeChild [$root1 firstChild]] $root2 appendChild $node set result [llength [$root2 getElementsByTagNameNS "" *]] $doc1 delete $doc2 delete set result } {2} test domnamespace-2.6 {moving namespaced nodes between documents} { set doc1 [dom parse {}] set root1 [$doc1 documentElement] set doc2 [dom parse {}] set root2 [$doc2 documentElement] set node [$root1 removeChild [$root1 firstChild]] $root2 appendChild $node set result [$root2 asXML -indent none] $doc1 delete $doc2 delete set result } {} test domnamespace-2.7 {moving namespaced nodes between documents} { set doc1 [dom parse {}] set root1 [$doc1 documentElement] set doc2 [dom parse {}] set root2 [$doc2 documentElement] $root2 appendChild [[$root1 firstChild] cloneNode -deep] set result [$root2 asXML -indent none] $doc1 delete $doc2 delete set result } {} test domnamespace-2.8 {moving namespaced nodes between documents} { set doc1 [dom parse {}] set root1 [$doc1 documentElement] set doc2 [dom parse {}] set root2 [$doc2 documentElement] $root2 appendChild [$root1 firstChild] set result [$root2 asXML -indent none] $doc1 delete $doc2 delete set result } {} test domnamespace-2.9 {moving namespaced nodes between documents} { set doc1 [dom parse {}] set root1 [$doc1 documentElement] set doc2 [dom parse {}] set root2 [$doc2 documentElement] $root2 appendChild [$root1 firstChild] set result [$root2 asXML -indent none] $doc1 delete $doc2 delete set result } {} test domnamespace-2.10 {moving nodes with attributes between documents} { set doc1 [dom parse {}] set root1 [$doc1 documentElement] set doc2 [dom parse {}] set root2 [$doc2 documentElement] set node [$root1 removeChild [$root1 firstChild]] $root2 appendChild $node set result [$root2 asXML -indent none] $doc1 delete $doc2 delete set result } {} test domnamespace-2.11 {moving nodes with namespaced attributes between documents} { set doc1 [dom parse {}] set root1 [$doc1 documentElement] set doc2 [dom parse {}] set root2 [$doc2 documentElement] set node [$root1 removeChild [$root1 firstChild]] $root2 appendChild $node set result [$root2 asXML -indent none] $doc1 delete $doc2 delete set result } {} test domnamespace-2.11 {moving nodes with namespaced attributes between documents} { set doc1 [dom parse {}] set root1 [$doc1 documentElement] set doc2 [dom parse {}] set root2 [$doc2 documentElement] set node [$root1 removeChild [$root1 firstChild]] $root2 appendChild $node set result [$root2 asXML -indent none] $doc1 delete $doc2 delete set result } {} test domnamespace-2.12 {moving nodes with namespaced attributes between documents} { set doc1 [dom parse {}] set root1 [$doc1 documentElement] set doc2 [dom parse {}] set root2 [$doc2 documentElement] set node [$root1 removeChild [$root1 firstChild]] $root2 appendChild $node $root2 setAttributeNS "" "xmlns:p" "foo" set result [$root2 selectNodes {//@p:*}] $doc1 delete $doc2 delete set result } {{p:b c}} test domnamespace-2.13 {moving nodes with namespaced attributes between documents} { set doc1 [dom parse {}] set root1 [$doc1 documentElement] set doc2 [dom parse {}] set root2 [$doc2 documentElement] set node [$root1 removeChild [$root1 firstChild]] $root2 setAttributeNS "" "xmlns:p" "foo" $root2 appendChild $node set result [$root2 asXML -indent none] $doc1 delete $doc2 delete set result } {} test domnamespace-2.14 {moving nodes with namespaced attributes between documents} { set doc1 [dom parse {}] set root1 [$doc1 documentElement] set doc2 [dom parse {}] set root2 [$doc2 documentElement] set node [$root1 removeChild [$root1 firstChild]] [$root2 firstChild] appendChild $node set result [$root2 asXML -indent none] $doc1 delete $doc2 delete set result } {} test domnamespace-2.14 {moving nodes with namespaced attributes between documents} { set doc1 [dom parse {}] set root1 [$doc1 documentElement] set doc2 [dom parse {}] set root2 [$doc2 documentElement] set node [$root1 removeChild [$root1 firstChild]] [$root2 firstChild] appendChild $node set nodes [$doc2 getElementsByTagNameNS "NS1" *] catch {unset result} foreach node $nodes { lappend result [$node nodeName] } $doc1 delete $doc2 delete set result } {doc1elem a} # cleanup ::tcltest::cleanupTests return