summaryrefslogtreecommitdiff
path: root/ext/XS-APItest/t
diff options
context:
space:
mode:
authorZefram <zefram@fysh.org>2010-12-12 21:10:22 +0000
committerFather Chrysostomos <sprout@cpan.org>2011-07-12 21:46:51 -0700
commit15103811cf683404d0d30d02b26c1ca87373f233 (patch)
tree1cf9ad02deedbe33b3b5c418d1d6f4d746c465b3 /ext/XS-APItest/t
parentc12735bbf21c427d9828557cda9e0c2ea60962c0 (diff)
downloadperl-15103811cf683404d0d30d02b26c1ca87373f233.tar.gz
API tests for pad_findmy_*()
Diffstat (limited to 'ext/XS-APItest/t')
-rw-r--r--ext/XS-APItest/t/pad_scalar.t75
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;