use Test; BEGIN { plan tests => 48 } END { ok(0) unless $loaded } use XML::GDOME; $loaded = 1; ok(1); use strict; my $doc = XML::GDOME->createDocument(undef, "TEST", undef); my $root = $doc->documentElement; ok($root->tagName, "TEST"); my $el1 = $doc->createElement("EL1"); my $tdoc = $el1->ownerDocument; ok($tdoc->gdome_ref, $doc->gdome_ref); ok($el1->tagName, "EL1"); my $el2 = $doc->createElementNS("urn:test.tst","tns:EL2"); $tdoc = $el2->ownerDocument; ok($tdoc->gdome_ref, $doc->gdome_ref); undef $tdoc; ok($el2->tagName,"tns:EL2"); ok($el2->localName,"EL2"); ok($el2->namespaceURI,"urn:test.tst"); my $df = $doc->createDocumentFragment; $tdoc = $el2->ownerDocument; ok($tdoc->gdome_ref, $doc->gdome_ref); undef $tdoc; ok($df->nodeName,"#document-fragment"); undef $df; my $txt = $doc->createTextNode("Text Test"); $tdoc = $txt->ownerDocument; ok($tdoc->gdome_ref, $doc->gdome_ref); undef $tdoc; ok($txt->nodeName,"#text"); ok($txt->nodeValue,"Text Test"); my $cds = $doc->createCDATASection("Text Test"); $tdoc = $cds->ownerDocument; ok($tdoc->gdome_ref, $doc->gdome_ref); undef $tdoc; ok($cds->nodeName,"#cdata-section"); ok($cds->nodeValue,"Text Test"); my $cmt = $doc->createComment("dududu dadada"); $tdoc = $cmt->ownerDocument; ok($tdoc->gdome_ref, $doc->gdome_ref); undef $tdoc; ok($cmt->nodeName,"#comment"); ok($cmt->nodeValue,"dududu dadada"); my $pi = $doc->createProcessingInstruction("sqlprocessor","SELECT * FROM blah"); $tdoc = $pi->ownerDocument; ok($tdoc->gdome_ref, $doc->gdome_ref); undef $tdoc; ok($pi->nodeName,"sqlprocessor"); ok($pi->nodeValue,"SELECT * FROM blah"); my $attr1 = $doc->createAttribute("ATTR1"); $tdoc = $attr1->ownerDocument; ok($tdoc->gdome_ref, $doc->gdome_ref); undef $tdoc; ok($attr1->name,"ATTR1"); ok($attr1->value,""); my $attr2 = $doc->createAttributeNS("urn:test.tst","tns:ATTR2"); $tdoc = $attr2->ownerDocument; ok($tdoc->gdome_ref, $doc->gdome_ref); undef $tdoc; ok($attr2->name,"tns:ATTR2"); ok($attr2->localName,"ATTR2"); ok($attr2->namespaceURI,"urn:test.tst"); ok($attr2->value,""); $root->setAttributeNode($attr1); $el1->setAttributeNode($attr2); $root->appendChild($el1); $root->appendChild($pi); $el2->appendChild($txt); $el2->appendChild($cds); $el2->appendChild($cmt); $root->appendChild($el2); open E, "t/xml/test-document1.xml"; local($/) = undef; my $expected = ; close E; ok($doc->toString, $expected); $doc = XML::GDOME->createDocFromURI("t/xml/test-document2.xml", GDOME_LOAD_PARSING); my @els; for my $i (0 .. 8) { # very strange core dump if we remove quotes $els[$i] = $doc->getElementById("$i"); } my $nl = $doc->getElementsByTagName("NODE"); ok($nl->length,9); for my $i (0 .. 8) { my $tel = $nl->item($i); ok($els[$i]->gdome_ref,$tel->gdome_ref); } $root = $doc->documentElement; my $tel = $root->removeChild($els[3]); $tel = $nl->item(3); ok($tel->gdome_ref, $els[6]->gdome_ref); $doc = XML::GDOME->createDocFromURI("t/xml/test-document3.xml", GDOME_LOAD_PARSING); for my $i (0..3) { $els[$i] = $doc->getElementById(2 * $i + 1); } $nl = $doc->getElementsByTagNameNS("urn:test.tst", "NODE"); ok($nl->length,4); for my $i (0..3) { my $tel = $nl->item($i); ok($tel->gdome_ref, $els[$i]->gdome_ref); } $root = $doc->documentElement; $tel = $root->removeChild($els[1]); $tel = $nl->item(1); ok($tel->gdome_ref, $els[3]->gdome_ref);