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 }