Annotation of embedaddon/php/ext/dom/tests/bug28721.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Bug #28721 (appendChild() and insertBefore() unset DOMText)
! 3: --SKIPIF--
! 4: <?php require_once('skipif.inc'); ?>
! 5: --FILE--
! 6: <?php
! 7: function print_node(DomNode $node) {
! 8: echo "name (value): " . $node->nodeName . " (" . $node->nodeValue . ")\n";
! 9: }
! 10:
! 11: function print_node_r(DomNode $node) {
! 12: static $indent = "";
! 13: echo "\n" . $indent;
! 14: print_node($node);
! 15:
! 16: echo $indent . "parent: ";
! 17: if ( $node->parentNode )
! 18: print_node($node->parentNode);
! 19: else
! 20: echo "NULL\n";
! 21:
! 22: echo $indent . "previousSibling: ";
! 23: if ( $node->previousSibling )
! 24: print_node($node->previousSibling);
! 25: else
! 26: echo "NULL\n";
! 27:
! 28: echo $indent . "nextSibling: ";
! 29: if ( $node->nextSibling )
! 30: print_node($node->nextSibling);
! 31: else
! 32: echo "NULL\n";
! 33:
! 34: if ( !$node->hasChildNodes() )
! 35: return;
! 36:
! 37: foreach ($node->childNodes as $child) {
! 38:
! 39: $old_indent = $indent;
! 40: $indent .= " ";
! 41: print_node_r($child);
! 42: $indent = $old_indent;
! 43: }
! 44: }
! 45:
! 46: function err_handler($errno, $errstr, $errfile, $errline) {
! 47: echo "Error ($errno) on line $errline: $errstr\n";
! 48: }
! 49:
! 50: // Record 'DocumentFragment is empty' warnings
! 51: set_error_handler("err_handler", E_WARNING);
! 52:
! 53: $xml = new DomDocument();
! 54:
! 55: $p = $xml->createElement("p");
! 56:
! 57: $p->appendChild($t1 = $xml->createTextNode(" t1 "));
! 58: $p->appendChild($b = $xml->createElement("b"));
! 59: $b->appendChild($xml->createTextNode("X"));
! 60: $p->appendChild($t2 = $xml->createTextNode(" t2 "));
! 61: $p->appendChild($xml->createTextNode(" xxx "));
! 62:
! 63: print_node_r($p);
! 64:
! 65: echo "\nAppend t1 to p:\n";
! 66: $ret = $p->appendChild($t1);
! 67:
! 68: print_node_r($p);
! 69: echo "\n";
! 70:
! 71: echo "t1 == ret: ";
! 72: var_dump( $t1 === $ret );
! 73:
! 74:
! 75: $d = $xml->createElement("div");
! 76: $d->appendChild($t3 = $xml->createTextNode(" t3 "));
! 77: $d->appendChild($b = $xml->createElement("b"));
! 78: $b->appendChild($xml->createElement("X"));
! 79: $d->appendChild($t4 = $xml->createTextNode(" t4 "));
! 80: $d->appendChild($xml->createTextNode(" xxx "));
! 81:
! 82: echo "\ndiv:\n";
! 83: print_node_r($d);
! 84:
! 85: echo "\nInsert t4 before t3:\n";
! 86:
! 87: $ret = $d->insertBefore($t4, $t3);
! 88:
! 89: print_node_r($d);
! 90: echo "\n";
! 91:
! 92: $frag = $xml->createDocumentFragment();
! 93:
! 94: $t5 = $frag->appendChild($xml->createTextNode(" t5 "));
! 95: $frag->appendChild($i = $xml->createElement("i"));
! 96: $i->appendChild($xml->createTextNode(" frob "));
! 97: $frag->appendChild($xml->createTextNOde(" t6 "));
! 98:
! 99: echo "\np:\n";
! 100: print_node_r($p);
! 101: echo "\nFragment:\n";
! 102: print_node_r($frag);
! 103:
! 104: echo "\nAppending fragment to p:\n";
! 105: $p->appendChild($frag);
! 106:
! 107: print_node_r($p);
! 108: echo "\nFragment:\n";
! 109: print_node_r($frag);
! 110:
! 111: echo "\ndiv:\n";
! 112: print_node_r($d);
! 113: echo "\nInserting fragment before t4\n";
! 114: $d->insertBefore($frag, $t4);
! 115: print_node_r($d);
! 116:
! 117: echo "\np:\n";
! 118: print_node_r($p);
! 119:
! 120: ?>
! 121: --EXPECT--
! 122:
! 123: name (value): p ( t1 X t2 xxx )
! 124: parent: NULL
! 125: previousSibling: NULL
! 126: nextSibling: NULL
! 127:
! 128: name (value): #text ( t1 )
! 129: parent: name (value): p ( t1 X t2 xxx )
! 130: previousSibling: NULL
! 131: nextSibling: name (value): b (X)
! 132:
! 133: name (value): b (X)
! 134: parent: name (value): p ( t1 X t2 xxx )
! 135: previousSibling: name (value): #text ( t1 )
! 136: nextSibling: name (value): #text ( t2 )
! 137:
! 138: name (value): #text (X)
! 139: parent: name (value): b (X)
! 140: previousSibling: NULL
! 141: nextSibling: NULL
! 142:
! 143: name (value): #text ( t2 )
! 144: parent: name (value): p ( t1 X t2 xxx )
! 145: previousSibling: name (value): b (X)
! 146: nextSibling: name (value): #text ( xxx )
! 147:
! 148: name (value): #text ( xxx )
! 149: parent: name (value): p ( t1 X t2 xxx )
! 150: previousSibling: name (value): #text ( t2 )
! 151: nextSibling: NULL
! 152:
! 153: Append t1 to p:
! 154:
! 155: name (value): p (X t2 xxx t1 )
! 156: parent: NULL
! 157: previousSibling: NULL
! 158: nextSibling: NULL
! 159:
! 160: name (value): b (X)
! 161: parent: name (value): p (X t2 xxx t1 )
! 162: previousSibling: NULL
! 163: nextSibling: name (value): #text ( t2 )
! 164:
! 165: name (value): #text (X)
! 166: parent: name (value): b (X)
! 167: previousSibling: NULL
! 168: nextSibling: NULL
! 169:
! 170: name (value): #text ( t2 )
! 171: parent: name (value): p (X t2 xxx t1 )
! 172: previousSibling: name (value): b (X)
! 173: nextSibling: name (value): #text ( xxx )
! 174:
! 175: name (value): #text ( xxx )
! 176: parent: name (value): p (X t2 xxx t1 )
! 177: previousSibling: name (value): #text ( t2 )
! 178: nextSibling: name (value): #text ( t1 )
! 179:
! 180: name (value): #text ( t1 )
! 181: parent: name (value): p (X t2 xxx t1 )
! 182: previousSibling: name (value): #text ( xxx )
! 183: nextSibling: NULL
! 184:
! 185: t1 == ret: bool(true)
! 186:
! 187: div:
! 188:
! 189: name (value): div ( t3 t4 xxx )
! 190: parent: NULL
! 191: previousSibling: NULL
! 192: nextSibling: NULL
! 193:
! 194: name (value): #text ( t3 )
! 195: parent: name (value): div ( t3 t4 xxx )
! 196: previousSibling: NULL
! 197: nextSibling: name (value): b ()
! 198:
! 199: name (value): b ()
! 200: parent: name (value): div ( t3 t4 xxx )
! 201: previousSibling: name (value): #text ( t3 )
! 202: nextSibling: name (value): #text ( t4 )
! 203:
! 204: name (value): X ()
! 205: parent: name (value): b ()
! 206: previousSibling: NULL
! 207: nextSibling: NULL
! 208:
! 209: name (value): #text ( t4 )
! 210: parent: name (value): div ( t3 t4 xxx )
! 211: previousSibling: name (value): b ()
! 212: nextSibling: name (value): #text ( xxx )
! 213:
! 214: name (value): #text ( xxx )
! 215: parent: name (value): div ( t3 t4 xxx )
! 216: previousSibling: name (value): #text ( t4 )
! 217: nextSibling: NULL
! 218:
! 219: Insert t4 before t3:
! 220:
! 221: name (value): div ( t4 t3 xxx )
! 222: parent: NULL
! 223: previousSibling: NULL
! 224: nextSibling: NULL
! 225:
! 226: name (value): #text ( t4 )
! 227: parent: name (value): div ( t4 t3 xxx )
! 228: previousSibling: NULL
! 229: nextSibling: name (value): #text ( t3 )
! 230:
! 231: name (value): #text ( t3 )
! 232: parent: name (value): div ( t4 t3 xxx )
! 233: previousSibling: name (value): #text ( t4 )
! 234: nextSibling: name (value): b ()
! 235:
! 236: name (value): b ()
! 237: parent: name (value): div ( t4 t3 xxx )
! 238: previousSibling: name (value): #text ( t3 )
! 239: nextSibling: name (value): #text ( xxx )
! 240:
! 241: name (value): X ()
! 242: parent: name (value): b ()
! 243: previousSibling: NULL
! 244: nextSibling: NULL
! 245:
! 246: name (value): #text ( xxx )
! 247: parent: name (value): div ( t4 t3 xxx )
! 248: previousSibling: name (value): b ()
! 249: nextSibling: NULL
! 250:
! 251:
! 252: p:
! 253:
! 254: name (value): p (X t2 xxx t1 )
! 255: parent: NULL
! 256: previousSibling: NULL
! 257: nextSibling: NULL
! 258:
! 259: name (value): b (X)
! 260: parent: name (value): p (X t2 xxx t1 )
! 261: previousSibling: NULL
! 262: nextSibling: name (value): #text ( t2 )
! 263:
! 264: name (value): #text (X)
! 265: parent: name (value): b (X)
! 266: previousSibling: NULL
! 267: nextSibling: NULL
! 268:
! 269: name (value): #text ( t2 )
! 270: parent: name (value): p (X t2 xxx t1 )
! 271: previousSibling: name (value): b (X)
! 272: nextSibling: name (value): #text ( xxx )
! 273:
! 274: name (value): #text ( xxx )
! 275: parent: name (value): p (X t2 xxx t1 )
! 276: previousSibling: name (value): #text ( t2 )
! 277: nextSibling: name (value): #text ( t1 )
! 278:
! 279: name (value): #text ( t1 )
! 280: parent: name (value): p (X t2 xxx t1 )
! 281: previousSibling: name (value): #text ( xxx )
! 282: nextSibling: NULL
! 283:
! 284: Fragment:
! 285:
! 286: name (value): #document-fragment ()
! 287: parent: NULL
! 288: previousSibling: NULL
! 289: nextSibling: NULL
! 290:
! 291: name (value): #text ( t5 )
! 292: parent: name (value): #document-fragment ()
! 293: previousSibling: NULL
! 294: nextSibling: name (value): i ( frob )
! 295:
! 296: name (value): i ( frob )
! 297: parent: name (value): #document-fragment ()
! 298: previousSibling: name (value): #text ( t5 )
! 299: nextSibling: name (value): #text ( t6 )
! 300:
! 301: name (value): #text ( frob )
! 302: parent: name (value): i ( frob )
! 303: previousSibling: NULL
! 304: nextSibling: NULL
! 305:
! 306: name (value): #text ( t6 )
! 307: parent: name (value): #document-fragment ()
! 308: previousSibling: name (value): i ( frob )
! 309: nextSibling: NULL
! 310:
! 311: Appending fragment to p:
! 312:
! 313: name (value): p (X t2 xxx t1 t5 frob t6 )
! 314: parent: NULL
! 315: previousSibling: NULL
! 316: nextSibling: NULL
! 317:
! 318: name (value): b (X)
! 319: parent: name (value): p (X t2 xxx t1 t5 frob t6 )
! 320: previousSibling: NULL
! 321: nextSibling: name (value): #text ( t2 )
! 322:
! 323: name (value): #text (X)
! 324: parent: name (value): b (X)
! 325: previousSibling: NULL
! 326: nextSibling: NULL
! 327:
! 328: name (value): #text ( t2 )
! 329: parent: name (value): p (X t2 xxx t1 t5 frob t6 )
! 330: previousSibling: name (value): b (X)
! 331: nextSibling: name (value): #text ( xxx )
! 332:
! 333: name (value): #text ( xxx )
! 334: parent: name (value): p (X t2 xxx t1 t5 frob t6 )
! 335: previousSibling: name (value): #text ( t2 )
! 336: nextSibling: name (value): #text ( t1 )
! 337:
! 338: name (value): #text ( t1 )
! 339: parent: name (value): p (X t2 xxx t1 t5 frob t6 )
! 340: previousSibling: name (value): #text ( xxx )
! 341: nextSibling: name (value): #text ( t5 )
! 342:
! 343: name (value): #text ( t5 )
! 344: parent: name (value): p (X t2 xxx t1 t5 frob t6 )
! 345: previousSibling: name (value): #text ( t1 )
! 346: nextSibling: name (value): i ( frob )
! 347:
! 348: name (value): i ( frob )
! 349: parent: name (value): p (X t2 xxx t1 t5 frob t6 )
! 350: previousSibling: name (value): #text ( t5 )
! 351: nextSibling: name (value): #text ( t6 )
! 352:
! 353: name (value): #text ( frob )
! 354: parent: name (value): i ( frob )
! 355: previousSibling: NULL
! 356: nextSibling: NULL
! 357:
! 358: name (value): #text ( t6 )
! 359: parent: name (value): p (X t2 xxx t1 t5 frob t6 )
! 360: previousSibling: name (value): i ( frob )
! 361: nextSibling: NULL
! 362:
! 363: Fragment:
! 364:
! 365: name (value): #document-fragment ()
! 366: parent: NULL
! 367: previousSibling: NULL
! 368: nextSibling: NULL
! 369:
! 370: div:
! 371:
! 372: name (value): div ( t4 t3 xxx )
! 373: parent: NULL
! 374: previousSibling: NULL
! 375: nextSibling: NULL
! 376:
! 377: name (value): #text ( t4 )
! 378: parent: name (value): div ( t4 t3 xxx )
! 379: previousSibling: NULL
! 380: nextSibling: name (value): #text ( t3 )
! 381:
! 382: name (value): #text ( t3 )
! 383: parent: name (value): div ( t4 t3 xxx )
! 384: previousSibling: name (value): #text ( t4 )
! 385: nextSibling: name (value): b ()
! 386:
! 387: name (value): b ()
! 388: parent: name (value): div ( t4 t3 xxx )
! 389: previousSibling: name (value): #text ( t3 )
! 390: nextSibling: name (value): #text ( xxx )
! 391:
! 392: name (value): X ()
! 393: parent: name (value): b ()
! 394: previousSibling: NULL
! 395: nextSibling: NULL
! 396:
! 397: name (value): #text ( xxx )
! 398: parent: name (value): div ( t4 t3 xxx )
! 399: previousSibling: name (value): b ()
! 400: nextSibling: NULL
! 401:
! 402: Inserting fragment before t4
! 403: Error (2) on line 109: DOMNode::insertBefore(): Document Fragment is empty
! 404:
! 405: name (value): div ( t4 t3 xxx )
! 406: parent: NULL
! 407: previousSibling: NULL
! 408: nextSibling: NULL
! 409:
! 410: name (value): #text ( t4 )
! 411: parent: name (value): div ( t4 t3 xxx )
! 412: previousSibling: NULL
! 413: nextSibling: name (value): #text ( t3 )
! 414:
! 415: name (value): #text ( t3 )
! 416: parent: name (value): div ( t4 t3 xxx )
! 417: previousSibling: name (value): #text ( t4 )
! 418: nextSibling: name (value): b ()
! 419:
! 420: name (value): b ()
! 421: parent: name (value): div ( t4 t3 xxx )
! 422: previousSibling: name (value): #text ( t3 )
! 423: nextSibling: name (value): #text ( xxx )
! 424:
! 425: name (value): X ()
! 426: parent: name (value): b ()
! 427: previousSibling: NULL
! 428: nextSibling: NULL
! 429:
! 430: name (value): #text ( xxx )
! 431: parent: name (value): div ( t4 t3 xxx )
! 432: previousSibling: name (value): b ()
! 433: nextSibling: NULL
! 434:
! 435: p:
! 436:
! 437: name (value): p (X t2 xxx t1 t5 frob t6 )
! 438: parent: NULL
! 439: previousSibling: NULL
! 440: nextSibling: NULL
! 441:
! 442: name (value): b (X)
! 443: parent: name (value): p (X t2 xxx t1 t5 frob t6 )
! 444: previousSibling: NULL
! 445: nextSibling: name (value): #text ( t2 )
! 446:
! 447: name (value): #text (X)
! 448: parent: name (value): b (X)
! 449: previousSibling: NULL
! 450: nextSibling: NULL
! 451:
! 452: name (value): #text ( t2 )
! 453: parent: name (value): p (X t2 xxx t1 t5 frob t6 )
! 454: previousSibling: name (value): b (X)
! 455: nextSibling: name (value): #text ( xxx )
! 456:
! 457: name (value): #text ( xxx )
! 458: parent: name (value): p (X t2 xxx t1 t5 frob t6 )
! 459: previousSibling: name (value): #text ( t2 )
! 460: nextSibling: name (value): #text ( t1 )
! 461:
! 462: name (value): #text ( t1 )
! 463: parent: name (value): p (X t2 xxx t1 t5 frob t6 )
! 464: previousSibling: name (value): #text ( xxx )
! 465: nextSibling: name (value): #text ( t5 )
! 466:
! 467: name (value): #text ( t5 )
! 468: parent: name (value): p (X t2 xxx t1 t5 frob t6 )
! 469: previousSibling: name (value): #text ( t1 )
! 470: nextSibling: name (value): i ( frob )
! 471:
! 472: name (value): i ( frob )
! 473: parent: name (value): p (X t2 xxx t1 t5 frob t6 )
! 474: previousSibling: name (value): #text ( t5 )
! 475: nextSibling: name (value): #text ( t6 )
! 476:
! 477: name (value): #text ( frob )
! 478: parent: name (value): i ( frob )
! 479: previousSibling: NULL
! 480: nextSibling: NULL
! 481:
! 482: name (value): #text ( t6 )
! 483: parent: name (value): p (X t2 xxx t1 t5 frob t6 )
! 484: previousSibling: name (value): i ( frob )
! 485: nextSibling: NULL
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>