github.com/diamondburned/arikawa/v2@v2.1.0/bot/error_test.go (about) 1 package bot 2 3 import ( 4 "errors" 5 "strings" 6 "testing" 7 ) 8 9 func TestInvalidUsage(t *testing.T) { 10 t.Run("fmt", func(t *testing.T) { 11 err := ErrInvalidUsage{ 12 Prefix: "!", 13 Args: []string{"hime", "arikawa"}, 14 Index: 1, 15 Wrap: errors.New("test error"), 16 } 17 str := err.Error() 18 19 if !strings.Contains(str, "test error") { 20 t.Fatal("does not contain 'test error':", str) 21 } 22 23 if !strings.Contains(str, "__arikawa__") { 24 t.Fatal("Unexpected highlight index:", str) 25 } 26 }) 27 28 t.Run("missing arguments", func(t *testing.T) { 29 err := ErrInvalidUsage{} 30 str := err.Error() 31 32 if str != "missing arguments. Refer to help." { 33 t.Fatal("Unexpected error:", str) 34 } 35 }) 36 37 t.Run("no index", func(t *testing.T) { 38 err := ErrInvalidUsage{Wrap: errors.New("astolfo")} 39 str := err.Error() 40 41 if str != "invalid usage, error: astolfo." { 42 t.Fatal("Unexpected error:", str) 43 } 44 }) 45 46 t.Run("unwrap", func(t *testing.T) { 47 var err = errors.New("hackadoll no. 3") 48 var wrap = &ErrInvalidUsage{ 49 Wrap: err, 50 } 51 52 if !errors.Is(wrap, err) { 53 t.Fatal("Failed to unwrap, errors mismatch.") 54 } 55 }) 56 }