github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/builtins/core/structs/break_test.go (about) 1 package structs_test 2 3 import ( 4 "testing" 5 6 "github.com/lmorg/murex/test" 7 ) 8 9 func TestReturn(t *testing.T) { 10 tests := []test.MurexTest{ 11 { 12 Block: `out 0; return; out 2`, 13 Stdout: "0\n", 14 }, 15 { 16 Block: `out 1; return 0; out 2`, 17 Stdout: "1\n", 18 }, 19 { 20 Block: `out 2; return 3; out 2`, 21 Stdout: "2\n", 22 ExitNum: 3, 23 }, 24 { 25 Block: ` 26 function TestReturn3 { 27 out 3 28 return 4 29 out 5 30 } 31 TestReturn3`, 32 Stdout: "3\n", 33 ExitNum: 4, 34 }, 35 { 36 Block: ` 37 function TestReturn4 { 38 out 4 39 return 5 40 out 6 41 } 42 TestReturn4 43 exitnum`, 44 Stdout: "4\n5\n", 45 ExitNum: 0, 46 }, 47 } 48 49 test.RunMurexTests(tests, t) 50 } 51 52 func TestBreak(t *testing.T) { 53 tests := []test.MurexTest{ 54 { 55 Block: ` 56 function TestBreak0 { 57 out 3 58 break TestBreak0 59 out 5 60 } 61 TestBreak0`, 62 Stdout: "3\n", 63 ExitNum: 0, 64 }, 65 { 66 Block: ` 67 function TestBreak1 { 68 out 4 69 break TestBreak1 70 out 6 71 } 72 TestBreak1 73 exitnum`, 74 Stdout: "4\n0\n", 75 ExitNum: 0, 76 }, 77 { 78 Block: ` 79 function TestBreak2 { 80 %[1..5] -> foreach i { 81 out $i 82 if { $i == 3 } then { 83 break foreach 84 } 85 out "foobar" 86 } 87 } 88 TestBreak2`, 89 Stdout: "1\nfoobar\n2\nfoobar\n3\n", 90 ExitNum: 0, 91 }, 92 { 93 Block: ` 94 function TestBreak3 { 95 %[1..5] -> foreach i { 96 out $i 97 if { $i == 3 } then { 98 break TestBreak3 99 } 100 out "foobar" 101 } 102 } 103 TestBreak3`, 104 Stdout: "1\nfoobar\n2\nfoobar\n3\n", 105 ExitNum: 0, 106 }, 107 } 108 109 test.RunMurexTests(tests, t) 110 } 111 112 func TestContinue(t *testing.T) { 113 tests := []test.MurexTest{ 114 { 115 Block: ` 116 function TestContinue0 { 117 out 3 118 continue TestContinue0 119 out 5 120 } 121 TestContinue0`, 122 Stdout: "3\n5\n", 123 ExitNum: 0, 124 }, 125 { 126 Block: ` 127 function TestContinue1 { 128 out 4 129 continue TestContinue1 130 out 6 131 } 132 TestContinue1 133 exitnum`, 134 Stdout: "4\n6\n0\n", 135 ExitNum: 0, 136 }, 137 { 138 Block: ` 139 function TestContinue2 { 140 %[1..5] -> foreach i { 141 out $i 142 if { $i == 3 } then { 143 continue foreach 144 } 145 out "foobar" 146 } 147 } 148 TestContinue2`, 149 Stdout: "1\nfoobar\n2\nfoobar\n3\n4\nfoobar\n5\nfoobar\n", 150 ExitNum: 0, 151 }, 152 { 153 Block: ` 154 function TestContinue3 { 155 %[1..5] -> foreach i { 156 out $i 157 if { $i == 3 } then { 158 continue TestContinue3 159 } 160 out "foobar" 161 } 162 } 163 TestContinue3`, 164 Stdout: "1\nfoobar\n2\nfoobar\n3\n", 165 ExitNum: 0, 166 }, 167 } 168 169 test.RunMurexTests(tests, t) 170 }