📄 stree.t
字号:
use strict;use Test;BEGIN { plan tests => 33 };#use Pod::Simple::Debug (6);ok 1;use Pod::Simple::SimpleTree;print "# Pod::Simple version $Pod::Simple::VERSION\n";my $hashes_dont_matter = 0;my $x = 'Pod::Simple::SimpleTree';sub x { my $p = $x->new; $p->merge_text(1); $p->parse_string_document( shift )->root;}ok 1;print "# a bit of meta-testing...\n";&ok( deq( 1, 1 ));&ok(!deq( 2, 1 ));&ok( deq( undef, undef ));&ok(!deq( undef, 1 ));&ok(!deq( 1, undef ));&ok( deq( [ ], [ ] ));&ok(!deq( [ ], 1 ));&ok(!deq( 1, [ ] ));&ok( deq( [1], [1] ));&ok(!deq( [1], 1 ));&ok(!deq( 1, [1] ));&ok(!deq( [1], [ ] ));&ok(!deq( [ ], [1] ));&ok(!deq( [1], [2] ));&ok(!deq( [2], [1] ));&ok( deq( [ ], [ ] ));&ok(!deq( [ ], 1 ));&ok(!deq( 1, [ ] ));&ok( deq( {}, {} ));&ok(!deq( {}, 1 ));&ok(!deq( 1, {} ));&ok(!deq( {1,2}, {} ));&ok(!deq( {}, {1,2} ));&ok( deq( {1,2}, {1,2} ));&ok(!deq( {2,1}, {1,2} ));print '# ', Pod::Simple::pretty(x( "=pod\n\nI like pie.\n" )), "\n";print "# Making sure we get a tree at all...\n";ok x( "=pod\n\nI like pie.\n" );print "# Some real tests...\n";&ok( deq( x( "=pod\n\nI like pie.\n"), [ "Document", {"start_line"=>1}, [ "Para", {"start_line"=>3}, "I like pie." ] ]));$hashes_dont_matter = 1;&ok( deq( x("=pod\n\nB<foo\t>\n"), [ "Document", {}, [ "Para", {}, ["B", {}, "foo " ] ] ]));&ok( deq( x("=pod\n\nB<pieF<zorch>X<foo>I<pling>>\n"), [ "Document", {}, [ "Para", {}, ["B", {}, "pie", ['F',{}, 'zorch'], ['X',{}, 'foo' ], ['I',{}, 'pling'], ] ] ]));&ok( deq( x("=over\n\n=item B<pieF<zorch>X<foo>I<pling>>!\n\n=back"), [ "Document", {}, [ "over-text", {}, [ "item-text", {}, ["B", {}, "pie", ['F',{}, 'zorch'], ['X',{}, 'foo' ], ['I',{}, 'pling'], ], '!' ] ] ]));print "# Wrapping up... one for the road...\n";ok 1;print "# --- Done with ", __FILE__, " --- \n";sub deq { # deep-equals #print "# deq ", Pod::Simple::pretty($_[0], $_[1]), "\n"; return 1 unless defined $_[0] or defined $_[1]; # two undefs = same return '' if defined $_[0] xor defined $_[1]; return '' if ref($_[0]) ne ref($_[1]); # unequal referentiality return $_[0] eq $_[1] unless ref $_[0]; # So it's a ref: use UNIVERSAL; if(UNIVERSAL::isa($_[0], 'ARRAY')) { return '' unless @{$_[0]} == @{$_[1]}; for(my $i = 0; $i < @{$_[0]}; $i++) { print("# NEQ ", Pod::Simple::pretty($_[0]), "\n# != ", Pod::Simple::pretty($_[1]), "\n"), return '' unless deq($_[0][$i], $_[1][$i]); # recurse! } return 1; } elsif(UNIVERSAL::isa($_[0], 'HASH')) { return 1 if $hashes_dont_matter; return '' unless keys %{$_[0]} == keys %{$_[1]}; foreach my $k (keys %{$_[0]}) { return '' unless exists $_[1]{$k}; return '' unless deq($_[0]{$k}, $_[1]{$k}); } return 1; } else { print "# I don't know how to deque $_[0] & $_[1]\n"; return 1; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -