hholzgra                Mon Mar 29 00:56:18 2004 EDT

  Modified files:              
    /php-src/ext/xml/tests      bug26614.phpt 
  Log:
  Test updated to test for additional libxml2/expat inconsistencies
  
  
http://cvs.php.net/diff.php/php-src/ext/xml/tests/bug26614.phpt?r1=1.3&r2=1.4&ty=u
Index: php-src/ext/xml/tests/bug26614.phpt
diff -u php-src/ext/xml/tests/bug26614.phpt:1.3 php-src/ext/xml/tests/bug26614.phpt:1.4
--- php-src/ext/xml/tests/bug26614.phpt:1.3     Mon Mar 15 10:53:28 2004
+++ php-src/ext/xml/tests/bug26614.phpt Mon Mar 29 00:56:18 2004
@@ -2,7 +2,21 @@
 Bug #26614 (CDATA sections skipped on line count)
 --FILE--
 <?php
-$xml ='<?xml version="1.0"?>
+/*
+this test works fine with Expat but fails with libxml
+which we now use as default
+
+further investigation has shown that not only line count
+is skippet on CDATA sections but that libxml does also
+show different column numbers and byte positions depending
+on context and in opposition to what one would expect to
+see and what good old Expat reported just fine ...
+*/
+
+$xmls = array();
+
+// Case 1: CDATA Sections
+$xmls["CDATA"] ='<?xml version="1.0" encoding="iso-8859-1" ?>
 <data>
 <![CDATA[
 multi
@@ -12,18 +26,63 @@
 ]]>
 </data>';
 
+// Case 2: replace some characters so that we get comments instead
+$xmls["Comment"] ='<?xml version="1.0" encoding="iso-8859-1" ?>
+<data>
+<!-- ATA[
+multi
+line 
+CDATA
+block
+-->
+</data>';
+
+// Case 3: replace even more characters so that only textual data is left 
+$xmls["Text"] ='<?xml version="1.0" encoding="iso-8859-1" ?>
+<data>
+-!-- ATA[
+multi
+line 
+CDATA
+block
+---
+</data>';
+
 function startElement($parser, $name, $attrs) {
-    echo "<$name> at line ".xml_get_current_line_number($parser)."\n";
+    printf("<$name> at line %d, col %d (byte %d)\n",
+                      xml_get_current_line_number($parser),
+                      xml_get_current_column_number($parser),
+                      xml_get_current_byte_index($parser));
 }
+
 function endElement($parser, $name) {
-    echo "</$name> at line ".xml_get_current_line_number($parser)."\n";
+    printf("</$name> at line %d, col %d (byte %d)\n",
+                      xml_get_current_line_number($parser),
+                      xml_get_current_column_number($parser),
+                      xml_get_current_byte_index($parser));
+}
+
+function characterData($parser, $data) {
+  // dummy 
 }
 
-$xml_parser = xml_parser_create();
-xml_set_element_handler($xml_parser, "startElement", "endElement");
-xml_parse($xml_parser, $xml);
-xml_parser_free($xml_parser);
+foreach ($xmls as $desc => $xml) {
+  echo "$desc\n";
+       $xml_parser = xml_parser_create();
+       xml_set_element_handler($xml_parser, "startElement", "endElement");
+       xml_set_character_data_handler($xml_parser, "characterData");
+       if (!xml_parse($xml_parser, $xml, true)) 
+               echo "Error: ".xml_error_string(xml_get_error_code($xml_parser))."\n";
+       xml_parser_free($xml_parser);
+}
 ?>
 --EXPECT--
-<DATA> at line 2
-</DATA> at line 9
+CDATA
+<DATA> at line 2, col 0 (byte 45)
+</DATA> at line 9, col 0 (byte 90)
+Comment
+<DATA> at line 2, col 0 (byte 45)
+</DATA> at line 9, col 0 (byte 90)
+Text
+<DATA> at line 2, col 0 (byte 45)
+</DATA> at line 9, col 0 (byte 90)

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to