1#!perl -w 2 3BEGIN { 4 no warnings 'once'; 5 $XS::APItest::WARNINGS_ON_BOOTSTRAP = 1; 6} 7 8use strict; 9use warnings; 10use Test::More tests => 100; 11 12# Doing this longhand cut&paste makes it clear 13# BEGIN and INIT are FIFO, CHECK and END are LIFO 14BEGIN { 15 print "# First BEGIN\n"; 16 is($XS::APItest::BEGIN_called, undef, "BEGIN not yet called"); 17 is($XS::APItest::BEGIN_called_PP, undef, "BEGIN not yet called"); 18 is($XS::APItest::UNITCHECK_called, undef, "UNITCHECK not yet called"); 19 is($XS::APItest::UNITCHECK_called_PP, undef, "UNITCHECK not yet called"); 20 is($XS::APItest::CHECK_called, undef, "CHECK not yet called"); 21 is($XS::APItest::CHECK_called_PP, undef, "CHECK not yet called"); 22 is($XS::APItest::INIT_called, undef, "INIT not yet called"); 23 is($XS::APItest::INIT_called_PP, undef, "INIT not yet called"); 24 is($XS::APItest::END_called, undef, "END not yet called"); 25 is($XS::APItest::END_called_PP, undef, "END not yet called"); 26} 27 28CHECK { 29 print "# First CHECK\n"; 30 is($XS::APItest::BEGIN_called, 1, "BEGIN called"); 31 is($XS::APItest::BEGIN_called_PP, 1, "BEGIN called"); 32 is($XS::APItest::UNITCHECK_called, 1, "UNITCHECK called"); 33 is($XS::APItest::UNITCHECK_called_PP, 1, "UNITCHECK called"); 34 is($XS::APItest::CHECK_called, 1, "CHECK called"); 35 is($XS::APItest::CHECK_called_PP, 1, "CHECK called"); 36 is($XS::APItest::INIT_called, undef, "INIT not yet called"); 37 is($XS::APItest::INIT_called_PP, undef, "INIT not yet called"); 38 is($XS::APItest::END_called, undef, "END not yet called"); 39 is($XS::APItest::END_called_PP, undef, "END not yet called"); 40} 41 42INIT { 43 print "# First INIT\n"; 44 is($XS::APItest::BEGIN_called, 1, "BEGIN called"); 45 is($XS::APItest::BEGIN_called_PP, 1, "BEGIN called"); 46 is($XS::APItest::UNITCHECK_called, 1, "UNITCHECK called"); 47 is($XS::APItest::UNITCHECK_called_PP, 1, "UNITCHECK called"); 48 is($XS::APItest::CHECK_called, 1, "CHECK called"); 49 is($XS::APItest::CHECK_called_PP, 1, "CHECK called"); 50 is($XS::APItest::INIT_called, undef, "INIT not yet called"); 51 is($XS::APItest::INIT_called_PP, undef, "INIT not yet called"); 52 is($XS::APItest::END_called, undef, "END not yet called"); 53 is($XS::APItest::END_called_PP, undef, "END not yet called"); 54} 55 56END { 57 print "# First END\n"; 58 is($XS::APItest::BEGIN_called, 1, "BEGIN called"); 59 is($XS::APItest::BEGIN_called_PP, 1, "BEGIN called"); 60 is($XS::APItest::UNITCHECK_called, 1, "UNITCHECK called"); 61 is($XS::APItest::UNITCHECK_called_PP, 1, "UNITCHECK called"); 62 is($XS::APItest::CHECK_called, 1, "CHECK called"); 63 is($XS::APItest::CHECK_called_PP, 1, "CHECK called"); 64 is($XS::APItest::INIT_called, 1, "INIT called"); 65 is($XS::APItest::INIT_called_PP, 1, "INIT called"); 66 is($XS::APItest::END_called, 1, "END called"); 67 is($XS::APItest::END_called_PP, 1, "END called"); 68} 69 70print "# First body\n"; 71is($XS::APItest::BEGIN_called, 1, "BEGIN called"); 72is($XS::APItest::BEGIN_called_PP, 1, "BEGIN called"); 73is($XS::APItest::UNITCHECK_called, 1, "UNITCHECK called"); 74is($XS::APItest::UNITCHECK_called_PP, 1, "UNITCHECK called"); 75is($XS::APItest::CHECK_called, 1, "CHECK called"); 76is($XS::APItest::CHECK_called_PP, 1, "CHECK called"); 77is($XS::APItest::INIT_called, 1, "INIT called"); 78is($XS::APItest::INIT_called_PP, 1, "INIT called"); 79is($XS::APItest::END_called, undef, "END not yet called"); 80is($XS::APItest::END_called_PP, undef, "END not yet called"); 81 82use XS::APItest; 83 84print "# Second body\n"; 85is($XS::APItest::BEGIN_called, 1, "BEGIN called"); 86is($XS::APItest::BEGIN_called_PP, 1, "BEGIN called"); 87is($XS::APItest::UNITCHECK_called, 1, "UNITCHECK called"); 88is($XS::APItest::UNITCHECK_called_PP, 1, "UNITCHECK called"); 89is($XS::APItest::CHECK_called, 1, "CHECK called"); 90is($XS::APItest::CHECK_called_PP, 1, "CHECK called"); 91is($XS::APItest::INIT_called, 1, "INIT called"); 92is($XS::APItest::INIT_called_PP, 1, "INIT called"); 93is($XS::APItest::END_called, undef, "END not yet called"); 94is($XS::APItest::END_called_PP, undef, "END not yet called"); 95 96BEGIN { 97 print "# Second BEGIN\n"; 98 is($XS::APItest::BEGIN_called, 1, "BEGIN called"); 99 is($XS::APItest::BEGIN_called_PP, 1, "BEGIN called"); 100 is($XS::APItest::UNITCHECK_called, 1, "UNITCHECK called"); 101 is($XS::APItest::UNITCHECK_called_PP, 1, "UNITCHECK called"); 102 is($XS::APItest::CHECK_called, undef, "CHECK not yet called"); 103 is($XS::APItest::CHECK_called_PP, undef, "CHECK not yet called"); 104 is($XS::APItest::INIT_called, undef, "INIT not yet called"); 105 is($XS::APItest::INIT_called_PP, undef, "INIT not yet called"); 106 is($XS::APItest::END_called, undef, "END not yet called"); 107 is($XS::APItest::END_called_PP, undef, "END not yet called"); 108} 109 110CHECK { 111 print "# Second CHECK\n"; 112 is($XS::APItest::BEGIN_called, 1, "BEGIN called"); 113 is($XS::APItest::BEGIN_called_PP, 1, "BEGIN called"); 114 is($XS::APItest::UNITCHECK_called, 1, "UNITCHECK yet called"); 115 is($XS::APItest::UNITCHECK_called_PP, 1, "UNITCHECK yet called"); 116 is($XS::APItest::CHECK_called, undef, "CHECK not yet called"); 117 is($XS::APItest::CHECK_called_PP, undef, "CHECK not yet called"); 118 is($XS::APItest::INIT_called, undef, "INIT not yet called"); 119 is($XS::APItest::INIT_called_PP, undef, "INIT not yet called"); 120 is($XS::APItest::END_called, undef, "END not yet called"); 121 is($XS::APItest::END_called_PP, undef, "END not yet called"); 122} 123 124INIT { 125 print "# Second INIT\n"; 126 is($XS::APItest::BEGIN_called, 1, "BEGIN called"); 127 is($XS::APItest::BEGIN_called_PP, 1, "BEGIN called"); 128 is($XS::APItest::UNITCHECK_called, 1, "UNITCHECK called"); 129 is($XS::APItest::UNITCHECK_called_PP, 1, "UNITCHECK called"); 130 is($XS::APItest::CHECK_called, 1, "CHECK called"); 131 is($XS::APItest::CHECK_called_PP, 1, "CHECK called"); 132 is($XS::APItest::INIT_called, 1, "INIT called"); 133 is($XS::APItest::INIT_called_PP, 1, "INIT called"); 134 is($XS::APItest::END_called, undef, "END not yet called"); 135 is($XS::APItest::END_called_PP, undef, "END not yet called"); 136} 137 138END { 139 print "# Second END\n"; 140 is($XS::APItest::BEGIN_called, 1, "BEGIN called"); 141 is($XS::APItest::BEGIN_called_PP, 1, "BEGIN called"); 142 is($XS::APItest::UNITCHECK_called, 1, "UNITCHECK called"); 143 is($XS::APItest::UNITCHECK_called_PP, 1, "UNITCHECK called"); 144 is($XS::APItest::CHECK_called, 1, "CHECK called"); 145 is($XS::APItest::CHECK_called_PP, 1, "CHECK called"); 146 is($XS::APItest::INIT_called, 1, "INIT called"); 147 is($XS::APItest::INIT_called_PP, 1, "INIT called"); 148 is($XS::APItest::END_called, undef, "END not yet called"); 149 is($XS::APItest::END_called_PP, undef, "END not yet called"); 150} 151