package logb import ( "sync" "testing" "time" ) func TestNewLevel(t *testing.T) { NewLevel() } func TestConsts(t *testing.T) { for _, c := range []int{ cInfo, cWarn, cError, cDebug, cVerbose, } { l := Level{Level: c} if l.String() == "undefined" { t.Error(l) } } } func TestLevelLock(t *testing.T) { l := NewLevel() doLock := &sync.WaitGroup{} doLock.Add(1) didLock := make(chan struct{}) go func() { doLock.Wait() l.Lock.Lock() didLock <- struct{}{} }() l.Lock.Lock() doLock.Done() select { case <-didLock: t.Error("did a lock while locked") case <-time.After(time.Millisecond * 50): l.Lock.Unlock() <-didLock } } func TestLevelShould(t *testing.T) { levels := []Level{ ERROR, WARN, INFO, DEBUG, VERBOSE, } for i := range levels { okayed := 0 for j := range levels { should := levels[i].Should(levels[j]) if should { okayed += 1 } } if okayed != i+1 { t.Error(levels[i]) } } }