# Features covered: XML Namespaces # # This file contains a collection of tests for the TclXML parser. # This file tests the parser's performance on XML namespaces. # Sourcing this file into Tcl runs the tests and generates output # for errors. No output means no errors were found. # # Copyright (c) 2000 Zveno Pty Ltd. # # $Id: namespace.test,v 1.2 2001/02/06 07:29:51 doss Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] } if { ![llength [info commands ::xml::parser]] } { catch {puts stderr "You havent loaded a valid parser class before running this test"} return } proc keysort args { array set keyvalue $args set result {} foreach key [lsort [array names keyvalue]] { lappend result $key $keyvalue($key) } return $result } catch {unset result} catch {unset nsdecls} proc EStart {tag attlist args} { global result nsdecls array set extra $args catch {eval lappend nsdecls $extra(-namespacedecls)} if {[info exists extra(-namespace)]} { lappend result $extra(-namespace)^$tag } else { lappend result $tag } } test ns-1.1 {Namespace declaration} { set ::result {} set ::nsdecls {} catch {rename xml::ns-1.1 {}} set parser [xml::parser ns-1.1 \ -elementstartcommand EStart] $parser parse { } list $::result $::nsdecls } {Test {http://www.zveno.com/Schemas test}} test ns-1.2 {Multiple namespace declarations} { set ::result {} set ::nsdecls {} catch {rename xml::ns-1.2 {}} set parser [xml::parser ns-1.2 \ -elementstartcommand EStart] $parser parse { } list $::result [eval keysort $::nsdecls] } {Test {http://www.zveno.com/Schemas test urn:schema x}} test ns-1.3 {Default namespace declaration} { set ::result {} set ::nsdecls {} catch {rename xml::ns-1.3 {}} set parser [xml::parser ns-1.3 \ -elementstartcommand EStart] $parser parse { } list $::result [eval keysort $::nsdecls] } {http://www.zveno.com/Schemas^Test {http://www.zveno.com/Schemas {} urn:schema x}} test ns-1.4 {Default namespace declaration w/- separate usage} { set ::result {} set ::nsdecls {} catch {rename xml::ns-1.4 {}} set parser [xml::parser ns-1.4 \ -elementstartcommand EStart] $parser parse { } list $::result [eval keysort $::nsdecls] } {{urn:schema^Test http://www.zveno.com/Schemas^Test} {http://www.zveno.com/Schemas {} urn:schema x}} test ns-2.0 {Multiple namespace declarations, same prefix} { set ::result {} set ::nsdecls {} catch {rename xml::ns-2.0 {}} set parser [xml::parser ns-2.0 \ -elementstartcommand EStart] $parser parse { } list $::result [eval keysort $::nsdecls] } {{Test http://www.zveno.com/Schemas^Test http://www.zveno.com/Schemas^y urn:schema^Test urn:schema^z} {http://www.zveno.com/Schemas x urn:schema x}} # cleanup ::tcltest::cleanupTests return