Source

perl-XML-LibXML / t / 20extras.t

# $Id$

use strict;
use warnings;

use Test;

BEGIN { plan tests => 12 };
use XML::LibXML;

my $string = "<foo><bar/></foo>";

my $parser = XML::LibXML->new();

{
    my $doc = $parser->parse_string( $string );
    ok($doc);
    local $XML::LibXML::skipXMLDeclaration = 1;
    ok( $doc->toString(), $string );
    local $XML::LibXML::setTagCompression = 1;
    ok( $doc->toString(), "<foo><bar></bar></foo>" );
}

{
    local $XML::LibXML::skipDTD = 1;
    $parser->expand_entities(0);
    my $doc = $parser->parse_file( "example/dtd.xml" );
    ok($doc);
    my $test = "<?xml version=\"1.0\"?>\n<doc>This is a valid document &foo; !</doc>\n";
    ok( $doc->toString, $test );
}

{
    my $doc = $parser->parse_string( $string );
    ok($doc);
    my $dclone = $doc->cloneNode(1); # deep
    ok( ! $dclone->isSameNode($doc) );
    ok( $dclone->getDocumentElement() );
    ok( $doc->toString() eq $dclone->toString() );

    my $clone = $doc->cloneNode(); # shallow
    ok( ! $clone->isSameNode($doc) );
    ok( ! $clone->getDocumentElement() );
    $doc->getDocumentElement()->unbindNode();
    ok( $doc->toString() eq $clone->toString() );
}
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.