Annotation of embedaddon/php/ext/xml/tests/bug26614.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: Bug #26614 (CDATA sections skipped on line count)
                      3: --SKIPIF--
                      4: <?php 
                      5: require_once("skipif.inc");
                      6: if (defined("LIBXML_VERSION")) die('skip expat test'); 
                      7: ?>
                      8: --FILE--
                      9: <?php
                     10: /*
                     11: this test works fine with Expat but fails with libxml
                     12: which we now use as default
                     13: 
                     14: further investigation has shown that not only line count
                     15: is skippet on CDATA sections but that libxml does also
                     16: show different column numbers and byte positions depending
                     17: on context and in opposition to what one would expect to
                     18: see and what good old Expat reported just fine ...
                     19: */
                     20: 
                     21: $xmls = array();
                     22: 
                     23: // Case 1: CDATA Sections
                     24: $xmls["CDATA"] ='<?xml version="1.0" encoding="iso-8859-1" ?>
                     25: <data>
                     26: <![CDATA[
                     27: multi
                     28: line 
                     29: CDATA
                     30: block
                     31: ]]>
                     32: </data>';
                     33: 
                     34: // Case 2: replace some characters so that we get comments instead
                     35: $xmls["Comment"] ='<?xml version="1.0" encoding="iso-8859-1" ?>
                     36: <data>
                     37: <!-- ATA[
                     38: multi
                     39: line 
                     40: CDATA
                     41: block
                     42: -->
                     43: </data>';
                     44: 
                     45: // Case 3: replace even more characters so that only textual data is left 
                     46: $xmls["Text"] ='<?xml version="1.0" encoding="iso-8859-1" ?>
                     47: <data>
                     48: -!-- ATA[
                     49: multi
                     50: line 
                     51: CDATA
                     52: block
                     53: ---
                     54: </data>';
                     55: 
                     56: function startElement($parser, $name, $attrs) {
                     57:     printf("<$name> at line %d, col %d (byte %d)\n",
                     58:                       xml_get_current_line_number($parser),
                     59:                       xml_get_current_column_number($parser),
                     60:                       xml_get_current_byte_index($parser));
                     61: }
                     62: 
                     63: function endElement($parser, $name) {
                     64:     printf("</$name> at line %d, col %d (byte %d)\n",
                     65:                       xml_get_current_line_number($parser),
                     66:                       xml_get_current_column_number($parser),
                     67:                       xml_get_current_byte_index($parser));
                     68: }
                     69: 
                     70: function characterData($parser, $data) {
                     71:   // dummy 
                     72: }
                     73: 
                     74: foreach ($xmls as $desc => $xml) {
                     75:   echo "$desc\n";
                     76:        $xml_parser = xml_parser_create();
                     77:        xml_set_element_handler($xml_parser, "startElement", "endElement");
                     78:        xml_set_character_data_handler($xml_parser, "characterData");
                     79:        if (!xml_parse($xml_parser, $xml, true)) 
                     80:                echo "Error: ".xml_error_string(xml_get_error_code($xml_parser))."\n";
                     81:        xml_parser_free($xml_parser);
                     82: }
                     83: ?>
                     84: --EXPECT--
                     85: CDATA
                     86: <DATA> at line 2, col 0 (byte 45)
                     87: </DATA> at line 9, col 0 (byte 90)
                     88: Comment
                     89: <DATA> at line 2, col 0 (byte 45)
                     90: </DATA> at line 9, col 0 (byte 90)
                     91: Text
                     92: <DATA> at line 2, col 0 (byte 45)
                     93: </DATA> at line 9, col 0 (byte 90)

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>