github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/lang/types/types_test.go (about) 1 package types_test 2 3 import ( 4 "strings" 5 "testing" 6 7 "github.com/lmorg/murex/lang/types" 8 "github.com/lmorg/murex/test/count" 9 ) 10 11 func testIsTrue(t *testing.T, val string, exp bool, exitNum int) { 12 t.Helper() 13 count.Tests(t, 3) 14 var act bool 15 16 act = types.IsTrue([]byte(strings.ToLower(val)), exitNum) 17 if act != exp { 18 t.Error("IsTrue output does not match expected:") 19 t.Log("Value: ", val) 20 t.Log("Expected:", exp) 21 t.Log("Actual: ", act) 22 t.Log("Exit num:", exitNum) 23 t.Log("Case: lower") 24 } 25 26 act = types.IsTrue([]byte(strings.Title(val)), exitNum) 27 if act != exp { 28 t.Error("IsTrue output does not match expected (title):") 29 t.Log("Value: ", val) 30 t.Log("Expected:", exp) 31 t.Log("Actual: ", act) 32 t.Log("Exit num:", exitNum) 33 t.Log("Case: title") 34 } 35 36 act = types.IsTrue([]byte(strings.ToUpper(val)), exitNum) 37 if act != exp { 38 t.Error("IsTrue output does not match expected (upper):") 39 t.Log("Value: ", val) 40 t.Log("Expected:", exp) 41 t.Log("Actual: ", act) 42 t.Log("Exit num:", exitNum) 43 t.Log("Case: upper") 44 } 45 } 46 47 func TestIsTrue(t *testing.T) { 48 tests := map[string]bool{ 49 "": false, 50 "random string": true, 51 "true": true, 52 "false": false, 53 "null": false, 54 "-1": true, 55 "-0": true, 56 "0": false, 57 "1": true, 58 "yes": true, 59 "no": false, 60 "on": true, 61 "of": true, 62 "off": false, 63 "success": true, 64 "pass": true, 65 "fail": false, 66 "failed": false, 67 "positive": true, 68 "negative": true, 69 "enabled": true, 70 "disabled": false, 71 } 72 73 exitNums := map[int]interface{}{ 74 -42: true, 75 -1: true, 76 0: nil, 77 1: false, 78 42: false, 79 } 80 81 for exitNum, override := range exitNums { 82 83 for val, exp := range tests { 84 85 if override != nil { 86 exp = override.(bool) 87 } 88 89 testIsTrue(t, val, exp, exitNum) 90 91 } 92 93 } 94 95 } 96 97 func TestIsBlock(t *testing.T) { 98 tests := map[string]bool{ 99 "": false, 100 101 "{": false, 102 " {": false, 103 "{ ": false, 104 " { ": false, 105 106 "}": false, 107 " }": false, 108 "} ": false, 109 " } ": false, 110 111 "}{": false, 112 " }{": false, 113 "}{ ": false, 114 " }{ ": false, 115 116 "} {": false, 117 " } {": false, 118 "} { ": false, 119 " } { ": false, 120 121 "{}": true, 122 " {}": true, 123 "{} ": true, 124 " {} ": true, 125 126 "{ }": true, 127 " { }": true, 128 "{ } ": true, 129 " { } ": true, 130 131 "{1}": true, 132 " {1}": true, 133 "{1} ": true, 134 " {1} ": true, 135 136 "{ 1}": true, 137 " { 1}": true, 138 "{ 1} ": true, 139 " { 1} ": true, 140 141 "{1 }": true, 142 " {1 }": true, 143 "{1 } ": true, 144 " {1 } ": true, 145 146 "{ 1 }": true, 147 " { 1 }": true, 148 "{ 1 } ": true, 149 " { 1 } ": true, 150 151 "{42}": true, 152 " {42}": true, 153 "{42} ": true, 154 " {42} ": true, 155 156 "{ 42}": true, 157 " { 42}": true, 158 "{ 42} ": true, 159 " { 42} ": true, 160 161 "{42 }": true, 162 " {42 }": true, 163 "{42 } ": true, 164 " {42 } ": true, 165 166 "{ 42 }": true, 167 " { 42 }": true, 168 "{ 42 } ": true, 169 " { 42 } ": true, 170 171 "{f}": true, 172 " {f}": true, 173 "{f} ": true, 174 " {f} ": true, 175 176 "{ f}": true, 177 " { f}": true, 178 "{ f} ": true, 179 " { f} ": true, 180 181 "{f }": true, 182 " {f }": true, 183 "{f } ": true, 184 " {f } ": true, 185 186 "{ f }": true, 187 " { f }": true, 188 "{ f } ": true, 189 " { f } ": true, 190 191 "{foobar}": true, 192 " {foobar}": true, 193 "{foobar} ": true, 194 " {foobar} ": true, 195 196 "{ foobar}": true, 197 " { foobar}": true, 198 "{ foobar} ": true, 199 " { foobar} ": true, 200 201 "{foobar }": true, 202 " {foobar }": true, 203 "{foobar } ": true, 204 " {foobar } ": true, 205 206 "{ foobar }": true, 207 " { foobar }": true, 208 "{ foobar } ": true, 209 " { foobar } ": true, 210 211 "{$}": true, 212 " {$}": true, 213 "{$} ": true, 214 " {$} ": true, 215 216 "{ $}": true, 217 " { $}": true, 218 "{ $} ": true, 219 " { $} ": true, 220 221 "{$ }": true, 222 " {$ }": true, 223 "{$ } ": true, 224 " {$ } ": true, 225 226 "{ $ }": true, 227 " { $ }": true, 228 "{ $ } ": true, 229 " { $ } ": true, 230 231 "{$foobar}": true, 232 " {$foobar}": true, 233 "{$foobar} ": true, 234 " {$foobar} ": true, 235 236 "{ $foobar}": true, 237 " { $foobar}": true, 238 "{ $foobar} ": true, 239 " { $foobar} ": true, 240 241 "{$foobar }": true, 242 " {$foobar }": true, 243 "{$foobar } ": true, 244 " {$foobar } ": true, 245 246 "{ $foobar }": true, 247 " { $foobar }": true, 248 "{ $foobar } ": true, 249 " { $foobar } ": true, 250 251 `{!"£$%^&*()}`: true, 252 ` {!"£$%^&*()}`: true, 253 `{!"£$%^&*()} `: true, 254 ` {!"£$%^&*()} `: true, 255 256 `{!"£$%^&*() }`: true, 257 ` {!"£$%^&*() }`: true, 258 `{!"£$%^&*() } `: true, 259 ` {!"£$%^&*() } `: true, 260 261 `{ !"£$%^&*()}`: true, 262 ` { !"£$%^&*()}`: true, 263 `{ !"£$%^&*()} `: true, 264 ` { !"£$%^&*()} `: true, 265 266 `{ !"£$%^&*() }`: true, 267 ` { !"£$%^&*() }`: true, 268 `{ !"£$%^&*() } `: true, 269 ` { !"£$%^&*() } `: true, 270 } 271 272 count.Tests(t, len(tests)) 273 for val, exp := range tests { 274 act := types.IsBlock([]byte(val)) 275 if act != exp { 276 t.Error("IsBlock output does not match expected:") 277 t.Log("Value: ", val) 278 t.Log("Expected:", exp) 279 t.Log("Actual: ", act) 280 } 281 } 282 }