package safe_int import ( "os" "testing" . "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes" ) type tester struct { t *testing.T si ISafeInt } func TestSafeInt(t *testing.T) { sf := &tester{ t: t, } { sf.new() sf.newGetenv() sf.newFromStr() sf.set() sf.reset() sf.fromStr() sf.getEnv() } { sf.inc() sf.dec() sf.fromBool() sf.toBool() sf.toStr() sf.byte() } } func (sf *tester) byte() { sf.t.Log("byte") res := NewSafeInt(1234) binData := res.ToByte() if len(binData) != 8 { sf.t.Fatalf("byte(): len val(%v)!='123''", len(binData)) } resVal := res.FromByte(binData) resVal.Hassert("from []byte") val := resVal.Val() if val != 1234 { sf.t.Fatalf("byte(): val(%v)!=1234", val) } } func (sf *tester) toStr() { sf.t.Log("toStr") res := NewSafeInt(123) val := res.ToStr() if val != "123" { sf.t.Fatalf("dec(): val(%v)!='123''", val) } } func (sf *tester) toBool() { sf.t.Log("toBool") res := NewSafeInt(0) val := res.ToBool() if val { sf.t.Fatalf("toBool(): val(%v)!=false", val) } } func (sf *tester) fromBool() { sf.t.Log("fromBool") res := NewSafeInt(12) val := res.FromBool(true) if val != -1 { sf.t.Fatalf("fromBool(): val(%v)!=-1", val) } } func (sf *tester) dec() { sf.t.Log("dec") res := NewSafeInt(10) res.Dec() if val := res.Get(); val != 9 { sf.t.Fatalf("dec(): val(%v)!=9", val) } } func (sf *tester) inc() { sf.t.Log("inc") res := NewSafeInt(52) res.Inc() if val := res.Get(); val != 53 { sf.t.Fatalf("inc(): val(%v)!=53", val) } } // Получает целое из строки func (sf *tester) newFromStr() { sf.t.Log("newFromStr") res := NewSafeIntFromStr("-a52") if res.IsOk() { sf.t.Fatalf("newFromStr(): err==nil") } res = NewSafeIntFromStr("-60") if res.IsErr() { sf.t.Fatalf("newFromStr(): err=%v", res.Err()) } if val := res.Val(); val.Get() != -60 { sf.t.Fatalf("newFromStr(): val(%v)!=-60", val.Get()) } } // Получает целое из окружения func (sf *tester) newGetenv() { sf.t.Log("newGetenv") res := NewSafeIntGetenv("TEST_ENV2") if res.IsOk() { sf.t.Fatalf("newGetenv(): err==nil") } os.Unsetenv("TEST_ENV2") os.Setenv("TEST_ENV2", "-52") res = NewSafeIntGetenv("TEST_ENV2") if res.IsErr() { sf.t.Fatalf("newGetenv(): err=%v", res.Err()) } if val := res.Val(); val.Get() != -52 { sf.t.Fatalf("newGetenv(): val(%v)!=-52", val.Get()) } } // Получает значение из окружения func (sf *tester) getEnv() { sf.t.Log("getEnv") sf.getEnvBad1() sf.getEnvGood1() } func (sf *tester) getEnvGood1() { sf.t.Log("getEnvGood1") os.Unsetenv("TEST_VAL") os.Setenv("TEST_VAL", "45") val := NewSafeInt(0) res := val.Getenv("TEST_VAL") if res.IsErr() { sf.t.Fatalf("getEnvGood1(): err=%v", res.Err()) } if val := res.Val(); val != 45 { sf.t.Fatalf("getEnvGood1(): val(%v)!=45", val) } } // Окружение не число func (sf *tester) getEnvBad1() { sf.t.Log("getEnvBad1") os.Unsetenv("TEST_VAL") os.Setenv("TEST_VAL", "") val := NewSafeInt(0) res := val.Getenv("TEST_VAL") if res.IsOk() { sf.t.Fatalf("getEnvBad1(): res==ok") } } // Получает значение из строки func (sf *tester) fromStr() { sf.t.Log("fromStr") sf.fromStrBad1() sf.fromStrGood1() } func (sf *tester) fromStrGood1() { sf.t.Log("fromStrGood1") val := NewSafeInt(0) res := val.FromStr("45") if res.IsErr() { sf.t.Fatalf("fromStrGood1(): err=%v", res.Err()) } if val := res.Val(); val != 45 { sf.t.Fatalf("fromStrGood1(): val(%v)!=45", val) } } // Строка не число func (sf *tester) fromStrBad1() { sf.t.Log("fromStrBad1") val := NewSafeInt(0) res := val.FromStr(" ") if res.IsOk() { sf.t.Fatalf("fromStrBad1(): res==ok") } } // Сбрасывает хранимое значение func (sf *tester) reset() { sf.t.Log("reset") sf.si.Reset() if sf.si.Get() != 0 { sf.t.Fatalf("reset(): ISafeInt!=0") } sf.si.Reset() if sf.si.Get() != 0 { sf.t.Fatalf("reset(): ISafeInt!=0") } } // Установка хранимого значения func (sf *tester) set() { sf.t.Log("set") sf.si.Set(77) if sf.si.Get() != 77 { sf.t.Fatalf("set(): ISafeInt!=77") } sf.si.Set(-56) if sf.si.Get() != -56 { sf.t.Fatalf("set(): ISafeInt!=-56") } } // Создаёт потокобезопасный булевый признак func (sf *tester) new() { sf.t.Log("new") sf.si = NewSafeInt(0) if sf.si == nil { sf.t.Fatalf("new(): ISafeInt==nil") } if sf.si.Get() != 0 { sf.t.Fatalf("new(): ISafeInt!=0") } }