test: Split-up Mescc scaffold test.
[mes.git] / scaffold / tests / 44-switch.c
1 /* -*-comment-start: "//";comment-end:""-*-
2  * Mes --- Maxwell Equations of Software
3  * Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
4  *
5  * This file is part of Mes.
6  *
7  * Mes is free software; you can redistribute it and/or modify it
8  * under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 3 of the License, or (at
10  * your option) any later version.
11  *
12  * Mes is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
19  */
20
21 #include "30-test.i"
22 #include <stdio.h>
23
24 enum type_t {TCHAR, TCLOSURE, TCONTINUATION, TFUNCTION, TKEYWORD, TMACRO, TNUMBER, TPAIR, TREF, TSPECIAL, TSTRING, TSYMBOL, TVALUES, TVECTOR, TBROKEN_HEART};
25
26 int
27 swits (int c)
28 {
29   int x = -1;
30
31   switch (c)
32     {
33     case TCHAR: {goto next;}
34     case 1: {goto next;}
35     case 2: {goto next;}
36     default: {goto next;}
37     }
38
39   return 1;
40  next:
41   switch (c)
42     {
43     case 0:
44       {
45         x = 0;
46         c = 34;
47         break;
48       }
49     case -1:
50     case 1:
51       x = 1;
52       break;
53     default:
54       x = 2;
55       break;
56     }
57   return x;
58 }
59
60 int
61 test ()
62 {
63   puts ("\n");
64   puts ("t: switch 0\n");
65   if (swits (0) != 0) return swits (0);
66
67   puts ("t: switch 1\n");
68   if (swits (1) != 1) return 1;
69
70   puts ("t: switch -1\n");
71   if (swits (-1) != 1) return 1;
72
73   puts ("t: switch -1\n");
74   if (swits (-2) != 2) return 1;
75
76   return 0;
77 }