UNITCHECK for XS code. Turned out to be harder that expected.
[p5sagit/p5-mst-13.2.git] / ext / XS / APItest / t / xs_special_subs.t
CommitLineData
84ac5fd7 1BEGIN {
2 chdir 't' if -d 't';
3 @INC = '../lib';
4 push @INC, "::lib:$MacPerl::Architecture:" if $^O eq 'MacOS';
5 require Config; import Config;
6 if ($Config{'extensions'} !~ /\bXS\/APItest\b/) {
7 print "1..0 # Skip: XS::APItest was not built\n";
8 exit 0;
9 }
0932863f 10 $XS::APItest::WARNINGS_ON_BOOTSTRAP++;
84ac5fd7 11}
12
13use strict;
14use warnings;
0932863f 15use Test::More tests => 100;
84ac5fd7 16
17# Doing this longhand cut&paste makes it clear
18# BEGIN and INIT are FIFO, CHECK and END are LIFO
19BEGIN {
0932863f 20 print "# First BEGIN\n";
84ac5fd7 21 is($XS::APItest::BEGIN_called, undef, "BEGIN not yet called");
0932863f 22 is($XS::APItest::BEGIN_called_PP, undef, "BEGIN not yet called");
23 is($XS::APItest::UNITCHECK_called, undef, "UNITCHECK not yet called");
24 is($XS::APItest::UNITCHECK_called_PP, undef, "UNITCHECK not yet called");
84ac5fd7 25 is($XS::APItest::CHECK_called, undef, "CHECK not yet called");
0932863f 26 is($XS::APItest::CHECK_called_PP, undef, "CHECK not yet called");
84ac5fd7 27 is($XS::APItest::INIT_called, undef, "INIT not yet called");
0932863f 28 is($XS::APItest::INIT_called_PP, undef, "INIT not yet called");
84ac5fd7 29 is($XS::APItest::END_called, undef, "END not yet called");
0932863f 30 is($XS::APItest::END_called_PP, undef, "END not yet called");
84ac5fd7 31}
32
33CHECK {
0932863f 34 print "# First CHECK\n";
84ac5fd7 35 is($XS::APItest::BEGIN_called, 1, "BEGIN called");
0932863f 36 is($XS::APItest::BEGIN_called_PP, 1, "BEGIN called");
37 is($XS::APItest::UNITCHECK_called, 1, "UNITCHECK called");
38 is($XS::APItest::UNITCHECK_called_PP, 1, "UNITCHECK called");
84ac5fd7 39 is($XS::APItest::CHECK_called, 1, "CHECK called");
0932863f 40 is($XS::APItest::CHECK_called_PP, 1, "CHECK called");
84ac5fd7 41 is($XS::APItest::INIT_called, undef, "INIT not yet called");
0932863f 42 is($XS::APItest::INIT_called_PP, undef, "INIT not yet called");
84ac5fd7 43 is($XS::APItest::END_called, undef, "END not yet called");
0932863f 44 is($XS::APItest::END_called_PP, undef, "END not yet called");
84ac5fd7 45}
46
47INIT {
0932863f 48 print "# First INIT\n";
84ac5fd7 49 is($XS::APItest::BEGIN_called, 1, "BEGIN called");
0932863f 50 is($XS::APItest::BEGIN_called_PP, 1, "BEGIN called");
51 is($XS::APItest::UNITCHECK_called, 1, "UNITCHECK called");
52 is($XS::APItest::UNITCHECK_called_PP, 1, "UNITCHECK called");
84ac5fd7 53 is($XS::APItest::CHECK_called, 1, "CHECK called");
0932863f 54 is($XS::APItest::CHECK_called_PP, 1, "CHECK called");
84ac5fd7 55 is($XS::APItest::INIT_called, undef, "INIT not yet called");
0932863f 56 is($XS::APItest::INIT_called_PP, undef, "INIT not yet called");
84ac5fd7 57 is($XS::APItest::END_called, undef, "END not yet called");
0932863f 58 is($XS::APItest::END_called_PP, undef, "END not yet called");
84ac5fd7 59}
60
61END {
0932863f 62 print "# First END\n";
84ac5fd7 63 is($XS::APItest::BEGIN_called, 1, "BEGIN called");
0932863f 64 is($XS::APItest::BEGIN_called_PP, 1, "BEGIN called");
65 is($XS::APItest::UNITCHECK_called, 1, "UNITCHECK called");
66 is($XS::APItest::UNITCHECK_called_PP, 1, "UNITCHECK called");
84ac5fd7 67 is($XS::APItest::CHECK_called, 1, "CHECK called");
0932863f 68 is($XS::APItest::CHECK_called_PP, 1, "CHECK called");
84ac5fd7 69 is($XS::APItest::INIT_called, 1, "INIT called");
0932863f 70 is($XS::APItest::INIT_called_PP, 1, "INIT called");
84ac5fd7 71 is($XS::APItest::END_called, 1, "END called");
0932863f 72 is($XS::APItest::END_called_PP, 1, "END called");
84ac5fd7 73}
74
0932863f 75print "# First body\n";
84ac5fd7 76is($XS::APItest::BEGIN_called, 1, "BEGIN called");
0932863f 77is($XS::APItest::BEGIN_called_PP, 1, "BEGIN called");
78is($XS::APItest::UNITCHECK_called, 1, "UNITCHECK called");
79is($XS::APItest::UNITCHECK_called_PP, 1, "UNITCHECK called");
84ac5fd7 80is($XS::APItest::CHECK_called, 1, "CHECK called");
0932863f 81is($XS::APItest::CHECK_called_PP, 1, "CHECK called");
84ac5fd7 82is($XS::APItest::INIT_called, 1, "INIT called");
0932863f 83is($XS::APItest::INIT_called_PP, 1, "INIT called");
84ac5fd7 84is($XS::APItest::END_called, undef, "END not yet called");
0932863f 85is($XS::APItest::END_called_PP, undef, "END not yet called");
84ac5fd7 86
87use XS::APItest;
88
0932863f 89print "# Second body\n";
84ac5fd7 90is($XS::APItest::BEGIN_called, 1, "BEGIN called");
0932863f 91is($XS::APItest::BEGIN_called_PP, 1, "BEGIN called");
92is($XS::APItest::UNITCHECK_called, 1, "UNITCHECK called");
93is($XS::APItest::UNITCHECK_called_PP, 1, "UNITCHECK called");
84ac5fd7 94is($XS::APItest::CHECK_called, 1, "CHECK called");
0932863f 95is($XS::APItest::CHECK_called_PP, 1, "CHECK called");
84ac5fd7 96is($XS::APItest::INIT_called, 1, "INIT called");
0932863f 97is($XS::APItest::INIT_called_PP, 1, "INIT called");
84ac5fd7 98is($XS::APItest::END_called, undef, "END not yet called");
0932863f 99is($XS::APItest::END_called_PP, undef, "END not yet called");
84ac5fd7 100
101BEGIN {
0932863f 102 print "# Second BEGIN\n";
84ac5fd7 103 is($XS::APItest::BEGIN_called, 1, "BEGIN called");
0932863f 104 is($XS::APItest::BEGIN_called_PP, 1, "BEGIN called");
105 is($XS::APItest::UNITCHECK_called, 1, "UNITCHECK called");
106 is($XS::APItest::UNITCHECK_called_PP, 1, "UNITCHECK called");
84ac5fd7 107 is($XS::APItest::CHECK_called, undef, "CHECK not yet called");
0932863f 108 is($XS::APItest::CHECK_called_PP, undef, "CHECK not yet called");
84ac5fd7 109 is($XS::APItest::INIT_called, undef, "INIT not yet called");
0932863f 110 is($XS::APItest::INIT_called_PP, undef, "INIT not yet called");
84ac5fd7 111 is($XS::APItest::END_called, undef, "END not yet called");
0932863f 112 is($XS::APItest::END_called_PP, undef, "END not yet called");
84ac5fd7 113}
114
115CHECK {
0932863f 116 print "# Second CHECK\n";
84ac5fd7 117 is($XS::APItest::BEGIN_called, 1, "BEGIN called");
0932863f 118 is($XS::APItest::BEGIN_called_PP, 1, "BEGIN called");
119 is($XS::APItest::UNITCHECK_called, 1, "UNITCHECK yet called");
120 is($XS::APItest::UNITCHECK_called_PP, 1, "UNITCHECK yet called");
84ac5fd7 121 is($XS::APItest::CHECK_called, undef, "CHECK not yet called");
0932863f 122 is($XS::APItest::CHECK_called_PP, undef, "CHECK not yet called");
84ac5fd7 123 is($XS::APItest::INIT_called, undef, "INIT not yet called");
0932863f 124 is($XS::APItest::INIT_called_PP, undef, "INIT not yet called");
84ac5fd7 125 is($XS::APItest::END_called, undef, "END not yet called");
0932863f 126 is($XS::APItest::END_called_PP, undef, "END not yet called");
84ac5fd7 127}
128
129INIT {
0932863f 130 print "# Second INIT\n";
84ac5fd7 131 is($XS::APItest::BEGIN_called, 1, "BEGIN called");
0932863f 132 is($XS::APItest::BEGIN_called_PP, 1, "BEGIN called");
133 is($XS::APItest::UNITCHECK_called, 1, "UNITCHECK called");
134 is($XS::APItest::UNITCHECK_called_PP, 1, "UNITCHECK called");
84ac5fd7 135 is($XS::APItest::CHECK_called, 1, "CHECK called");
0932863f 136 is($XS::APItest::CHECK_called_PP, 1, "CHECK called");
84ac5fd7 137 is($XS::APItest::INIT_called, 1, "INIT called");
0932863f 138 is($XS::APItest::INIT_called_PP, 1, "INIT called");
84ac5fd7 139 is($XS::APItest::END_called, undef, "END not yet called");
0932863f 140 is($XS::APItest::END_called_PP, undef, "END not yet called");
84ac5fd7 141}
142
143END {
0932863f 144 print "# Second END\n";
84ac5fd7 145 is($XS::APItest::BEGIN_called, 1, "BEGIN called");
0932863f 146 is($XS::APItest::BEGIN_called_PP, 1, "BEGIN called");
147 is($XS::APItest::UNITCHECK_called, 1, "UNITCHECK called");
148 is($XS::APItest::UNITCHECK_called_PP, 1, "UNITCHECK called");
84ac5fd7 149 is($XS::APItest::CHECK_called, 1, "CHECK called");
0932863f 150 is($XS::APItest::CHECK_called_PP, 1, "CHECK called");
84ac5fd7 151 is($XS::APItest::INIT_called, 1, "INIT called");
0932863f 152 is($XS::APItest::INIT_called_PP, 1, "INIT called");
84ac5fd7 153 is($XS::APItest::END_called, undef, "END not yet called");
0932863f 154 is($XS::APItest::END_called_PP, undef, "END not yet called");
84ac5fd7 155}