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;