use strict ;
use warnings FATAL => 'all' ;
use Test::More ;
use ExtUtils::MakeMaker ;
use XML::Smart ;
my $DATA = q`
192.168.0.1
192.168.0.2
192.168.1.10
192.168.1.20
`;
##if (0) {
#########################
subtest 'HTML Tests' => sub {
my $XML = XML::Smart->new( q`
Blah blah
` );
$XML = $XML->copy() ;
my $data = $XML->data( noheader => 1 ) ;
$data =~ s/\s+/ /gs ;
cmp_ok($data, 'eq', q` Blah blah `) ;
my @order = $XML->{html}{body}{form}->order ;
cmp_ok( join(" ", @order), 'eq', 'input br input br') ;
$XML->{html}{body}{form}->set_order( qw(br input input br) ) ;
@order = $XML->{html}{body}{form}->order ;
cmp_ok( join(" ", @order), 'eq', 'br input input br') ;
$data = $XML->data( noheader => 1 ) ;
$data =~ s/\s+/ /gs ;
cmp_ok( $data, 'eq', q` Blah blah `) ;
done_testing() ;
} ;
subtest 'Pointer Tests' => sub {
my $XML = XML::Smart->new(q`
content0
sub_content
content1
content2
` , 'XML::Smart::Parser') ;
$XML = $XML->copy() ;
my $data = $XML->data(noheader => 1) ;
cmp_ok($data, 'eq', q`
content0
sub_content
content1
content2
`) ;
my $tmp = tied $XML->{root}->pointer->{CONTENT} ;
isnt( tied $XML->{root}->pointer->{CONTENT}, undef ) ;
my $cont = $XML->{root}->{CONTENT} ;
cmp_ok($cont, 'eq', q`
content0
content1
content2
`) ;
my $cont_ = $XML->{root}->content ;
cmp_ok( $cont_, 'eq', q`
content0
content1
content2
`) ;
$XML->{root}->content(1,"set1") ;
my @cont = $XML->{root}->content ;
cmp_ok($cont[0], 'eq', "\ncontent0\n") ;
cmp_ok($cont[1], 'eq', "set1") ;
cmp_ok($cont[2], 'eq', "\ncontent2\n") ;
$XML->{root}->{CONTENT} = 123 ;
my $cont_2 = $XML->{root}->content ;
subtest 'Perl Version Tests' => sub {
if( $] >= 5.007 && $] <= 5.008 ) {
plan skip_all => "Skip on $]" ;
}
cmp_ok( $cont_2, '==', 123) ;
is( tied $XML->{root}->pointer->{CONTENT}, undef ) ;
done_testing() ;
} ;
is( tied $XML->{root}{tag1}{sub}->pointer->{CONTENT}, undef, 'Undefined' ) ;
my $sub_cont = $XML->{root}{tag1}{sub}->{CONTENT} ;
cmp_ok($sub_cont, 'eq', 'sub_content') ;
$data = $XML->data(noheader => 1) ;
subtest 'Perl Version Tests' => sub {
if( $] >= 5.007 && $] <= 5.008 ) {
plan skip_all => "Skip on $]" ;
}
cmp_ok( $data , 'eq', q`123
sub_content
`
) ;
done_testing() ;
};
done_testing() ;
} ;
subtest 'Content Set tests' => sub {
my $xml = new XML::Smart(q`
aaa
bbb
`) ;
$xml = $xml->copy() ;
$xml = $xml->{root} ;
$xml->{phone}->content('XXX') ;
$xml->{phone}[1]->content('YYY') ;
$xml->{test}->content('ZZZ') ;
my $data = $xml->data(noheader => 1) ;
cmp_ok($data, 'eq', q`
XXX
YYY
ZZZ
`) ;
done_testing() ;
} ;
subtest 'Data Order Tests' => sub {
my $xml = new XML::Smart(q`
TEXT1 & more
aaa
bbb
`,'html') ;
$xml = $xml->copy() ;
my $data = $xml->data(noident=>1 , noheader => 1 , wild=>1) ;
cmp_ok($data, 'eq', q`
TEXT1 & more
aaa
bbb
`) ;
done_testing() ;
} ;
#########################
subtest 'XML::Smart::Parser Tests' => sub {
my $XML = XML::Smart->new('text1foobartext2' , 'XML::Smart::Parser') ;
$XML = $XML->copy() ;
my $data = $XML->data(noheader => 1) ;
$data =~ s/\s//g ;
cmp_ok($data, 'eq', 'text1foobartext2') ;
done_testing() ;
} ;
#########################
subtest 'XML::Smart::Parser args test' => sub {
my $XML = XML::Smart->new('' , 'XML::Smart::Parser') ;
$XML = $XML->copy() ;
my $data = $XML->data(noheader => 1) ;
$data =~ s/\s//gs ;
cmp_ok($data, 'eq', '') ;
done_testing() ;
} ;
#########################
subtest 'XML::Smart::Parser nometagen tests' => sub {
my $XML = XML::Smart->new($DATA , 'XML::Smart::Parser') ;
$XML = $XML->copy() ;
my $data = $XML->data(nometagen => 1) ;
$data =~ s/\s//gs ;
my $data_org = $DATA ;
$data_org =~ s/\s//gs ;
cmp_ok( $data, 'eq', $data_org) ;
done_testing() ;
} ;
#########################
subtest 'XML::Smart::HTMLParser Tests' => sub {
my $XML = XML::Smart->new('' , 'XML::Smart::HTMLParser') ;
$XML = $XML->copy() ;
my $data = $XML->data(noheader => 1) ;
$data =~ s/\s//gs ;
cmp_ok( $data, 'eq', '' ) ;
$XML = XML::Smart->new(q`
TITLE
end" w=q>
FOO2-DATA
` , 'HTML') ;
$XML = $XML->copy() ;
$data = $XML->data(noheader => 1 , nospace => 1 ) ;
cmp_ok($data, 'eq', q`TITLEFOO2-DATA`) ;
$XML = XML::Smart->new(q`
TITLE
` , 'HTML') ;
$XML = $XML->copy() ;
$data = $XML->data(noheader => 1 , nospace => 1) ;
$data =~ s/\s//gs ;
cmp_ok($data, 'eq', q`TITLE