package safebool

import "testing"

/*
	Тест для потокобезопасного булевого признака
*/

// Тестер для булевого признака
type tester struct {
	t  *testing.T
	sb *SafeBool
}

func TestSafeBool(t *testing.T) {
	test := &tester{
		t: t,
	}
	test.create()
	test.set()
}

// Присовение и сброс признака
func (sf *tester) set() {
	sf.t.Logf("=set=\n")
	sf.sb.Set()
	if isReset := sf.sb.Get(); !isReset {
		sf.t.Errorf("create(): isReset==true\n")
	}
	sf.sb.Reset()
	if isSet := sf.sb.Get(); isSet {
		sf.t.Errorf("create(): isSet==true\n")
	}
}

// Создание признака
func (sf *tester) create() {
	sf.t.Logf("=create=\n")
	sf.sb = NewSafeBool()
	if sf.sb == nil {
		sf.t.Errorf("create(): safeBool==nil\n")
	}
	if isSet := sf.sb.Get(); isSet {
		sf.t.Errorf("create(): isSet==true\n")
	}
}
