The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

use Test::More tests => 3;

use XML::SemanticDiff;

my $xml1 = <<'EOX';
<?xml version="1.0"?>
<root>
<el1 el1attr="good"/>
<el2 el2attr="good">Some Text</el2>
<el4/>
</root>
EOX

my $xml2 = <<'EOX';
<?xml version="1.0"?>
<root>
<el1 el1attr="good"/>
<el2 el2attr="good">Some Text</el2>
<el3/>
</root>
EOX

#TEST
{
    my $diff_simple = XML::SemanticDiff->new();
    my $results = $diff_simple->compare($xml1, $xml2);
    ok($results == 2, "Two differences in XMLs");
}

#TEST
{
    my $diff_ignore = XML::SemanticDiff->new(ignorexpath=>["/root/el3"]);
    my $results = $diff_ignore->compare($xml1, $xml2);
    ok($results == 1, "Only one difference if /root/el3 is excluded");
}

#TEST
{
    my $diff_multiignore = XML::SemanticDiff->new(ignorexpath=>["/root/el3", "/root/el4"]);
    my $results = $diff_multiignore->compare($xml1, $xml2);
    ok($results == 0, "XMLs should count identical if xpaths /root/el3 and /root/el4 are excluded");
}