| [ Index ] |
PHP Cross Reference of JPSpan 0.4 (beta) |
[Summary view] [Print] [Text view]
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 & y < 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 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Fri Nov 26 11:42:46 2004 | Cross-referenced by PHPXref 0.6 |