summaryrefslogtreecommitdiff
path: root/ext/XS-APItest/t/blockasexpr.t
blob: fed36dc762f62f7ff4e3dee8d8bbd132c2407501 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
use warnings;
use strict;

use Test::More tests => 16;

BEGIN { $^H |= 0x20000; }

my $t;

$t = "";
eval q{
	use XS::APItest qw(blockasexpr);
	$t .= "a";
	$t .= "b" . blockasexpr { "c"; } . "d";
	$t .= "e";
};
is $@, "";
is $t, "abcde";

$t = "";
eval q{
	use XS::APItest qw(blockasexpr);
	no warnings "void";
	$t .= "a";
	$t .= "b" . blockasexpr { "z"; "c"; } . "d";
	$t .= "e";
};
is $@, "";
is $t, "abcde";

$t = "";
eval q{
	use XS::APItest qw(blockasexpr);
	$t .= "a";
	$t .= "b" . blockasexpr { if($t eq "a") { "c"; } else { "d"; } } . "e";
	$t .= "f";
};
is $@, "";
is $t, "abcef";

$t = "";
eval q{
	use XS::APItest qw(blockasexpr);
	$t .= "a";
	$t .= "b" . blockasexpr { if($t eq "z") { "c"; } else { "d"; } } . "e";
	$t .= "f";
};
is $@, "";
is $t, "abdef";

$t = "";
eval q{
	use XS::APItest qw(blockasexpr);
	no warnings "void";
	$t .= "a";
	$t .= "b" . blockasexpr { { "z"; "c"; } } . "d";
	$t .= "e";
};
is $@, "";
is $t, "abcde";

$t = "";
eval q{
	use XS::APItest qw(blockasexpr);
	$t .= "a";
	$t .= blockasexpr {
		my $t = "z";
		"b";
	};
	$t .= "c";
};
is $@, "";
is $t, "abc";

$t = "";
eval q{
	use XS::APItest qw(blockasexpr);
	my $f = 1.5;
	$t .= "a(".($f+$f).")";
	$t .= "b(" . blockasexpr {
		use integer;
		$f+$f;
	} . ")";
	$t .= "c(".($f+$f).")";
};
is $@, "";
is $t, "a(3)b(2)c(3)";

$t = "";
eval q{
	use XS::APItest qw(blockasexpr);
	our $z = "z";
	$t .= "a$z";
	$t .= "b" . blockasexpr {
		local $z = "y";
		$z;
	};
	$t .= "c$z";
};
is $@, "";
is $t, "azbycz";

1;