######################### ###use Data::Dumper ; print Dumper( $XML->tree ) ; use Test; BEGIN { plan tests => 56 } ; use XML::Smart ; no warnings ; my $DATA = q`
192.168.0.1
192.168.0.2
192.168.1.10
192.168.1.20
`; ######################### { my $XML = XML::Smart->new('' , 'XML::Smart::Parser') ; my $data = $XML->data(noheader => 1) ; $data =~ s/\s//gs ; ok($data,'') ; } ######################### { my $XML = XML::Smart->new($DATA , 'XML::Smart::Parser') ; my $data = $XML->data(nometagen => 1) ; $data =~ s/\s//gs ; my $data_org = $DATA ; $data_org =~ s/\s//gs ; ok($data,$data_org) ; } ######################### { my $XML = XML::Smart->new('' , 'XML::Smart::HTMLParser') ; my $data = $XML->data(noheader => 1) ; $data =~ s/\s//gs ; ok($data,'') ; my $XML = XML::Smart->new(q` TITLE end" w=q> FOO2-DATA ` , 'HTML') ; my $data = $XML->data(noheader => 1 , nospace => 1 ) ; ok($data,q`FOO2-DATA`) ; my $XML = XML::Smart->new(q` TITLE ` , 'HTML') ; my $data = $XML->data(noheader => 1 , nospace => 1 ) ; $data =~ s/\s//gs ; ok($data,q`<!--functionstopError(){returntrue;}window.onerror=stopError;document.writeln("some<tag>wirtten!");-->`); } ######################### { my $XML = XML::Smart->new(q` <.sub1 arg="1" x=1 /> <.sub2 arg="2"/> content ` , 'XML::Smart::HTMLParser') ; my $data = $XML->data(noheader => 1 , wild => 1) ; ok($data , q` <.sub1 arg="1" x="1"/> <.sub2 arg="2"/> content `); } ######################### { my $XML0 = XML::Smart->new(q`` , 'XML::Smart::Parser') ; my $XML1 = XML::Smart->new(q`` , 'XML::Smart::Parser') ; my $XML = XML::Smart->new() ; $XML->{sub}{sub2} = $XML0 ; push(@{$XML->{sub}{sub2}} , $XML1 ) ; my $data = $XML->data(noheader => 1) ; $data =~ s/\s//gs ; ok($data,'') ; } ######################### { my $XML = XML::Smart->new($DATA , 'XML::Smart::Parser') ; $XML = $XML->{hosts} ; my $addr = $XML->{server}[0]{address} ; ok($addr,'192.168.0.1') ; my $addr0 = $XML->{server}[0]{address}[0] ; ok($addr,$addr0); my $addr1 = $XML->{server}{address}[1] ; ok($addr1,'192.168.0.2') ; my $addr01 = $XML->{server}[0]{address}[1] ; ok($addr1,$addr01); my @addrs = @{$XML->{server}{address}} ; ok(@addrs[0],$addr0); ok(@addrs[1],$addr1); my @addrs = @{$XML->{server}[0]{address}} ; ok(@addrs[0],$addr0); ok(@addrs[1],$addr1); } ######################### { my $XML = XML::Smart->new($DATA , 'XML::Smart::Parser') ; $XML = $XML->{hosts} ; my $addr = $XML->{server}('type','eq','suse'){address} ; ok($addr,'192.168.1.10') ; my $addr0 = $XML->{server}('type','eq','suse'){address}[0] ; ok($addr,$addr0) ; my $addr1 = $XML->{server}('type','eq','suse'){address}[1] ; ok($addr1,'192.168.1.20') ; my $type = $XML->{server}('version','>=','9'){type} ; ok($type,'conectiva') ; my $addr = $XML->{server}('version','>=','9'){address} ; ok($addr,'192.168.2.100') ; my $addr0 = $XML->{server}('version','>=','9'){address}[0] ; ok($addr0,$addr) ; } ######################### { my $XML = XML::Smart->new($DATA , 'XML::Smart::Parser') ; $XML = $XML->{hosts} ; my $newsrv = { os => 'Linux' , type => 'mandrake' , version => 8.9 , address => '192.168.3.201' , } ; push(@{$XML->{server}} , $newsrv) ; my $addr0 = $XML->{server}('type','eq','mandrake'){address}[0] ; ok($addr0,'192.168.3.201') ; $XML->{server}('type','eq','mandrake'){address}[1] = '192.168.3.202' ; my $addr1 = $XML->{server}('type','eq','mandrake'){address}[1] ; ok($addr1,'192.168.3.202') ; push(@{$XML->{server}('type','eq','conectiva'){address}} , '192.168.2.101') ; my $addr1 = $XML->{server}('type','eq','conectiva'){address}[1] ; ok($addr1,'192.168.2.101') ; my $addr1 = $XML->{server}[2]{address}[1] ; ok($addr1,'192.168.2.101') ; } ######################### { my $XML = XML::Smart->new(q` ` , 'XML::Smart::Parser') ; my @users = $XML->{users}('email','=~','^jo') ; ok( @users[0]->{name} , 'Joe X') ; ok( @users[1]->{name} , 'JoH Y') ; } ######################### { my $XML = XML::Smart->new() ; $XML->{server} = { os => 'Linux' , type => 'mandrake' , version => 8.9 , address => '192.168.3.201' , } ; $XML->{server}{address}[1] = '192.168.3.202' ; my $data = $XML->data(noheader => 1) ; $data =~ s/\s//gs ; my $dataok = q`
192.168.3.201
192.168.3.202
`; ok($data,$dataok) ; } ######################### { my $XML = XML::Smart->new('ctab' , 'XML::Smart::Parser') ; my $data = $XML->data(noheader => 1) ; $data =~ s/\s//gs ; my $dataok = qq`abct` ; ok($data,$dataok) ; } ######################### { my $XML = XML::Smart->new($DATA , 'XML::Smart::Parser') ; $XML->{hosts}{server}('type','eq','conectiva'){address}[1] = '' ; my $data = $XML->data( noident => 1 , nospace => 1 , lowtag => 1 , upertag => 1 , uperarg => 1 , noheader => 1 , ) ; $data =~ s/\s//gs ; my $dataok = q`
192.168.0.1
192.168.0.2
192.168.1.10
192.168.1.20
`; ok($data,$dataok) ; } ######################### { my $XML = XML::Smart->new('' , 'XML::Smart::Parser') ; $XML->{data} = aaa ; $XML->{var} = 10 ; $XML->{addr} = [qw(1 2 3)] ; my $data = $XML->data(length => 1 , nometagen => 1 ) ; $data =~ s/\s//gs ; my $dataok = q`123`; ok($data,$dataok) ; } ######################### { my $XML = XML::Smart->new('' , 'XML::Smart::Parser') ; $XML->{hosts}{server} = { os => 'lx' , type => 'red' , ver => 123 , } ; my $data = $XML->data(noheader => 1) ; $data =~ s/\s//gs ; $dataok = q``; ok($data,$dataok) ; $XML->{hosts}[1]{server}[1] = { os => 'LX' , type => 'red' , ver => 123 , } ; my $data = $XML->data(noheader => 1) ; $data =~ s/\s//gs ; $dataok = q``; ok($data,$dataok) ; } ######################### { my $XML = XML::Smart->new('' , 'XML::Smart::Parser') ; $XML->{hosts}[1]{server}[1] = { os => 'LX' , type => 'red' , ver => 123 , } ; my $data = $XML->data(noheader => 1) ; $data =~ s/\s//gs ; $dataok = q``; ok($data,$dataok) ; } ######################### { my $XML = XML::Smart->new('' , 'XML::Smart::Parser') ; my $srv = { os => 'lx' , type => 'red' , ver => 123 , } ; push( @{$XML->{hosts}} , {XXXXXX => 1}) ; unshift( @{$XML->{hosts}{x}} , $srv) ; my $data = $XML->data(noheader => 1) ; $data =~ s/\s//gs ; $dataok = q`` ; ok($data,$dataok) ; } ######################### { my $XML = XML::Smart->new('' , 'XML::Smart::Parser') ; $XML->{hosts}{server} = [ { os => lx , type => a , ver => 1 ,} , { os => lx , type => b , ver => 2 ,} , ]; ok( $XML->{hosts}{server}{type} , 'a') ; my $srv0 = shift( @{$XML->{hosts}{server}} ) ; ok( $$srv0{type} , 'a') ; ok( $XML->{hosts}{server}{type} , 'b') ; ok( $XML->{hosts}{server}{type}[0] , 'b') ; ok( $XML->{hosts}{server}[0]{type}[0] , 'b') ; ok( $XML->{hosts}[0]{server}[0]{type}[0] , 'b') ; my $srv1 = pop( @{$XML->{hosts}{server}} ) ; ok( $$srv1{type} , 'b') ; my $data = $XML->data(noheader => 1) ; ok($data , '') ; } ######################### { my $XML = XML::Smart->new($DATA , 'XML::Smart::Parser') ; my @types = $XML->{hosts}{server}('[@]','type') ; ok("@types" , 'redhat suse conectiva') ; my @types = $XML->{hosts}{server}{type}('<@') ; ok("@types" , 'redhat suse conectiva') ; } ######################### { my $wild = pack("C", 127 ) ; $data = qq`$wild`; my $XML = XML::Smart->new($data , 'XML::Smart::Parser') ; ok($XML->{code} , $wild) ; my $data = $XML->data() ; my $XML = XML::Smart->new($data , 'XML::Smart::Parser') ; ok($XML->{code} , $wild) ; my $data2 = $XML->data() ; ok($data , $data2) ; } ######################### { my $XML = XML::Smart->new($DATA , 'XML::Smart::Parser') ; my $addr1 = $XML->{hosts}{server}{address} ; my $XML2 = $XML->cut_root ; my $addr2 = $XML2->{server}{address} ; ok($addr1,$addr2) ; } ######################### { my $data = q` My Company & Name + <tag> " + '... `; my $XML = XML::Smart->new($data , 'XML::Smart::Parser') ; ok($XML->{root}{foo} , q` My Company & Name + " + '...`) ; my $data = $XML->data(nospace => 1 , noheader => 1 ) ; ok($data , q` My Company & Name + <tag> " + '...`) ; } ######################### { my $XML = XML::Smart->new(q` cont ` , 'XML::Smart::Parser') ; my @nodes = $XML->{root}{foo}->nodes ; ok($nodes[0]->{arg},'z'); my @nodes = $XML->{root}{foo}->nodes_keys ; ok("@nodes",'bar'); ok($XML->{root}{foo}{bar}->is_node) ; my @keys = $XML->{root}{foo}('@keys') ; ok("@keys",'arg1 arg2 bar'); } ######################### { my $data = qq` end]]> `; my $XML = XML::Smart->new($data , 'XML::Smart::Parser') ; ok( $XML->{root}{item}{data} , q`some CDATA code end`) ; } ######################### { eval(q`use LWP::UserAgent`) ; if ( !$@ ) { my $url = 'http://www.perlmonks.org/index.pl?node_id=16046' ; print "\nURL: $url\n" ; print "Do you want to test XML::Smart with URL? (y|n*) " ; chomp( my $opt = ); if ( $opt =~ /^\s*(?:y|s)/si ) { print "\nGetting URL... " ; my $XML = XML::Smart->new($url , 'XML::Smart::Parser') ; print "Test: " ; if ( $XML->{XPINFO}{INFO}{sitename} eq 'Perl Monks' ) { print "OK\n" ;} else { print "ERROR!\n" ; print "-----------------------------------------------\n" ; print "The XML of the URL:\n\n" ; print $XML->data ; print "-----------------------------------------------\n" ; } } else { print "Skipping URL test!\n" ;} } } ######################### print "\nTests ended! By!\n" ; 1 ;