#!/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]+/', " ", search_test::dump($xml->$varname)), $expected, $name, ); } match( '<foo />', 'class foo { }', 'empty tag' ); match( '<foo /><foo />', 'array ( 0 => class foo { }, 1 => class foo { }, )', 'multiple empty tags converted to array' ); match( '<foo title="Z�rich">St�ssihofstadt</foo>', 'class foo { var $attr = array( \'title\' => \'Z�rich\' ); var $val = \'St�ssihofstadt\'; }', 'simple tag with latin1 content and attribute' ); match( '<foo><ns:a.b.-c ns2:d.e-f="value" /></foo>', 'class foo { var $a_b__c = class a_b__c { var $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 />', 'class myfoo { var $inheritbaseclass = false; }', 'Inheritance and constructor (critical for e.g. tel_xmlentry)', 'my' ); ?>