github.com/rclone/rclone@v1.66.1-0.20240517100346-7b89735ae726/fs/terminalcolormode_test.go (about) 1 package fs 2 3 import ( 4 "encoding/json" 5 "strconv" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestTerminalColorModeString(t *testing.T) { 13 for _, test := range []struct { 14 in TerminalColorMode 15 want string 16 }{ 17 {TerminalColorModeAuto, "AUTO"}, 18 {TerminalColorModeAlways, "ALWAYS"}, 19 {TerminalColorModeNever, "NEVER"}, 20 {36, "Unknown(36)"}, 21 } { 22 tcm := test.in 23 assert.Equal(t, test.want, tcm.String(), test.in) 24 } 25 } 26 27 func TestTerminalColorModeSet(t *testing.T) { 28 for _, test := range []struct { 29 in string 30 want TerminalColorMode 31 expectError bool 32 }{ 33 {"auto", TerminalColorModeAuto, false}, 34 {"ALWAYS", TerminalColorModeAlways, false}, 35 {"Never", TerminalColorModeNever, false}, 36 {"INVALID", 0, true}, 37 } { 38 tcm := TerminalColorMode(0) 39 err := tcm.Set(test.in) 40 if test.expectError { 41 require.Error(t, err, test.in) 42 } else { 43 require.NoError(t, err, test.in) 44 } 45 assert.Equal(t, test.want, tcm, test.in) 46 } 47 } 48 49 func TestTerminalColorModeUnmarshalJSON(t *testing.T) { 50 for _, test := range []struct { 51 in string 52 want TerminalColorMode 53 expectError bool 54 }{ 55 {`"auto"`, TerminalColorModeAuto, false}, 56 {`"ALWAYS"`, TerminalColorModeAlways, false}, 57 {`"Never"`, TerminalColorModeNever, false}, 58 {`"Invalid"`, 0, true}, 59 {strconv.Itoa(int(TerminalColorModeAuto)), TerminalColorModeAuto, false}, 60 {strconv.Itoa(int(TerminalColorModeAlways)), TerminalColorModeAlways, false}, 61 {strconv.Itoa(int(TerminalColorModeNever)), TerminalColorModeNever, false}, 62 {`99`, 0, true}, 63 {`-99`, 0, true}, 64 } { 65 var tcm TerminalColorMode 66 err := json.Unmarshal([]byte(test.in), &tcm) 67 if test.expectError { 68 require.Error(t, err, test.in) 69 } else { 70 require.NoError(t, err, test.in) 71 } 72 assert.Equal(t, test.want, tcm, test.in) 73 } 74 }