package safe_bool import ( "os" "testing" . "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes" ) type tester struct { t *testing.T sb ISafeBool } func TestSAfeBool(t *testing.T) { sf := &tester{ t: t, } sf.create() sf.set() sf.reset() sf.newFromEnv() sf.newFromStr() } // Булево из строки. func (sf *tester) newFromStr() { sf.t.Log("newFromStr") sf.newFromStrBad1() sf.newFromStrGood1() } func (sf *tester) newFromStrGood1() { sf.t.Log("newFromStrGood1") res := NewSafeBoolFromStr("tRuE") if res.IsErr() { sf.t.Fatalf("newFromStrGood1(): err=%v", res.Err()) } sb := res.Ok() if val := sb.Get(); val != true { sf.t.Fatalf("newFromStrGood1(): val==false") } } // Кривое булево значение. func (sf *tester) newFromStrBad1() { sf.t.Log("newFromStrBad1") res := NewSafeBoolFromStr("0") if res.IsOk() { sf.t.Fatalf("newFromStrBad1(): err==nil") } } // Булево из окружения. func (sf *tester) newFromEnv() { sf.t.Log("newFromEnv") sf.newFromEnvBad1() sf.newFromEnvGood1() sf.newFromEnvGood2() } func (sf *tester) newFromEnvGood2() { sf.t.Log("newFromEnvGood2") _ = os.Unsetenv("TEST_BOOL") _ = os.Setenv("TEST_BOOL", "false") res := NewSafeBoolGetenv("TEST_BOOL") if res.IsErr() { sf.t.Fatalf("newFromEnvGood2(): err=%v", res.Err()) } sb := res.Ok() if val := sb.Get(); val != false { sf.t.Fatalf("newFromEnvGood2(): val==true") } } func (sf *tester) newFromEnvGood1() { sf.t.Log("newFromEnvGood1") _ = os.Unsetenv("TEST_BOOL") _ = os.Setenv("TEST_BOOL", "true") res := NewSafeBoolGetenv("TEST_BOOL") if res.IsErr() { sf.t.Fatalf("newFromEnvGood1(): err=%v", res.Err()) } sb := res.Ok() if val := sb.Get(); val != true { sf.t.Fatalf("newFromEnvGood1(): val==false") } } // Кривое булево значение. func (sf *tester) newFromEnvBad1() { sf.t.Log("newFromStrBad1") _ = os.Unsetenv("TEST_BOOL") _ = os.Setenv("TEST_BOOL", "bad") res := NewSafeBoolGetenv("TEST_BOOL") if res.IsOk() { sf.t.Fatalf("newFromStrBad1(): err==nil") } } // Сбрасывает хранимое значение. func (sf *tester) reset() { sf.t.Log("reset") sf.sb.Reset() if sf.sb.Get() { sf.t.Fatalf("reset(): SafeBool==true") } sf.sb.Reset() if sf.sb.Get() { sf.t.Fatalf("reset(): SafeBool==true") } } // Установка хранимого значения. func (sf *tester) set() { sf.t.Log("set") sf.sb.Set() if !sf.sb.Get() { sf.t.Fatalf("set(): SafeBool==true") } sf.sb.Set() if !sf.sb.Get() { sf.t.Fatalf("set(): SafeBool==true") } } // Создаёт потокобезопасный булевый признак. func (sf *tester) create() { sf.t.Log("create") sf.sb = NewSafeBool() if sf.sb == nil { sf.t.Fatalf("create(): SafeBool==nil") } if sf.sb.Get() { sf.t.Fatalf("create(): SafeBool==true") } }