#!/www/server/bin/php -qC <?php # Tests for xml.class require 'searchlib/search_test.class'; function match($xmldata, $expected, $name, $prefix = "") { $classname = $prefix ? ($prefix . "_xml") : "it_xml"; $varname = $prefix . "foo"; $xml = new $classname("<root>$xmldata</root>"); is( preg_replace('/[#\s]+/', " ", print_r($xml->$varname, true)), $expected, $name ); } match( '<foo />', 'foo Object ( ) ', 'empty tag' ); match( '<foo /><foo />', 'Array ( [0] => foo Object ( ) [1] => foo Object ( ) ) ', 'multiple empty tags converted to array' ); match( '<foo title="Z�rich">St�ssihofstadt</foo>', 'foo Object ( [attr] => Array ( [title] => Z�rich ) [val] => St�ssihofstadt ) ', 'simple tag with latin1 content and attribute' ); match( '<foo><ns:a.b.-c ns2:d.e-f="value" /></foo>', 'foo Object ( [a_b__c] => a_b__c Object ( [attr] => Array ( [d_e_f] => value ) ) ) ', 'Tags and attributes with name space and special characters' ); # Test inheritance class my_xml extends it_xml { function my_xml($xmldata) { parent::it_xml($xmldata); # Code which should be executed in root and only there $this->qux = new it_xml; $this->qux->val = "qux"; if (is_object($this->myfoo)) $this->myfoo->inheritbaseclass = is_a($this->myfoo, "my_xml"); } } match( '<myfoo />', 'myfoo Object ( [inheritbaseclass] => ) ', 'Inheritance and constructor (critical for e.g. tel_xmlentry)', 'my' ); ?>