use Test::More 'no_plan'; use Data::Compare qw( Compare ); use XML::LibXML; use Log::Log4perl qw(get_logger :levels); #Log::Log4perl->init("../../../services/Daemon/logger.conf"); use_ok('perfSONAR_PS::XML::Document_string'); use perfSONAR_PS::XML::Document_string; my $n; # Check the constructor my $doc0 = perfSONAR_PS::XML::Document_string->new(); ok(defined $doc0, "perfSONAR_PS::XML::Document_string::new"); # Check startElement and endElement my $doc1 = perfSONAR_PS::XML::Document_string->new(); $n = $doc1->startElement(prefix => "test", tag => "tag1", namespace => "http://test/", extra_namespaces => { test1 => "http://test1/", test2 => "http://test2/" }, content => "test1", attributes => { attr1 => "value", attr2 => "value" } ); ok($n == 0, "perfSONAR_PS::XML::Document_string::startElement - Basic Element"); $n = $doc1->endElement("tag1"); ok($n == 0, "perfSONAR_PS::XML::Document_string::endElement - Basic Element"); my $parser = XML::LibXML->new(); my $dom1; eval { $dom1 = $parser->parse_string($doc1->getValue()); }; ok (!$@, "perfSONAR_PS::XML::Document_string::start/endElement - Parse"); # Check the basic element properties ok ($dom1->documentElement->prefix eq "test", "perfSONAR_PS::XML::Document_string::start/endElement - Proper Prefix"); ok ($dom1->documentElement->namespaceURI eq "http://test/", "perfSONAR_PS::XML::Document_string::start/endElement - Proper URI"); ok ($dom1->documentElement->nodeName eq "test:tag1", "perfSONAR_PS::XML::Document_string::start/endElement - Proper Tag"); # Check the created namespaces is ($dom1->documentElement->lookupNamespaceURI("test1"), "http://test1/"); is ($dom1->documentElement->lookupNamespaceURI("test2"), "http://test2/"); is ($dom1->documentElement->lookupNamespacePrefix("http://test1/"), "test1"); is ($dom1->documentElement->lookupNamespacePrefix("http://test2/"), "test2"); # Try ending an element that doesn't exist $n = $doc1->endElement("tag1"); ok($n != 0, "perfSONAR_PS::XML::Document_string::endElement - End non-existent element"); # Try ending an element that doesn't exist my $doc2 = perfSONAR_PS::XML::Document_string->new(); $n = $doc2->startElement(prefix => "test", tag => "tag2", namespace => "http://test/"); $n = $doc2->endElement("tag1"); ok($n != 0, "perfSONAR_PS::XML::Document_string::endElement - End incorrect element"); $n = $doc2->endElement("tag2"); # Check createElement my $doc3 = perfSONAR_PS::XML::Document_string->new(); $n = $doc3->createElement(prefix => "test", tag => "tag1", namespace => "http://test/"); ok($n == 0, "perfSONAR_PS::XML::Document_string::createElement - Basic Element"); my $dom2; eval { $dom2 = $parser->parse_string($doc3->getValue()); }; ok (!$@, "perfSONAR_PS::XML::Document_string::createElement - Parse"); ok ($dom2->documentElement->prefix eq "test", "perfSONAR_PS::XML::Document_string::createElement - Proper Prefix"); ok ($dom2->documentElement->namespaceURI eq "http://test/", "perfSONAR_PS::XML::Document_string::createElement - Proper URI"); ok ($dom2->documentElement->nodeName eq "test:tag1", "perfSONAR_PS::XML::Document_string::createElement - Proper Tag"); # Check addOpaque my $doc4 = perfSONAR_PS::XML::Document_string->new(); my $data = "junk to add and test"; $n = $doc4->addOpaque($data); ok ($n == 0); is ($doc4->getValue(), $data);