1458df2b83762efdbf4c0507e6e62f5677c90c3b
[enscript.git] / states / tests / tests.st
1 /*
2  * States definitions file for States tests.
3  * Copyright (c) 1997 Markku Rossi.
4  * Author: Markku Rossi <mtr@iki.fi>
5  */
6
7 /*
8  * This file is part of GNU enscript.
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2, or (at your option)
13  * any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program; see the file COPYING.  If not, write to
22  * the Free Software Foundation, 51 Franklin Street, Fifth Floor,
23  * Boston, MA 02110-1301, USA.
24  */
25
26 /*
27  * Initializations.
28  */
29
30 a_variable = "false";
31
32 start
33 {
34   check_startrules ();
35   check_namerules ();
36 }
37
38 startrules
39 {
40   /Test startrules\./   test_startrules;
41 }
42
43 namerules
44 {
45   /\.st$/       test_namerules;
46 }
47
48 sub ok ()
49 {
50   print ("ok");
51 }
52
53 sub fail ()
54 {
55   print ("fail");
56 }
57
58 \f
59 /*
60  * Test states.
61  */
62
63 state skip_input
64 {
65   /[^\\\/]+/ {
66     /* NOP */
67   }
68   /./ {
69     /* NOP */
70   }
71 }
72
73 state test_startrules
74 {
75   BEGIN {
76     print ("test_startrules");
77     call (skip_input);
78   }
79 }
80
81 state test_namerules
82 {
83   BEGIN {
84     print ("test_namerules");
85     call (skip_input);
86   }
87 }
88
89 state test_optionstate
90 {
91   BEGIN {
92     print ("test_optionstate");
93     call (skip_input);
94   }
95 }
96
97 state test_first_match
98 {
99   /aaaa/ {
100     ok ();
101     call (skip_input);
102   }
103   /[ab]+/ {
104     fail ();
105     call (skip_input);
106   }
107 }
108
109 state test_case_insensitive_regexps
110 {
111   /aaaa/i {
112     ok ();
113     call (skip_input);
114   }
115 }
116
117 state test_vardef
118 {
119   BEGIN {
120     print (a_variable);
121     call (skip_input);
122   }
123 }
124
125 state test_exprs
126 {
127   BEGIN {
128
129     /* Postfix add. */
130     a = 1;
131     if (a++ != 1)
132       fail ();
133     if (a++ != 2)
134       fail ();
135     if (a++ != 3)
136       fail ();
137
138     /* Postfix sub. */
139     if (a-- != 4)
140       fail ();
141     if (a-- != 3)
142       fail ();
143     if (a-- != 2)
144       fail ();
145
146     /* Prefix add. */
147     a = 1;
148     if (++a != 2)
149       fail ();
150     if (++a != 3)
151       fail ();
152
153     /* Prefix sub. */
154     if (--a != 2)
155       fail ();
156     if (--a != 1)
157       fail ();
158
159     /* += */
160     a = 0;
161     a += 5;
162     if (a != 5)
163       fail ();
164
165     /* -= */
166     a -= 3;
167     if (a != 2)
168       fail ();
169
170     /* *= */
171     a *= 2;
172     if (a != 4)
173       fail ();
174
175     /* div= */
176     a div= 2;
177
178     if (a != 2)
179       fail ();
180
181     call (skip_input);
182     ok ();
183   }
184 }
185
186 state test_primconcat
187 {
188   BEGIN {
189     if (strcmp (concat ("a", "b", "c"), "abc") != 0)
190       fail ();
191     call (skip_input);
192   }
193 }
194
195 state test_primfloat
196 {
197   BEGIN {
198     if (float (/f/) != 0.0)
199       fail ();
200     if (float (list (1, 2, 3)) != 3.0)
201       fail ();
202     if (float ("1") != 1.0)
203       fail ();
204     if (float ("1.34") != 1.34)
205       fail ();
206     if (float ("") != 0.0)
207       fail ();
208     if (float (1) != 1.0)
209       fail ();
210     if (float (1.1) != 1.1)
211       fail ();
212     call (skip_input);
213   }
214 }
215
216 state test_primgetenv
217 {
218   BEGIN {
219     if (strcmp (getenv ("STATES_DATA"), "ok") != 0)
220       fail ();
221     call (skip_input);
222   }
223 }
224
225 state test_primint
226 {
227   BEGIN {
228     if (int (/a/) != 0)
229       fail ();
230     if (int (list (1, 2, 3, 4)) != 4)
231       fail ();
232     if (int ("1") != 1)
233       fail ();
234     if (int ("1.5") != 1)
235       fail ();
236     if (int ("") != 0)
237       fail ();
238     if (int (3) != 3)
239       fail ();
240     if (int (1.1) != 1)
241       fail ();
242     call (skip_input);
243   }
244 }
245
246 state test_primlength
247 {
248   BEGIN {
249     if (length ("ab") != 2)
250       fail ();
251     if (length (list (1, 2, "3", /4/)) != 4)
252       fail ();
253     call (skip_input);
254   }
255 }
256
257 state test_primlist
258 {
259   BEGIN {
260     lst = list (1, "2", /3/, 4);
261     if (lst[0] != 1)
262       fail ();
263     if (lst[3] != 4)
264       fail ();
265     call (skip_input);
266   }
267 }
268
269 state test_primprint
270 {
271   BEGIN {
272     print ("ok", 1, /2/);
273     call (skip_input);
274   }
275 }
276
277 state test_primregexp
278 {
279   BEGIN {
280     re = regexp (".*");
281     if (!regmatch ("abcd", re))
282       fail ();
283     call (skip_input);
284   }
285 }
286
287 state test_primregexp_syntax
288 {
289   BEGIN {
290     regexp_syntax ('-', 'w');
291     if (regmatch ("foo-bar", /\bbar\b/))
292       fail ();
293     call (skip_input);
294   }
295 }
296
297 state test_primregmatch
298 {
299   BEGIN {
300     if (!regmatch ("abcde foo bar", /[a-z]+ ([a-z]+)/))
301       fail ();
302     if (strcmp ($0, "abcde foo") != 0)
303       fail ();
304     if (strcmp ($1, "foo") != 0)
305       fail ();
306     call (skip_input);
307   }
308 }
309
310 state test_primregsub
311 {
312   BEGIN {
313     if (strcmp (regsub ("a.b.c.d", /\./, "_"), "a_b.c.d") != 0)
314       fail ();
315     call (skip_input);
316   }
317 }
318
319 state test_primregsuball
320 {
321   BEGIN {
322     if (strcmp (regsuball ("a.b.c.d", /\./, "_"), "a_b_c_d") != 0)
323       fail ();
324     call (skip_input);
325   }
326 }
327
328 state test_primsprintf
329 {
330   BEGIN {
331     str = sprintf ("%d: foo %s %.2f", 1, "bar", 1.0);
332     if (strcmp (str, "1: foo bar 1.00") != 0)
333       fail ();
334     call (skip_input);
335   }
336 }
337
338 state test_primstrcmp
339 {
340   BEGIN {
341     if (strcmp ("a", "b") != -1)
342       fail ();
343     if (strcmp ("aa", "a") != 1)
344       fail ();
345     if (strcmp ("a", "a") != 0)
346       fail ();
347     call (skip_input);
348   }
349 }
350
351 state test_primstring
352 {
353   BEGIN {
354     str = concat (string (1), string ("a"));
355     if (strcmp (str, "1a") != 0)
356       fail ();
357     call (skip_input);
358   }
359 }
360
361 state test_primstrncmp
362 {
363   BEGIN {
364     if (strncmp ("a", "ab", 1) != 0)
365       fail ();
366     if (strncmp ("aaa", "a", 2) != 1)
367       fail ();
368     call (skip_input);
369   }
370 }
371
372 state test_primsubstring
373 {
374   BEGIN {
375     if (strcmp (substring ("abcdef", 1, 3), "bc") != 0)
376       fail ();
377     call (skip_input);
378   }
379 }
380
381 \f
382 /*
383 Local Variables:
384 mode: c
385 End:
386 */