moving ip & vector tests in their own subdir
[language-befunge.git] / t / 11nums.t
blobd79676c1270603e68894e3e977ffcc2529979780
1 #!perl
3 # This file is part of Language::Befunge.
4 # Copyright (c) 2001-2007 Jerome Quelin, all rights reserved.
6 # This program is free software; you can redistribute it and/or modify
7 # it under the same terms as Perl itself.
11 #--------------------------------#
12 #          The numbers.          #
13 #--------------------------------#
15 use strict;
16 use Language::Befunge;
17 use POSIX qw! tmpnam !;
18 use Test;
20 # Vars.
21 my $file;
22 my $fh;
23 my $tests;
24 my $out;
25 my $bef = Language::Befunge->new;
26 BEGIN { $tests = 0 };
28 # In order to see what happens...
29 sub sel () {
30     $file = tmpnam();
31     open OUT, ">$file" or die $!;
32     $fh = select OUT;
34 sub slurp () {
35     select $fh;
36     close OUT;
37     open OUT, "<$file" or die $!;
38     my $content;
39     {
40         local $/;
41         $content = <OUT>;
42     }
43     close OUT;
44     unlink $file;
45     return $content;
48 # empty stack.
49 sel;
50 $bef->store_code( <<'END_OF_CODE' );
52 END_OF_CODE
53 $bef->run_code;
54 $out = slurp;
55 ok( $out, chr(0) );
56 sel;
57 $bef->store_code( <<'END_OF_CODE' );
59 END_OF_CODE
60 $bef->run_code;
61 $out = slurp;
62 ok( $out, "0 " );
63 BEGIN { $tests += 2 };
65 # zero.
66 sel;
67 $bef->store_code( <<'END_OF_CODE' );
68 0,q
69 END_OF_CODE
70 $bef->run_code;
71 $out = slurp;
72 ok( $out, chr(0) );
73 sel;
74 $bef->store_code( <<'END_OF_CODE' );
75 0.q
76 END_OF_CODE
77 $bef->run_code;
78 $out = slurp;
79 ok( $out, "0 " );
80 BEGIN { $tests += 2 };
82 # one.
83 sel;
84 $bef->store_code( <<'END_OF_CODE' );
85 1,q
86 END_OF_CODE
87 $bef->run_code;
88 $out = slurp;
89 ok( $out, chr(1) );
90 sel;
91 $bef->store_code( <<'END_OF_CODE' );
92 1.q
93 END_OF_CODE
94 $bef->run_code;
95 $out = slurp;
96 ok( $out, "1 " );
97 BEGIN { $tests += 2 };
99 # two.
100 sel;
101 $bef->store_code( <<'END_OF_CODE' );
103 END_OF_CODE
104 $bef->run_code;
105 $out = slurp;
106 ok( $out, chr(2) );
107 sel;
108 $bef->store_code( <<'END_OF_CODE' );
110 END_OF_CODE
111 $bef->run_code;
112 $out = slurp;
113 ok( $out, "2 " );
114 BEGIN { $tests += 2 };
116 # three.
117 sel;
118 $bef->store_code( <<'END_OF_CODE' );
120 END_OF_CODE
121 $bef->run_code;
122 $out = slurp;
123 ok( $out, chr(3) );
124 sel;
125 $bef->store_code( <<'END_OF_CODE' );
127 END_OF_CODE
128 $bef->run_code;
129 $out = slurp;
130 ok( $out, "3 " );
131 BEGIN { $tests += 2 };
133 # four.
134 sel;
135 $bef->store_code( <<'END_OF_CODE' );
137 END_OF_CODE
138 $bef->run_code;
139 $out = slurp;
140 ok( $out, chr(4) );
141 sel;
142 $bef->store_code( <<'END_OF_CODE' );
144 END_OF_CODE
145 $bef->run_code;
146 $out = slurp;
147 ok( $out, "4 " );
148 BEGIN { $tests += 2 };
150 # five.
151 sel;
152 $bef->store_code( <<'END_OF_CODE' );
154 END_OF_CODE
155 $bef->run_code;
156 $out = slurp;
157 ok( $out, chr(5) );
158 sel;
159 $bef->store_code( <<'END_OF_CODE' );
161 END_OF_CODE
162 $bef->run_code;
163 $out = slurp;
164 ok( $out, "5 " );
165 BEGIN { $tests += 2 };
167 # six.
168 sel;
169 $bef->store_code( <<'END_OF_CODE' );
171 END_OF_CODE
172 $bef->run_code;
173 $out = slurp;
174 ok( $out, chr(6) );
175 sel;
176 $bef->store_code( <<'END_OF_CODE' );
178 END_OF_CODE
179 $bef->run_code;
180 $out = slurp;
181 ok( $out, "6 " );
182 BEGIN { $tests += 2 };
184 # seven.
185 sel;
186 $bef->store_code( <<'END_OF_CODE' );
188 END_OF_CODE
189 $bef->run_code;
190 $out = slurp;
191 ok( $out, chr(7) );
192 sel;
193 $bef->store_code( <<'END_OF_CODE' );
195 END_OF_CODE
196 $bef->run_code;
197 $out = slurp;
198 ok( $out, "7 " );
199 BEGIN { $tests += 2 };
201 # height.
202 sel;
203 $bef->store_code( <<'END_OF_CODE' );
205 END_OF_CODE
206 $bef->run_code;
207 $out = slurp;
208 ok( $out, chr(8) );
209 sel;
210 $bef->store_code( <<'END_OF_CODE' );
212 END_OF_CODE
213 $bef->run_code;
214 $out = slurp;
215 ok( $out, "8 " );
216 BEGIN { $tests += 2 };
218 # nine.
219 sel;
220 $bef->store_code( <<'END_OF_CODE' );
222 END_OF_CODE
223 $bef->run_code;
224 $out = slurp;
225 ok( $out, chr(9) );
226 sel;
227 $bef->store_code( <<'END_OF_CODE' );
229 END_OF_CODE
230 $bef->run_code;
231 $out = slurp;
232 ok( $out, "9 " );
233 BEGIN { $tests += 2 };
235 # ten.
236 sel;
237 $bef->store_code( <<'END_OF_CODE' );
239 END_OF_CODE
240 $bef->run_code;
241 $out = slurp;
242 ok( $out, chr(10) );
243 sel;
244 $bef->store_code( <<'END_OF_CODE' );
246 END_OF_CODE
247 $bef->run_code;
248 $out = slurp;
249 ok( $out, "10 " );
250 BEGIN { $tests += 2 };
252 # eleven.
253 sel;
254 $bef->store_code( <<'END_OF_CODE' );
256 END_OF_CODE
257 $bef->run_code;
258 $out = slurp;
259 ok( $out, chr(11) );
260 sel;
261 $bef->store_code( <<'END_OF_CODE' );
263 END_OF_CODE
264 $bef->run_code;
265 $out = slurp;
266 ok( $out, "11 " );
267 BEGIN { $tests += 2 };
269 # twelve.
270 sel;
271 $bef->store_code( <<'END_OF_CODE' );
273 END_OF_CODE
274 $bef->run_code;
275 $out = slurp;
276 ok( $out, chr(12) );
277 sel;
278 $bef->store_code( <<'END_OF_CODE' );
280 END_OF_CODE
281 $bef->run_code;
282 $out = slurp;
283 ok( $out, "12 " );
284 BEGIN { $tests += 2 };
286 # thirteen.
287 sel;
288 $bef->store_code( <<'END_OF_CODE' );
290 END_OF_CODE
291 $bef->run_code;
292 $out = slurp;
293 ok( $out, chr(13) );
294 sel;
295 $bef->store_code( <<'END_OF_CODE' );
297 END_OF_CODE
298 $bef->run_code;
299 $out = slurp;
300 ok( $out, "13 " );
301 BEGIN { $tests += 2 };
303 # fourteen.
304 sel;
305 $bef->store_code( <<'END_OF_CODE' );
307 END_OF_CODE
308 $bef->run_code;
309 $out = slurp;
310 ok( $out, chr(14) );
311 sel;
312 $bef->store_code( <<'END_OF_CODE' );
314 END_OF_CODE
315 $bef->run_code;
316 $out = slurp;
317 ok( $out, "14 " );
318 BEGIN { $tests += 2 };
320 # fifteen.
321 sel;
322 $bef->store_code( <<'END_OF_CODE' );
324 END_OF_CODE
325 $bef->run_code;
326 $out = slurp;
327 ok( $out, chr(15) );
328 sel;
329 $bef->store_code( <<'END_OF_CODE' );
331 END_OF_CODE
332 $bef->run_code;
333 $out = slurp;
334 ok( $out, "15 " );
335 BEGIN { $tests += 2 };
338 BEGIN { plan tests => $tests };