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  }