home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 December / PCWorld_2000-12_cd.bin / Komunikace / Comanche / xuibuilder / TclXML-1.1.1 / tests / CDATA.test < prev    next >
Text File  |  2000-11-02  |  4KB  |  165 lines

  1. # Features covered:  CDATA sections
  2. #
  3. # This file contains a collection of tests for the TclXML parser.
  4. # This file tests the parser's performance on CDATA sections.
  5. # Sourcing this file into Tcl runs the tests and generates output
  6. # for errors.  No output means no errors were found.
  7. #
  8. # Copyright (c) 1998 Zveno Pty Ltd.
  9. #
  10. # $Id: CDATA.test,v 1.1.1.1 1996/02/22 06:06:15 daniel Exp $
  11.  
  12. if {[string compare test [info procs test]] == 1} then {source defs}
  13.  
  14. if {[catch {package require xml 1.6}]} {
  15.     catch {puts stderr "Cannot load xml 1.6 package"}
  16.     return
  17. }
  18.  
  19. catch {unset result}
  20. proc pcdata data {
  21.     append ::result $data
  22. }
  23. proc Estart {tagName attrList} {
  24.     switch -- $tagName {
  25.     Test {
  26.     }
  27.     default {
  28.         incr ::element
  29.     }
  30.     }
  31. }
  32.  
  33. proc EStop tagname {
  34. }
  35.  
  36. test cdata-1.1 {Simple CDATA section} {
  37.     set ::result {}
  38.     set ::element 0
  39.  
  40.     catch {rename xml::cdata-1.1 {}}
  41.     set parser [xml::parser cdata-1.1 \
  42.     -elementstartcommand Estart \
  43.     -elementendcommand EStop \
  44.     -characterdatacommand pcdata]
  45.     $parser parse {<?xml version="1.0"?>
  46. <!DOCTYPE Test>
  47. <Test><![CDATA[This is CDATA]]></Test>
  48. }
  49.     list $::result $::element
  50. } {{This is CDATA} 0}
  51.  
  52. test cdata-1.2 {CDATA section with an angle bracket} {
  53.     set ::result {}
  54.     set ::element 0
  55.  
  56.     catch {rename xml::cdata-1.2 {}}
  57.     set parser [xml::parser cdata-1.2 \
  58.     -elementstartcommand Estart \
  59.     -elementendcommand EStop \
  60.     -characterdatacommand pcdata]
  61.     $parser parse {<?xml version="1.0"?>
  62. <!DOCTYPE Test>
  63. <Test><![CDATA[This is a > greater than sign]]></Test>
  64. }
  65.     list $::result $::element
  66. } {{This is a > greater than sign} 0}
  67.  
  68. # Test case contributed by Marshall Rose (mrose@dbc.mtview.ca.us)
  69. test cdata-1.3 {CDATA section with multiple angle brackets} {
  70.     set ::result {}
  71.     set ::element 0
  72.  
  73.     catch {rename xml::cdata-1.3 {}}
  74.     set parser [xml::parser cdata-1.3 \
  75.     -elementstartcommand Estart \
  76.     -elementendcommand EStop \
  77.     -characterdatacommand pcdata]
  78.     $parser parse {<?xml version="1.0" ?>
  79. <!DOCTYPE Test>
  80. <Test>
  81. <artwork><![CDATA[
  82.     <?xml version="1.0">
  83.     <!DOCTYPE rfc SYSTEM "rfcXXXX.dtd">
  84.     <rfc>
  85.     ...
  86.  
  87.     </rfc>
  88. ]]></artwork>
  89. </Test>}
  90.     list $::result $::element
  91. } {{
  92.  
  93.     <?xml version="1.0">
  94.     <!DOCTYPE rfc SYSTEM "rfcXXXX.dtd">
  95.     <rfc>
  96.     ...
  97.  
  98.     </rfc>
  99.  
  100. } 1}
  101.  
  102. # Test case contributed by Marshall Rose (mrose@dbc.mtview.ca.us)
  103. test cdata-1.4 {CDATA section with PI and Tcl special characters} {
  104.     set ::result {}
  105.     set ::element 0
  106.  
  107.     catch {rename xml::cdata-1.4 {}}
  108.     set parser [xml::parser cdata-1.4 \
  109.     -elementstartcommand Estart \
  110.     -elementendcommand EStop \
  111.     -characterdatacommand pcdata]
  112.     $parser parse {<?xml version="1.0"?>
  113. <?xml2rfc toc="yes"?>
  114. <!DOCTYPE Test>
  115. <Test>
  116. <t>this is a \ test</t>
  117. <artwork><![CDATA[
  118.     <date month="December" year="1998"/>
  119. ]]></artwork>
  120. </Test>}
  121.     list $::result $::element
  122. } {{
  123. this is a \ test
  124.  
  125.     <date month="December" year="1998"/>
  126.  
  127. } 2}
  128.  
  129. test cdata-1.5 {CDATA section with entity reference} {
  130.     set ::result {}
  131.     set ::element 0
  132.  
  133.     catch {rename xml::cdata-1.5 {}}
  134.     set parser [xml::parser cdata-1.5 \
  135.     -elementstartcommand Estart \
  136.     -elementendcommand EStop \
  137.     -characterdatacommand pcdata]
  138.     $parser parse {<?xml version="1.0"?>
  139. <!DOCTYPE Test>
  140. <Test><![CDATA[no entity <references>]]></Test>}
  141.     list $::result $::element
  142. } {{no entity <references>} 0}
  143.  
  144. # Test bug: ']]>' is not valid character data (XML Rec. subsect. 2.4) - 
  145. # this should produce a warning.
  146. test cdata-2.0 {CDATA section interpersed with comment} {
  147.     set ::result {}
  148.     set ::element 0
  149.  
  150.     catch {rename xml::cdata-2.0 {}}
  151.     set parser [xml::parser cdata-2.0 \
  152.     -elementstartcommand Estart \
  153.     -elementendcommand EStop \
  154.     -characterdatacommand pcdata]
  155.     $parser parse {<?xml version="1.0" ?>
  156. <!DOCTYPE Test>
  157. <Test><![CDATA[<!-- This is not a comment -->]]>
  158. <!-- This is a comment <![CDATA[This is not CDATA]]>-->
  159. <![CDATA[<!-- ]]>-->]]></Test>}
  160.     list $::result $::element
  161. } {{<!-- This is not a comment -->
  162.  
  163. <!-- -->]]>} 0}
  164.  
  165.