package envy_test import ( "testing" "time" "olexsmir.xyz/x/envy" "olexsmir.xyz/x/is" ) func TestGet(t *testing.T) { env := "TESTING" t.Run("string", func(t *testing.T) { t.Setenv(env, "asdf") is.Equal(t, "asdf", envy.Get[string](env)) }) t.Run("string, not set", func(t *testing.T) { is.Equal(t, "", envy.Get[string](env)) }) t.Run("int", func(t *testing.T) { t.Setenv("TESTING", "123") is.Equal(t, 123, envy.Get[int](env)) }) t.Run("int, not set", func(t *testing.T) { is.Equal(t, 0, envy.Get[int](env)) }) t.Run("int64", func(t *testing.T) { t.Setenv(env, "112233") is.Equal(t, 112233, envy.Get[int64](env)) }) t.Run("int64, not set", func(t *testing.T) { is.Equal(t, 0, envy.Get[int64](env)) }) t.Run("float64", func(t *testing.T) { t.Setenv(env, "123.123") is.Equal(t, 123.123, envy.Get[float64](env)) }) t.Run("float64, not set", func(t *testing.T) { is.Equal(t, 0, envy.Get[float64](env)) }) t.Run("bool", func(t *testing.T) { t.Setenv(env, "true") is.Equal(t, true, envy.Get[bool](env)) }) t.Run("bool, not set", func(t *testing.T) { is.Equal(t, false, envy.Get[bool](env)) }) t.Run("time.Duration", func(t *testing.T) { t.Setenv(env, "3s") got := envy.Get[time.Duration](env) is.Equal(t, 3*time.Second, got) }) t.Run("time.Duration, not set", func(t *testing.T) { got := envy.Get[time.Duration](env) is.Equal(t, 0, got) }) } func TestGetOrDefault(t *testing.T) { env := "TESTING" t.Run("string, unset", func(t *testing.T) { is.Equal(t, "asdf", envy.GetOrDefault(env, "asdf")) }) t.Run("string, unset", func(t *testing.T) { t.Setenv(env, "test") is.Equal(t, "test", envy.GetOrDefault(env, "asdf")) }) }