| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 |
- 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")
- }
- }
|