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