# Features covered: PCDATA # # This file contains a collection of tests for the TclXML parser. # This file tests the parser's performance on PCDATA. # Sourcing this file into Tcl runs the tests and generates output # for errors. No output means no errors were found. # # Copyright (c) 1998-2002 Zveno Pty Ltd. # # $Id: pcdata.test,v 1.7 2002/09/06 23:15:57 balls 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 } catch {unset result} proc pcdata data { append ::result $data incr ::pcdataCounter } proc Estart {tagName attrList} { switch -- $tagName { Test { } default { incr ::element } } } proc EStop tagname { } test pcdata-1.1 {Simple PCDATA} { set ::result {} set ::element 0 set ::pcdataCounter 0 catch {rename xml::pcdata-1.1 {}} set parser [xml::parser pcdata-1.1 \ -elementstartcommand Estart \ -elementendcommand EStop \ -characterdatacommand pcdata] $parser parse { This is PCDATA } list $::result $::element } {{This is PCDATA} 0} test pcdata-1.2 {PCDATA section with Tcl specials} { set ::result {} set ::element 0 set ::pcdataCounter 0 catch {rename xml::pcdata-1.2 {}} set parser [xml::parser pcdata-1.2 \ -elementstartcommand Estart \ -elementendcommand EStop \ -characterdatacommand pcdata] $parser parse { Dollar $ backslash \ square brackets [ ] braces { } } list $::result $::element } {{Dollar $ backslash \ square brackets [ ] braces { }} 0} # Requested by Marshall Rose, 20/3/1999 test pcdata-1.3 {PCDATA with no entity expansion} { set ::result {} set ::element 0 set ::pcdataCounter 0 catch {rename xml::pcdata-1.3 {}} set parser [xml::parser pcdata-1.3 \ -elementstartcommand Estart \ -elementendcommand EStop \ -characterdatacommand pcdata \ -defaultexpandinternalentities 0] $parser parse { This is <PCDATA> } list $::result $::pcdataCounter } {{This is <PCDATA>} 1} # Test case from bug #468029 contributed by kenstir@users.sourceforge.net test pcdata-1.4 {PCDATA with Tcl special character} { set ::result {} catch {rename xml::pcdata-1.4 {}} set parser [xml::parser pcdata-1.4 \ -characterdatacommand pcdata] $parser parse {UPPER('new')$UPPER(TKT_STATE)} set ::result } {UPPER('new')$UPPER(TKT_STATE)} # Test case from bug #515972 contributed by kenstir@users.sourceforge.net # Similar to #468029 test pcdata-1.5 {PCDATA with Tcl special character} { set ::result {} catch {rename xml::pcdata-1.5 {}} set parser [xml::parser pcdata-1.5 \ -characterdatacommand pcdata] $parser parse {Welcome $to [\{]asd &asd f@af!a.htm} set ::result } {Welcome $to [\{]asd &asd f@af!a.htm} test pcdata-2.1 {Bad PCDATA: illegal Unicode character} { set ::result {} catch {rename xml::pcdata-2.1 {}} set parser [xml::parser pcdata-2.1 \ -characterdatacommand pcdata] catch {$parser parse [format {Bad %s character} \x04]} } 1 test pcdata-2.2 {Bad PCDATA: entity resolves to illegal Unicode character} { set ::result {} catch {rename xml::pcdata-2.2 {}} set parser [xml::parser pcdata-2.2 \ -characterdatacommand pcdata] catch {$parser parse {Bad  character}} } 1 # cleanup ::tcltest::cleanupTests return