# Features covered: XML Namespaces # # 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.4 2002/07/28 23:20:37 rolf Exp $ source [file join [file dir [info script]] loadtdom.tcl] 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 } } proc NSDeclStart {prefix uri} { global result lappend result $prefix lappend result $uri } test ns-1.1 {Namespace declaration} { set ::result {} set ::nsdecls {} catch {rename xml::ns-1.1 {}} set parser [xml::parser ns-1.1 \ -namespace \ -startnamespacedeclcommand NSDeclStart \ -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 \ -namespace \ -startnamespacedeclcommand NSDeclStart \ -elementstartcommand EStart] $parser parse { } list $::result [eval keysort $::nsdecls] } {{test http://www.zveno.com/Schemas x urn:schema Test} {}} test ns-1.3 {Default namespace declaration} { set ::result {} set ::nsdecls {} catch {rename xml::ns-1.3 {}} set parser [xml::parser ns-1.3 \ -namespace \ -startnamespacedeclcommand NSDeclStart \ -elementstartcommand EStart] $parser parse { } list $::result [eval keysort $::nsdecls] } {{{} http://www.zveno.com/Schemas x urn:schema http://www.zveno.com/Schemas:Test} {}} 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 \ -namespace \ -startnamespacedeclcommand NSDeclStart \ -elementstartcommand EStart] $parser parse { } list $::result [eval keysort $::nsdecls] } {{{} http://www.zveno.com/Schemas x urn:schema urn:schema:Test http://www.zveno.com/Schemas:Test} {}} 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 \ -namespace \ -startnamespacedeclcommand NSDeclStart \ -elementstartcommand EStart] $parser parse { } list $::result [eval keysort $::nsdecls] } {{Test x http://www.zveno.com/Schemas http://www.zveno.com/Schemas:Test http://www.zveno.com/Schemas:y x urn:schema urn:schema:Test urn:schema:z} {}} foreach parser [info commands ns-*] { $parser free } # cleanup ::tcltest::cleanupTests return