package safe_string import ( "os" "testing" . "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes" ) type tester struct { t *testing.T ss ISafeString } func TestSafeString(t *testing.T) { sf := &tester{ t: t, } sf.new() sf.set() sf.reset() sf.newFromEnv() } // Булево из окружения 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 := NewSafeStringGetenv("TEST_BOOL") if res.IsErr() { sf.t.Fatalf("newFromEnvGood2(): err=%v", res.Err()) } sb := res.Val() 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 := NewSafeStringGetenv("TEST_BOOL") if res.IsErr() { sf.t.Fatalf("newFromEnvGood1(): err=%v", res.Err()) } sb := res.Val() if val := sb.Get(); val != "true" { sf.t.Fatalf("newFromEnvGood1(): val==false") } } // Кривое булево значение func (sf *tester) newFromEnvBad1() { sf.t.Log("newFromEnvBad1") os.Unsetenv("TEST_BOOL") os.Setenv("TEST_BOOL", "") res := NewSafeStringGetenv("TEST_BOOL") if res.IsOk() { sf.t.Fatalf("newFromEnvBad1(): err==nil") } } // Сбрасывает хранимое значение func (sf *tester) reset() { sf.t.Log("reset") sf.ss.Reset() if sf.ss.Get() != "" { sf.t.Fatalf("reset(): ISafeString!=''") } sf.ss.Reset() if sf.ss.Get() != "" { sf.t.Fatalf("reset(): ISafeString!=''") } _ = sf.ss.Byte() } // Установка хранимого значения func (sf *tester) set() { sf.t.Log("set") sf.ss.Set("77") if sf.ss.Get() != "77" { sf.t.Fatalf("set(): ISafeString!='77'") } sf.ss.Set("-56") if sf.ss.Get() != "-56" { sf.t.Fatalf("set(): ISafeString!='-56'") } } // Создаёт потокобезопасный булевый признак func (sf *tester) new() { sf.t.Log("new") sf.ss = NewSafeString() if sf.ss == nil { sf.t.Fatalf("new(): ISafeString==nil") } if sf.ss.Get() != "" { sf.t.Fatalf("new(): ISafeString!=''") } }