logb/level_test.go

72 lines
975 B
Go
Executable File

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])
}
}
}