[ Index ]

PHP Cross Reference of JPSpan 0.4 (beta)

title

Body

[close]

/tests/php/ -> unserializer_xml.test.php (source)

   1  <?php
   2  /**
   3  * @version $Id: unserializer_xml.test.php,v 1.3 2004/11/17 15:41:01 harryf Exp $
   4  * @package JPSpan
   5  * @subpackage Tests
   6  */
   7  
   8  /**
   9  * Includes
  10  */
  11  require_once ('../config.php');
  12  require_once JPSPAN . 'Unserializer.php';
  13  require_once JPSPAN . 'Types.php';
  14  require_once JPSPAN . 'Unserializer/XML.php';
  15  
  16  
  17  /**
  18  * @package JPSpan
  19  * @subpackage Tests
  20  */
  21  class TestOfJPSpan_Unserializer_XML extends UnitTestCase {
  22  
  23      function TestOfJPSpan_Unserializer_XML() {
  24          $this->UnitTestCase('TestOfJPSpan_Unserializer_XML');
  25      }
  26      
  27      function setUp() {
  28          $this->U = & new JPSpan_Unserializer_XML();
  29      }
  30      
  31      function tearDown() {
  32          unset($this->U);
  33      }
  34  
  35      function testUnserialize() {
  36          $var = 'foo';
  37          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><s>foo</s></r>';
  38          $this->assertEqual($this->U->unserialize($xml),$var);
  39      }
  40  
  41      function testUnserializeNotSerializedString() {
  42          $var = 'foo';
  43          $this->assertEqual($this->U->unserialize($var),$var);
  44      }
  45      
  46      function testUnserializeNotSerializedArray() {
  47          $var = array('<?xml version="1.0" encoding="UTF-8"?><r><s>foo</s></r>');
  48          $this->assertEqual($this->U->unserialize($var),$var);
  49      }
  50      
  51      function testRootEmpty() {
  52          $xml = '<?xml version="1.0" encoding="UTF-8"?><r />';
  53          $this->assertNull($this->U->unserialize($xml));
  54      }
  55      
  56      function testNull() {
  57          $var = NULL;
  58          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><n/></r>';
  59          $this->assertIdentical($this->U->unserialize($xml),$var);
  60      }
  61  
  62      function testTrue() {
  63          $var = TRUE;
  64          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><b v="1"/></r>';
  65          $this->assertIdentical($this->U->unserialize($xml),$var);
  66      }
  67      
  68      function testFalse() {
  69          $var = FALSE;
  70          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><b v="0"/></r>';
  71          $this->assertIdentical($this->U->unserialize($xml),$var);
  72      }
  73      
  74      function testInteger() {
  75          $var = 1;
  76          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><i v="1"/></r>';
  77          $this->assertIdentical($this->U->unserialize($xml),$var);
  78      }
  79      
  80      function testIntegerZero() {
  81          $var = 0;
  82          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><i v="0"/></r>';
  83          $this->assertIdentical($this->U->unserialize($xml),$var);
  84      }
  85      
  86      function testDouble() {
  87          $var = 1.1;
  88          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><d v="1.1"/></r>';
  89          $this->assertIdentical($this->U->unserialize($xml),$var);
  90      }
  91      
  92      function testDoubleZero() {
  93          $var = 0.0;
  94          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><d v="0.0"/></r>';
  95          $this->assertIdentical($this->U->unserialize($xml),$var);
  96      }
  97      
  98  
  99      function testEmptyString() {
 100          $var = '';
 101          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><s/></r>';
 102          $this->assertIdentical($this->U->unserialize($xml),$var);
 103      }
 104      
 105      function testZero() {
 106          $var = 0;
 107          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><i v="0"/></r>';
 108          $this->assertIdentical($this->U->unserialize($xml),$var);
 109      }
 110      
 111      function testStringZero() {
 112          $var = '0';
 113          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><s>0</s></r>';
 114          $this->assertIdentical($this->U->unserialize($xml),$var);
 115      }
 116      
 117      function testStringWithEntities() {
 118          $var = 'x > y & y < z';
 119          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><s>x > y &amp; y &lt; z</s></r>';
 120          $this->assertIdentical($this->U->unserialize($xml),$var);
 121      }
 122      
 123      function testStringWhiteSpace() {
 124          $var = "foo\n\tbar";
 125          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><s>foo'."\r\n\t".'bar</s></r>'; // \r get's removed
 126          $this->assertIdentical($this->U->unserialize($xml),$var);
 127      }
 128      
 129      function testArrayEmpty() {
 130          $var = array();
 131          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><a/></r>';
 132          $this->assertEqual($this->U->unserialize($xml), $var);
 133      }
 134      
 135      function testArrayIndexed() {
 136          $var = array('a','b');
 137          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><a><e k="0"><s>a</s>'.
 138              '</e><e k="1"><s>b</s></e></a></r>';
 139          $this->assertEqual($this->U->unserialize($xml), $var);
 140      }
 141      
 142      function testArrayAssoc() {
 143          $var = array('x'=>'a','y'=>'b');
 144          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><a><e k="x"><s>a</s>'.
 145              '</e><e k="y"><s>b</s></e></a></r>';
 146          $this->assertEqual($this->U->unserialize($xml), $var);
 147      }
 148      
 149      function testArrayMixed() {
 150          $var = array('x'=>'a',0=>'b','y'=>'c');
 151          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><a><e k="x"><s>a</s>'.
 152              '</e><e k="0"><s>b</s></e><e k="y"><s>c</s></e></a></r>';
 153          $this->assertEqual($this->U->unserialize($xml), $var);
 154      }
 155      
 156      function testArrayInArray() {
 157          $var = array('x'=>'a',0=>array(0=>'b','y'=>'c'));
 158          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><a><e k="x"><s>a</s>'.
 159              '</e><e k="0"><a><e k="0"><s>b</s></e><e k="y"><s>c</s></e></a></e></a></r>';
 160          $this->assertEqual($this->U->unserialize($xml), $var);
 161      }
 162      
 163      function testObjectInArray() {
 164          $obj = new JPSpan_Object();
 165          $obj->x= 'b';
 166          $obj->y= 'c';
 167          $var = array('x'=>'a',0=>$obj);
 168          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><a><e k="x"><s>a</s></e><e k="0">'.
 169              '<o c="JPSpan_Object"><e k="x"><s>b</s></e><e k="y"><s>c</s></e></o></e></a></r>';
 170          $this->assertEqual($this->U->unserialize($xml), $var);
 171      }
 172      
 173      function testUnserializeObject() {
 174          $var = new JPSpan_Object();
 175          $var->x = 'foo';
 176          $var->y = 'bar';
 177          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><o c="JPSpan_Object"><e k="x"><s>foo</s></e><e k="y"><s>bar</s></e></o></r>';
 178          $this->assertEqual($this->U->unserialize($xml),$var);
 179      }
 180      
 181      function testObjectEmpty() {
 182          $var = new JPSpan_Object();
 183          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><o c="JPSpan_Object"/></r>';
 184          $this->assertEqual($this->U->unserialize($xml), $var);
 185      }
 186      
 187      function testObjectWithNumericProperty() {
 188          $prop = 1;
 189          $var = new JPSpan_Object();
 190          // Things that make you go hmmm...
 191          $var->{$prop} = TRUE;
 192          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><o c="JPSpan_Object"><e k="1"><b v="1"/></e></o></r>';
 193          $this->assertEqual($this->U->unserialize($xml),$var);
 194      }
 195      
 196      function testUnserializeError() {
 197          $var = new JPSpan_Error();
 198          $var->setError(3000,'foo','bar');
 199          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><o c="JPSpan_Error"><e k="code"><i k="3000"/></e><e k="name"><s>foo</s></e><e k="message"><s>bar</s></e></o></r>';
 200          $error = $this->U->unserialize($var);
 201          $this->assertEqual($error->code,3000);
 202          $this->assertEqual($error->name,'foo');
 203          $this->assertEqual($error->message,'bar');
 204      }
 205      
 206  }
 207  
 208  class TestOfJPSpan_Unserializer_XML_Errors extends UnitTestCase {
 209  
 210      function TestOfJPSpan_Unserializer_XML_Errors() {
 211          $this->UnitTestCase('TestOfJPSpan_Unserializer_XML_Errors');
 212      }
 213      
 214      function setUp() {
 215          $this->U = & new JPSpan_Unserializer_XML();
 216      }
 217      
 218      function tearDown() {
 219          unset($this->U);
 220      }
 221  
 222      function testIllegalTag() {
 223          $xml = '<?xml version="1.0" encoding="UTF-8"?><foo />';
 224          $this->assertFalse($this->U->unserialize($xml));
 225          $this->assertErrorPattern('/Illegal tag/');
 226      }
 227      
 228      function testBadlyFormed() {
 229          $xml = '<?xml version="1.0" encoding="UTF-8"?><r>';
 230          $this->assertFalse($this->U->unserialize($xml));
 231          $this->assertErrorPattern('/Badly formed XML/');
 232      }
 233      
 234      
 235      function testRootWithMultipleChildren() {
 236          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><n/><b v="1"/></r>';
 237          $this->assertFalse($this->U->unserialize($xml));
 238          $this->assertErrorPattern('/Root node can only contain a single child node/');
 239      }
 240      
 241      function testNullWithChild() {
 242          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><n><b v="1"/></n></r>';
 243          $this->assertFalse($this->U->unserialize($xml));
 244          $this->assertErrorPattern('/Scalar nodes cannot have children/');
 245      }
 246      
 247      function testBooleanWithChild() {
 248          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><b v="1"><n/></b></r>';
 249          $this->assertFalse($this->U->unserialize($xml));
 250          $this->assertErrorPattern('/Scalar nodes cannot have children/');
 251      }
 252      
 253      function testBooleanNoValue() {
 254          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><b/></r>';
 255          $this->assertFalse($this->U->unserialize($xml));
 256          $this->assertErrorPattern('/Value required for boolean/');
 257      }
 258      
 259      function testIntegerWithChild() {
 260          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><i v="1"><n/></i></r>';
 261          $this->assertFalse($this->U->unserialize($xml));
 262          $this->assertErrorPattern('/Scalar nodes cannot have children/');
 263      }
 264      
 265      function testIntegerNoValue() {
 266          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><i/></r>';
 267          $this->assertFalse($this->U->unserialize($xml));
 268          $this->assertErrorPattern('/Value required for integer/');
 269      }
 270      
 271      function testDoubleWithChild() {
 272          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><d v="1.1"><n/></d></r>';
 273          $this->assertFalse($this->U->unserialize($xml));
 274          $this->assertErrorPattern('/Scalar nodes cannot have children/');
 275      }
 276      
 277      function testDoubleNoValue() {
 278          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><d/></r>';
 279          $this->assertFalse($this->U->unserialize($xml));
 280          $this->assertErrorPattern('/Value required for double/');
 281      }
 282      
 283      function testStringWithChild() {
 284          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><s>Foo<n/></s></r>';
 285          $this->assertFalse($this->U->unserialize($xml));
 286          $this->assertErrorPattern('/Scalar nodes cannot have children/');
 287      }
 288      
 289      function testArrayWithIllegalChild() {
 290          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><a><n/></a></r>';
 291          $this->assertFalse($this->U->unserialize($xml));
 292          $this->assertErrorPattern('/Array nodes can only contain element nodes/');
 293      }
 294      
 295      function testObjectNoClass() {
 296          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><o/></r>';
 297          $this->assertFalse($this->U->unserialize($xml));
 298          $this->assertErrorPattern('/Object node requires class attribute/');
 299      }
 300      
 301      function testObjectWithUnknownClass() {
 302          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><o c="TestUnknownClass"/></r>';
 303          $this->assertFalse($this->U->unserialize($xml));
 304          $this->assertErrorPattern('/testunknownclass/');
 305      }
 306      
 307      function testObjectWithIllegalChild() {
 308          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><o c="JPSpan_Object"><n/></o></r>';
 309          $this->assertFalse($this->U->unserialize($xml));
 310          $this->assertErrorPattern('/Object nodes can only contain element nodes/');
 311      }
 312      
 313      function testElementNoKey() {
 314          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><a><e/></a></r>';
 315          $this->assertFalse($this->U->unserialize($xml));
 316          $this->assertErrorPattern('/Element node requires key attribute/');
 317          $this->assertErrorPattern('/Array nodes can only contain element nodes/');
 318      }
 319      
 320      function testElementInElement() {
 321          $xml = '<?xml version="1.0" encoding="UTF-8"?><r><a><e k="0"><e k="1"/></e></a></r>';
 322          $this->assertFalse($this->U->unserialize($xml));
 323          $this->assertErrorPattern('/Element nodes can only be placed inside array or object nodes/');
 324      }
 325      
 326  }
 327  
 328  /**
 329  * Conditional test runner
 330  */
 331  if (!defined('TEST_RUNNING')) {
 332      define('TEST_RUNNING', true);
 333      $test = &new GroupTest('JPSpan_Unserializer_XML Test Cases');
 334      $test->addTestCase(new TestOfJPSpan_Unserializer_XML());
 335      $test->addTestCase(new TestOfJPSpan_Unserializer_XML_Errors());
 336      $test->run(new HtmlReporter());
 337  }
 338  ?>


Generated: Fri Nov 26 11:42:46 2004 Cross-referenced by PHPXref 0.6