package vfscommon import ( "encoding/json" "strconv" "testing" "github.com/spf13/pflag" "github.com/stretchr/testify/assert" ) // Check CacheMode it satisfies the pflag interface var _ pflag.Value = (*CacheMode)(nil) // Check CacheMode it satisfies the json.Unmarshaller interface var _ json.Unmarshaler = (*CacheMode)(nil) func TestCacheModeString(t *testing.T) { assert.Equal(t, "off", CacheModeOff.String()) assert.Equal(t, "full", CacheModeFull.String()) assert.Equal(t, "CacheMode(17)", CacheMode(17).String()) } func TestCacheModeSet(t *testing.T) { var m CacheMode err := m.Set("full") assert.NoError(t, err) assert.Equal(t, CacheModeFull, m) err = m.Set("potato") assert.Error(t, err, "Unknown cache mode level") err = m.Set("") assert.Error(t, err, "Unknown cache mode level") } func TestCacheModeType(t *testing.T) { var m CacheMode assert.Equal(t, "CacheMode", m.Type()) } func TestCacheModeUnmarshalJSON(t *testing.T) { var m CacheMode err := json.Unmarshal([]byte(`"full"`), &m) assert.NoError(t, err) assert.Equal(t, CacheModeFull, m) err = json.Unmarshal([]byte(`"potato"`), &m) assert.Error(t, err, "Unknown cache mode level") err = json.Unmarshal([]byte(`""`), &m) assert.Error(t, err, "Unknown cache mode level") err = json.Unmarshal([]byte(strconv.Itoa(int(CacheModeFull))), &m) assert.NoError(t, err) assert.Equal(t, CacheModeFull, m) err = json.Unmarshal([]byte("-1"), &m) assert.Error(t, err, "Unknown cache mode level") err = json.Unmarshal([]byte("99"), &m) assert.Error(t, err, "Unknown cache mode level") }