summaryrefslogtreecommitdiff
path: root/ext/XS-APItest/t/scopelessblock.t
diff options
context:
space:
mode:
Diffstat (limited to 'ext/XS-APItest/t/scopelessblock.t')
-rw-r--r--ext/XS-APItest/t/scopelessblock.t132
1 files changed, 132 insertions, 0 deletions
diff --git a/ext/XS-APItest/t/scopelessblock.t b/ext/XS-APItest/t/scopelessblock.t
new file mode 100644
index 0000000000..c08f0b0db9
--- /dev/null
+++ b/ext/XS-APItest/t/scopelessblock.t
@@ -0,0 +1,132 @@
+use warnings;
+use strict;
+
+use Test::More tests => 18;
+
+BEGIN { $^H |= 0x20000; }
+
+my $t;
+
+$t = "";
+eval q{
+ use XS::APItest qw(scopelessblock);
+ $t .= "a";
+ scopelessblock {
+ $t .= "b";
+ }
+ $t .= "c";
+};
+is $@, "";
+is $t, "abc";
+
+$t = "";
+eval q{
+ use XS::APItest qw(scopelessblock);
+ $t .= "a";
+ scopelessblock {
+ my $t = "z";
+ $t .= "b";
+ }
+ $t .= "c";
+};
+is $@, "";
+is $t, "a";
+
+$t = "";
+eval q{
+ use XS::APItest qw(scopelessblock);
+ my $f = 1.5;
+ $t .= "a(".($f+$f).")";
+ scopelessblock {
+ use integer;
+ $t .= "b(".($f+$f).")";
+ }
+ $t .= "c(".($f+$f).")";
+};
+is $@, "";
+is $t, "a(3)b(2)c(2)";
+
+$t = "";
+eval q{
+ use XS::APItest qw(scopelessblock);
+ our $z = "z";
+ $t .= "a$z";
+ scopelessblock {
+ local $z = "y";
+ $t .= "b$z";
+ }
+ $t .= "c$z";
+};
+is $@, "";
+is $t, "azbycy";
+
+$t = "";
+eval q{
+ use XS::APItest qw(scopelessblock);
+ $t .= "A";
+ do {
+ $t .= "a";
+ scopelessblock {
+ $t .= "b";
+ }
+ $t .= "c";
+ };
+ $t .= "B";
+};
+is $@, "";
+is $t, "AabcB";
+
+$t = "";
+eval q|
+ use XS::APItest qw(scopelessblock);
+ $t .= "a";
+ scopelessblock {
+ $t .= "b";
+ ]
+ $t .= "c";
+|;
+isnt $@, "";
+is $t, "";
+
+$SIG{__WARN__} = sub { };
+$t = "";
+eval q|
+ use XS::APItest qw(scopelessblock);
+ $t .= "a";
+ scopelessblock {
+ $t .= "b";
+ )
+ $t .= "c";
+|;
+isnt $@, "";
+is $t, "";
+
+$t = "";
+eval q{
+ use XS::APItest qw(scopelessblock);
+ { $t .= "a"; }
+ scopelessblock {
+ { $t .= "b"; }
+ }
+ { $t .= "c"; }
+};
+is $@, "";
+is $t, "abc";
+
+$t = "";
+eval q{
+ use XS::APItest qw(scopelessblock);
+ $t .= "A";
+ do {
+ { $t .= "a"; }
+ scopelessblock {
+ { $t .= "b"; }
+ }
+ { $t .= "c"; }
+ };
+ $t .= "B";
+};
+is $@, "";
+is $t, "AabcB";
+
+1;