added more int parsing and tests
This commit is contained in:
91
env/boolean_test.go
vendored
Normal file
91
env/boolean_test.go
vendored
Normal file
@@ -0,0 +1,91 @@
|
||||
package env
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestBool(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
key string
|
||||
value string
|
||||
defaultValue bool
|
||||
expected bool
|
||||
shouldSet bool
|
||||
}{
|
||||
// Truthy values
|
||||
{"true lowercase", "TEST_BOOL", "true", false, true, true},
|
||||
{"true uppercase", "TEST_BOOL", "TRUE", false, true, true},
|
||||
{"true mixed case", "TEST_BOOL", "TrUe", false, true, true},
|
||||
{"t", "TEST_BOOL", "t", false, true, true},
|
||||
{"T", "TEST_BOOL", "T", false, true, true},
|
||||
{"yes", "TEST_BOOL", "yes", false, true, true},
|
||||
{"YES", "TEST_BOOL", "YES", false, true, true},
|
||||
{"y", "TEST_BOOL", "y", false, true, true},
|
||||
{"Y", "TEST_BOOL", "Y", false, true, true},
|
||||
{"on", "TEST_BOOL", "on", false, true, true},
|
||||
{"ON", "TEST_BOOL", "ON", false, true, true},
|
||||
{"1", "TEST_BOOL", "1", false, true, true},
|
||||
{"enable", "TEST_BOOL", "enable", false, true, true},
|
||||
{"ENABLE", "TEST_BOOL", "ENABLE", false, true, true},
|
||||
{"enabled", "TEST_BOOL", "enabled", false, true, true},
|
||||
{"ENABLED", "TEST_BOOL", "ENABLED", false, true, true},
|
||||
{"active", "TEST_BOOL", "active", false, true, true},
|
||||
{"ACTIVE", "TEST_BOOL", "ACTIVE", false, true, true},
|
||||
{"affirmative", "TEST_BOOL", "affirmative", false, true, true},
|
||||
{"AFFIRMATIVE", "TEST_BOOL", "AFFIRMATIVE", false, true, true},
|
||||
|
||||
// Falsy values
|
||||
{"false lowercase", "TEST_BOOL", "false", true, false, true},
|
||||
{"false uppercase", "TEST_BOOL", "FALSE", true, false, true},
|
||||
{"false mixed case", "TEST_BOOL", "FaLsE", true, false, true},
|
||||
{"f", "TEST_BOOL", "f", true, false, true},
|
||||
{"F", "TEST_BOOL", "F", true, false, true},
|
||||
{"no", "TEST_BOOL", "no", true, false, true},
|
||||
{"NO", "TEST_BOOL", "NO", true, false, true},
|
||||
{"n", "TEST_BOOL", "n", true, false, true},
|
||||
{"N", "TEST_BOOL", "N", true, false, true},
|
||||
{"off", "TEST_BOOL", "off", true, false, true},
|
||||
{"OFF", "TEST_BOOL", "OFF", true, false, true},
|
||||
{"0", "TEST_BOOL", "0", true, false, true},
|
||||
{"disable", "TEST_BOOL", "disable", true, false, true},
|
||||
{"DISABLE", "TEST_BOOL", "DISABLE", true, false, true},
|
||||
{"disabled", "TEST_BOOL", "disabled", true, false, true},
|
||||
{"DISABLED", "TEST_BOOL", "DISABLED", true, false, true},
|
||||
{"inactive", "TEST_BOOL", "inactive", true, false, true},
|
||||
{"INACTIVE", "TEST_BOOL", "INACTIVE", true, false, true},
|
||||
{"negative", "TEST_BOOL", "negative", true, false, true},
|
||||
{"NEGATIVE", "TEST_BOOL", "NEGATIVE", true, false, true},
|
||||
|
||||
// Whitespace handling
|
||||
{"true with spaces", "TEST_BOOL", " true ", false, true, true},
|
||||
{"false with spaces", "TEST_BOOL", " false ", true, false, true},
|
||||
|
||||
// Default values
|
||||
{"not set default true", "TEST_BOOL_NOTSET", "", true, true, false},
|
||||
{"not set default false", "TEST_BOOL_NOTSET", "", false, false, false},
|
||||
|
||||
// Invalid values should return default
|
||||
{"invalid value default true", "TEST_BOOL", "invalid", true, true, true},
|
||||
{"invalid value default false", "TEST_BOOL", "invalid", false, false, true},
|
||||
{"empty string default true", "TEST_BOOL", "", true, true, true},
|
||||
{"empty string default false", "TEST_BOOL", "", false, false, true},
|
||||
{"random text default true", "TEST_BOOL", "maybe", true, true, true},
|
||||
{"random text default false", "TEST_BOOL", "maybe", false, false, true},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
if tt.shouldSet {
|
||||
os.Setenv(tt.key, tt.value)
|
||||
defer os.Unsetenv(tt.key)
|
||||
}
|
||||
|
||||
result := Bool(tt.key, tt.defaultValue)
|
||||
if result != tt.expected {
|
||||
t.Errorf("Bool() = %v, want %v", result, tt.expected)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user