github.com/Konstantin8105/c4go@v0.0.0-20240505174241-768bb1c65a51/tests/goto.c (about)

     1  #include <stdio.h>
     2  #include <time.h>
     3  
     4  #include "tests.h"
     5  
     6  #define START_TEST(t) \
     7      diag(#t);         \
     8      test_##t();
     9  
    10  void test_goto1()
    11  {
    12      int i = 0;
    13  
    14  mylabel:
    15      i++;
    16  
    17      if (i > 5) {
    18          fail("Parameter i = %d, but expect 1", i);
    19          return;
    20      }
    21  
    22      if (i == 1) {
    23          goto mylabel;
    24      }
    25  
    26      is_eq(i, 2);
    27  }
    28  
    29  void test_goto2()
    30  {
    31      int i = 0;
    32      int j = 0;
    33  
    34  mylabel:
    35      i++, j++;
    36  
    37      if (j > 5) {
    38          fail("Parameter j = %d, but expect 1", j);
    39          return;
    40      }
    41      if (i == 1) {
    42          goto mylabel;
    43      }
    44  
    45      is_eq(i, 2);
    46      is_eq(j, 2);
    47  }
    48  
    49  void test_goto_stmt()
    50  {
    51      int i = 0, j = 0;
    52  
    53  mylabel:
    54      for (j = 0; j < 5; j++)
    55          i++;
    56  
    57      if (i < 15) {
    58          goto mylabel;
    59      }
    60  
    61      is_eq(i, 15);
    62  }
    63  
    64  int main()
    65  {
    66      plan(4);
    67  
    68      START_TEST(goto1)
    69      START_TEST(goto2)
    70      START_TEST(goto_stmt)
    71  
    72      done_testing();
    73  }