1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
# Features covered: Entities
#
# This file tests the parser's performance on entities.
# Sourcing this file into Tcl runs the tests and generates output
# for errors. No output means no errors were found.
#
# Copyright (c) 1999-2000 Zveno Pty Ltd.
#
# $Id: entity.test,v 1.5 2003/03/19 14:08:52 rolf Exp $
source [file join [file dir [info script]] loadtdom.tcl]
proc Start {name attrList args} {
incr ::elements
}
proc pcdata text {
append ::result $text
}
proc EntityRef name {
lappend ::references $name
append ::result ##entityreference##
return {}
}
test entity-1.1 {parameter entity in document entity} {
set ::result {}
catch {rename xml::entity-1.1 {}}
set parser [xml::parser entity-1.1 \
-characterdatacommand pcdata]
$parser parse {<!DOCTYPE Test [
<!ENTITY % Wrong "This is wrong">
]>
<Test>%wrong;</Test>}
set ::result
} {%wrong;}
test entity-1.2 {character entities in hex} {
set ::result {}
catch {rename xml::entity-1.2 {}}
set parser [xml::parser entity-1.2 \
-characterdatacommand pcdata]
$parser parse {<Test>A<>$[]</Test>}
set ::result
} {A<>$[]}
test entity-1.3 {character entities in decimal} {
set ::result {}
catch {rename xml::entity-1.3 {}}
set parser [xml::parser entity-1.3 \
-characterdatacommand pcdata]
$parser parse {<Test>A<>$[]</Test>}
set ::result
} {A<>$[]}
test entity-1.4 {illegal character entity} {
set ::result {}
catch {rename xml::entity-1.4 {}}
set parser [xml::parser entity-1.4 \
-characterdatacommand pcdata]
set err [catch {$parser parse {<Test>&#blah;</Test>}}]
list $err $::result
} {1 {}}
test entity-2.1 {predefined general entities} {
set ::result {}
catch {rename xml::entity-2.1 {}}
set parser [xml::parser entity-2.1 \
-characterdatacommand pcdata]
$parser parse {<Test><>&"'</Test>}
set ::result
} {<>&"'}
# emacs: "
proc extrefhandler-3 {base args} {
global extrefhandlerCalled
set extrefhandlerCalled 1
return [list string $base ""]
}
test entity-3.1 {-useForeignDTD} {
set ::extrefhandlerCalled 0
set parser [expat -useForeignDTD 0 \
-externalentitycommand extrefhandler-3 \
-paramentityparsing notstandalone]
$parser parse <root/>
$parser free
set ::extrefhandlerCalled
} {0}
test entity-3.2 {-useForeignDTD} {
set ::extrefhandlerCalled 0
set parser [expat -useForeignDTD 1 \
-externalentitycommand extrefhandler-3 \
-paramentityparsing notstandalone]
$parser parse <root/>
$parser free
set ::extrefhandlerCalled
} {1}
test entity-3.3 {-useForeignDTD} {
set ::extrefhandlerCalled 0
set parser [expat -useForeignDTD 1 \
-externalentitycommand extrefhandler-3 \
-paramentityparsing notstandalone]
$parser parse {
<!DOCTYPE root [
<!ATTLIST root fixed CDATA #FIXED "toThis">
]>
<root/>}
$parser free
set ::extrefhandlerCalled
} {1}
foreach parser [info commands entity-*] {
$parser free
}
# cleanup
::tcltest::cleanupTests
return
|