github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/lang/expressions/noglob/noglob_test.go (about) 1 package noglob 2 3 import ( 4 "strings" 5 "testing" 6 7 "github.com/lmorg/murex/test/count" 8 "github.com/lmorg/murex/utils/json" 9 ) 10 11 func TestCanGlobCmd(t *testing.T) { 12 falses := []string{"foo", "bar"} 13 trues := append(noGlobCmds, "cast", "format", "select", "find", "regexp") 14 15 count.Tests(t, len(trues)+len(falses)) 16 17 for i := range trues { 18 v := canGlobCmd(trues[i]) 19 if v != true { 20 t.Errorf("Returned `%s` expected `%s`: '%s'", "false", "true", trues[i]) 21 } 22 } 23 24 for i := range falses { 25 v := canGlobCmd(falses[i]) 26 if v != false { 27 t.Errorf("Returned `%s` expected `%s`: '%s'", "true", "false", falses[i]) 28 } 29 } 30 } 31 32 func TestReadNoGlobCmds(t *testing.T) { 33 count.Tests(t, 1) 34 35 v, err := ReadNoGlobCmds() 36 if err != nil { 37 t.Error(err.Error()) 38 } 39 40 switch v.(type) { 41 case []string: 42 // success 43 default: 44 t.Errorf("incorrect type. Should be a []string") 45 } 46 } 47 48 func TestWriteNoGlobCmds(t *testing.T) { 49 count.Tests(t, 5) 50 51 noGlobCmdsDefault := make([]string, len(noGlobCmds)) 52 copy(noGlobCmdsDefault, noGlobCmds) 53 defer copy(noGlobCmds, noGlobCmdsDefault) 54 55 var v interface{} 56 57 v = 13 58 err := WriteNoGlobCmds(v) 59 if err == nil || !strings.Contains(err.Error(), "invalid data-type") { 60 t.Error("invalid data-type accepted:", err) 61 } 62 63 v = []string{"foo", "bar"} 64 err = WriteNoGlobCmds(v) 65 if err == nil || !strings.Contains(err.Error(), "invalid data-type") { 66 t.Error("invalid data-type accepted:", err) 67 } 68 69 v = "foobar" 70 err = WriteNoGlobCmds(v) 71 if err == nil { 72 t.Error("value not marshalled as JSON:", err) 73 } 74 75 v = `{"foo": "bar"}` 76 err = WriteNoGlobCmds(v) 77 if err == nil { 78 t.Error("invalid JSON object accepted:", err) 79 } 80 81 v = `["foo"]` 82 err = WriteNoGlobCmds(v) 83 if err != nil { 84 t.Error("JSON object should have be valid:", err) 85 } 86 if len(noGlobCmds) != 1 || noGlobCmds[0] != "foo" { 87 t.Errorf("noGlobCmds incorrectly set: %s", json.LazyLogging(noGlobCmds)) 88 } 89 }