github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/lang/expressions/parameters_test.go (about) 1 package expressions_test 2 3 import ( 4 "fmt" 5 "math/rand" 6 "testing" 7 "time" 8 9 "github.com/lmorg/murex/test" 10 ) 11 12 func TestParamHangBug(t *testing.T) { 13 const config = ` 14 config: set proc strict-vars false; 15 config: set proc strict-arrays false; 16 ` 17 18 tests := []test.MurexTest{ 19 // string 20 { 21 Block: `out: $FOO{BAR}`, 22 Stdout: "{BAR}\n", 23 }, 24 { 25 Block: `out: $ FOO{BAR}`, 26 Stdout: "$ FOO{BAR}\n", 27 }, 28 { 29 Block: `out: ${out}`, 30 Stdout: "\n", 31 }, 32 { 33 Block: `out: $FOO`, 34 Stdout: "\n", 35 }, 36 { 37 Block: `out: $FOO[BAR]`, 38 Stdout: "\n", 39 }, 40 { 41 Block: `out: $ FOO[BAR]`, 42 Stdout: "$ FOO[BAR]\n", 43 }, 44 { 45 Block: `out: $[out]`, 46 Stdout: "$[out]\n", 47 }, 48 { 49 Block: `out: $FOO(BAR)`, 50 Stdout: "(BAR)\n", 51 }, 52 { 53 Block: `out: $(out)`, 54 Stdout: "\n", 55 }, 56 // array 57 { 58 Block: `out: @FOO{BAR}`, 59 Stdout: "{BAR}\n", 60 }, 61 { 62 Block: `out: @ FOO{BAR}`, 63 Stdout: "@ FOO{BAR}\n", 64 }, 65 { 66 Block: `out: @{out}`, 67 Stdout: "\n", 68 }, 69 { 70 Block: `out: @FOO`, 71 Stdout: "\n", 72 }, 73 { 74 Block: `out: @ FOO[BAR]`, 75 Stdout: "@ FOO[BAR]\n", 76 }, 77 { 78 Block: `out: @ FOO[[BAR]]`, 79 Stdout: "@ FOO[[BAR]]\n", 80 }, 81 { 82 Block: `out: @[out]`, 83 Stdout: "@[out]\n", 84 }, 85 { 86 Block: `out: @[[out]]`, 87 Stdout: "@[[out]]\n", 88 }, 89 { 90 Block: `out: @FOO(BAR)`, 91 Stdout: "(BAR)\n", 92 }, 93 { 94 Block: `out: @(out)`, 95 Stdout: "@(out)\n", 96 }, 97 } 98 99 for i := range tests { 100 tests[i].Block = config + tests[i].Block 101 } 102 103 test.RunMurexTests(tests, t) 104 } 105 106 func TestParamVarRange(t *testing.T) { 107 rand.Seed(time.Now().Unix()) 108 109 test1, test2, test3 := rand.Int(), rand.Int(), rand.Int() 110 111 tests := []test.MurexTest{ 112 { 113 Block: fmt.Sprintf(` 114 a: [Monday..Friday] -> set: %s%d 115 out: @%s%d[2..] 116 `, 117 t.Name(), test1, t.Name(), test1, 118 ), 119 Stdout: "^Wednesday Thursday Friday\n$", 120 }, 121 { 122 Block: fmt.Sprintf(` 123 ja: [Monday..Friday] -> set: %s%d 124 out: @%s%d[2..3] 125 `, 126 t.Name(), test2, t.Name(), test2, 127 ), 128 Stdout: "^Wednesday Thursday\n$", 129 }, 130 { 131 Block: fmt.Sprintf(` 132 ja: [Monday..Friday] -> set: %s%d 133 out: @%s%d[..1] 134 `, 135 t.Name(), test3, t.Name(), test3, 136 ), 137 Stdout: "^Monday Tuesday\n$", 138 }, 139 } 140 141 test.RunMurexTestsRx(tests, t) 142 }