X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=external%2Fperl%2FText-Template-1.46%2Ft%2F02-hash.t;fp=external%2Fperl%2FText-Template-1.46%2Ft%2F02-hash.t;h=29ba51a40e21c6cd943203877ae2489fea8713d2;hp=0000000000000000000000000000000000000000;hb=8ff2af548303d311ce3591406111f77862875a60;hpb=35c3a562c74aba6e3ac3d577a356b314a151740e diff --git a/external/perl/Text-Template-1.46/t/02-hash.t b/external/perl/Text-Template-1.46/t/02-hash.t new file mode 100644 index 0000000000..29ba51a40e --- /dev/null +++ b/external/perl/Text-Template-1.46/t/02-hash.t @@ -0,0 +1,111 @@ +#!perl +# +# test apparatus for Text::Template module +# still incomplete. + +use Text::Template; + +die "This is the test program for Text::Template version 1.46. +You are using version $Text::Template::VERSION instead. +That does not make sense.\n +Aborting" + unless $Text::Template::VERSION == 1.46; + + +print "1..12\n"; + +$n=1; + +$template = 'We will put value of $v (which is "good") here -> {$v}'; + +$v = 'oops (main)'; +$Q::v = 'oops (Q)'; + +$vars = { 'v' => \'good' }; + +# (1) Build template from string +$template = new Text::Template ('type' => 'STRING', 'source' => $template); +print +($template ? '' : 'not '), "ok $n\n"; +$n++; + +# (2) Fill in template in anonymous package +$result2 = 'We will put value of $v (which is "good") here -> good'; +$text = $template->fill_in(HASH => $vars); +print +($text eq $result2 ? '' : 'not '), "ok $n\n"; +$n++; + +# (3) Did we clobber the main variable? +print +($v eq 'oops (main)' ? '' : 'not '), "ok $n\n"; +$n++; + +# (4) Fill in same template again +$result4 = 'We will put value of $v (which is "good") here -> good'; +$text = $template->fill_in(HASH => $vars); +print +($text eq $result4 ? '' : 'not '), "ok $n\n"; +$n++; + +# (5) Now with a package +$result5 = 'We will put value of $v (which is "good") here -> good'; +$text = $template->fill_in(HASH => $vars, PACKAGE => 'Q'); +print +($text eq $result5 ? '' : 'not '), "ok $n\n"; +$n++; + +# (6) We expect to have clobbered the Q variable. +print +($Q::v eq 'good' ? '' : 'not '), "ok $n\n"; +$n++; + +# (7) Now let's try it without a package +$result7 = 'We will put value of $v (which is "good") here -> good'; +$text = $template->fill_in(HASH => $vars); +print +($text eq $result7 ? '' : 'not '), "ok $n\n"; +$n++; + +# (8-11) Now what does it do when we pass a hash with undefined values? +# Roy says it does something bad. (Added for 1.20.) +my $WARNINGS = 0; +{ + local $SIG{__WARN__} = sub {$WARNINGS++}; + local $^W = 1; # Make sure this is on for this test + $template8 = 'We will put value of $v (which is "good") here -> {defined $v ? "bad" : "good"}'; + $result8 = 'We will put value of $v (which is "good") here -> good'; + my $template = + new Text::Template ('type' => 'STRING', 'source' => $template8); + my $text = $template->fill_in(HASH => {'v' => undef}); + # (8) Did we generate a warning? + print +($WARNINGS == 0 ? '' : 'not '), "ok $n\n"; + $n++; + + # (9) Was the output correct? + print +($text eq $result8 ? '' : 'not '), "ok $n\n"; + $n++; + + # (10-11) Let's try that again, with a twist this time + $WARNINGS = 0; + $text = $template->fill_in(HASH => [{'v' => 17}, {'v' => undef}]); + # (10) Did we generate a warning? + print +($WARNINGS == 0 ? '' : 'not '), "ok $n\n"; + $n++; + + # (11) Was the output correct? + if ($] < 5.005) { + print "ok $n # skipped -- not supported before 5.005\n"; + } else { + print +($text eq $result8 ? '' : 'not '), "ok $n\n"; + } + $n++; +} + + +# (12) Now we'll test the multiple-hash option (Added for 1.20.) +$text = Text::Template::fill_in_string(q{$v: {$v}. @v: [{"@v"}].}, + HASH => [{'v' => 17}, + {'v' => ['a', 'b', 'c']}, + {'v' => \23}, + ]); +$result = q{$v: 23. @v: [a b c].}; +print +($text eq $result ? '' : 'not '), "ok $n\n"; +$n++; + + +exit; +