# 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