1use warnings; 2use strict; 3 4use Test::More tests => 76; 5 6use XS::APItest qw(pad_scalar); 7 8is pad_scalar(1, "foo"), "NOT_IN_PAD"; 9is pad_scalar(2, "foo"), "NOT_IN_PAD"; 10is pad_scalar(3, "foo"), "NOT_IN_PAD"; 11is pad_scalar(4, "foo"), "NOT_IN_PAD"; 12is pad_scalar(1, "bar"), "NOT_IN_PAD"; 13is pad_scalar(2, "bar"), "NOT_IN_PAD"; 14is pad_scalar(3, "bar"), "NOT_IN_PAD"; 15 16our $foo = "wibble"; 17my $bar = "wobble"; 18is pad_scalar(1, "foo"), "NOT_MY"; 19is pad_scalar(2, "foo"), "NOT_MY"; 20is pad_scalar(3, "foo"), "NOT_MY"; 21is pad_scalar(4, "foo"), "NOT_MY"; 22is pad_scalar(1, "bar"), "wobble"; 23is pad_scalar(2, "bar"), "wobble"; 24is pad_scalar(3, "bar"), "wobble"; 25 26sub aa($); 27sub aa($) { 28 my $xyz; 29 ok \pad_scalar(1, "xyz") == \$xyz; 30 ok \pad_scalar(2, "xyz") == \$xyz; 31 ok \pad_scalar(3, "xyz") == \$xyz; 32 aa(0) if $_[0]; 33 ok \pad_scalar(1, "xyz") == \$xyz; 34 ok \pad_scalar(2, "xyz") == \$xyz; 35 ok \pad_scalar(3, "xyz") == \$xyz; 36 is pad_scalar(1, "bar"), "wobble"; 37 is pad_scalar(2, "bar"), "wobble"; 38 is pad_scalar(3, "bar"), "wobble"; 39} 40aa(1); 41 42sub bb() { 43 my $counter = 0; 44 my $foo = \$counter; 45 return sub { 46 ok pad_scalar(1, "foo") == \pad_scalar(1, "counter"); 47 ok pad_scalar(2, "foo") == \pad_scalar(1, "counter"); 48 ok pad_scalar(3, "foo") == \pad_scalar(1, "counter"); 49 ok pad_scalar(4, "foo") == \pad_scalar(1, "counter"); 50 if(pad_scalar(1, "counter") % 3 == 0) { 51 return pad_scalar(1, "counter")++; 52 } elsif(pad_scalar(1, "counter") % 3 == 0) { 53 return pad_scalar(2, "counter")++; 54 } else { 55 return pad_scalar(3, "counter")++; 56 } 57 }; 58} 59my $a = bb(); 60my $b = bb(); 61is $a->(), 0; 62is $a->(), 1; 63is $a->(), 2; 64is $a->(), 3; 65is $b->(), 0; 66is $b->(), 1; 67is $a->(), 4; 68is $b->(), 2; 69 70is pad_scalar(1, "foo"), "NOT_MY"; 71is pad_scalar(2, "foo"), "NOT_MY"; 72is pad_scalar(3, "foo"), "NOT_MY"; 73is pad_scalar(4, "foo"), "NOT_MY"; 74 751; 76