diff options
author | Zefram <zefram@fysh.org> | 2010-12-12 21:10:22 +0000 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2011-07-12 21:46:51 -0700 |
commit | 15103811cf683404d0d30d02b26c1ca87373f233 (patch) | |
tree | 1cf9ad02deedbe33b3b5c418d1d6f4d746c465b3 /ext/XS-APItest/t | |
parent | c12735bbf21c427d9828557cda9e0c2ea60962c0 (diff) | |
download | perl-15103811cf683404d0d30d02b26c1ca87373f233.tar.gz |
API tests for pad_findmy_*()
Diffstat (limited to 'ext/XS-APItest/t')
-rw-r--r-- | ext/XS-APItest/t/pad_scalar.t | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/ext/XS-APItest/t/pad_scalar.t b/ext/XS-APItest/t/pad_scalar.t new file mode 100644 index 0000000000..52c8812c6b --- /dev/null +++ b/ext/XS-APItest/t/pad_scalar.t @@ -0,0 +1,75 @@ +use warnings; +use strict; + +use Test::More tests => 76; + +use XS::APItest qw(pad_scalar); + +is pad_scalar(1, "foo"), "NOT_IN_PAD"; +is pad_scalar(2, "foo"), "NOT_IN_PAD"; +is pad_scalar(3, "foo"), "NOT_IN_PAD"; +is pad_scalar(4, "foo"), "NOT_IN_PAD"; +is pad_scalar(1, "bar"), "NOT_IN_PAD"; +is pad_scalar(2, "bar"), "NOT_IN_PAD"; +is pad_scalar(3, "bar"), "NOT_IN_PAD"; + +our $foo = "wibble"; +my $bar = "wobble"; +is pad_scalar(1, "foo"), "NOT_MY"; +is pad_scalar(2, "foo"), "NOT_MY"; +is pad_scalar(3, "foo"), "NOT_MY"; +is pad_scalar(4, "foo"), "NOT_MY"; +is pad_scalar(1, "bar"), "wobble"; +is pad_scalar(2, "bar"), "wobble"; +is pad_scalar(3, "bar"), "wobble"; + +sub aa($); +sub aa($) { + my $xyz; + ok \pad_scalar(1, "xyz") == \$xyz; + ok \pad_scalar(2, "xyz") == \$xyz; + ok \pad_scalar(3, "xyz") == \$xyz; + aa(0) if $_[0]; + ok \pad_scalar(1, "xyz") == \$xyz; + ok \pad_scalar(2, "xyz") == \$xyz; + ok \pad_scalar(3, "xyz") == \$xyz; + is pad_scalar(1, "bar"), "wobble"; + is pad_scalar(2, "bar"), "wobble"; + is pad_scalar(3, "bar"), "wobble"; +} +aa(1); + +sub bb() { + my $counter = 0; + my $foo = \$counter; + return sub { + ok pad_scalar(1, "foo") == \pad_scalar(1, "counter"); + ok pad_scalar(2, "foo") == \pad_scalar(1, "counter"); + ok pad_scalar(3, "foo") == \pad_scalar(1, "counter"); + ok pad_scalar(4, "foo") == \pad_scalar(1, "counter"); + if(pad_scalar(1, "counter") % 3 == 0) { + return pad_scalar(1, "counter")++; + } elsif(pad_scalar(1, "counter") % 3 == 0) { + return pad_scalar(2, "counter")++; + } else { + return pad_scalar(3, "counter")++; + } + }; +} +my $a = bb(); +my $b = bb(); +is $a->(), 0; +is $a->(), 1; +is $a->(), 2; +is $a->(), 3; +is $b->(), 0; +is $b->(), 1; +is $a->(), 4; +is $b->(), 2; + +is pad_scalar(1, "foo"), "NOT_MY"; +is pad_scalar(2, "foo"), "NOT_MY"; +is pad_scalar(3, "foo"), "NOT_MY"; +is pad_scalar(4, "foo"), "NOT_MY"; + +1; |