package safe_bool_react import ( "testing" . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes" ) type tester struct { t *testing.T sbr ISafeBoolReact val bool } func TestSafeBoolReact(t *testing.T) { sf := &tester{ t: t, } sf.create() sf.add() sf.set() sf.reset() sf.del() } // Удаляет функцию обратного вызова func (sf *tester) del() { sf.t.Log("del") sf.sbr.Delete("test") sf.val = false sf.sbr.Set() if sf.val { sf.t.Fatalf("del(): val==true") } } // Добавляет функцию обратного вызова func (sf *tester) add() { sf.t.Log("add") sf.sbr.Add("test", sf.fnBack) } // Функция обратного вызова для контроля func (sf *tester) fnBack(val bool) { sf.val = val } // Сбрасывает хранимое значение func (sf *tester) reset() { sf.t.Log("reset") sf.sbr.Reset() if sf.sbr.Get() { sf.t.Fatalf("reset(): SafeBool==true") } sf.val = true sf.sbr.Reset() if sf.sbr.Get() { sf.t.Fatalf("reset(): SafeBool==true") } if sf.val { sf.t.Fatalf("reset(): val==true") } } // Установка хранимого значения func (sf *tester) set() { sf.t.Log("set") sf.sbr.Set() if !sf.sbr.Get() { sf.t.Fatalf("set(): SafeBool==true") } sf.sbr.Set() if !sf.sbr.Get() { sf.t.Fatalf("set(): SafeBool==true") } if !sf.val { sf.t.Fatalf("set(): val==false") } } // Создаёт потокобезопасный булевый признак func (sf *tester) create() { sf.t.Log("create") sf.sbr = NewSafeBoolReact() if sf.sbr == nil { sf.t.Fatalf("create(): SafeBool==nil") } if sf.sbr.Get() { sf.t.Fatalf("create(): SafeBool==true") } }