package circ_test import ( "testing" "gogs.humancabbage.net/sam/priorityq/circ" ) func TestRepeatPushPop(t *testing.T) { t.Parallel() cb := circ.Make[int](4) for i := 0; i < 50; i++ { cb.PushBack(1) cb.PushBack(2) cb.PushBack(3) cb.PushBack(4) checkPop := func(n int) { if v := cb.PopFront(); v != n { t.Errorf("popped %d, expected %d", v, n) } } checkPop(1) checkPop(2) checkPop(3) checkPop(4) } } func TestInterleavedPushPop(t *testing.T) { t.Parallel() cb := circ.Make[int](4) checkPop := func(n int) { if v := cb.PopFront(); v != n { t.Errorf("popped %d, expected %d", v, n) } } cb.PushBack(1) cb.PushBack(2) cb.PushBack(3) checkPop(1) cb.PushBack(4) cb.PushBack(5) checkPop(2) } func TestEmptyPopPanic(t *testing.T) { defer func() { if r := recover(); r == nil { t.Errorf("popping empty buffer did not panic") } }() t.Parallel() cb := circ.Make[int](4) cb.PopFront() } func TestFullPushPanic(t *testing.T) { defer func() { if r := recover(); r == nil { t.Errorf("pushing full buffer did not panic") } }() t.Parallel() cb := circ.Make[int](1) cb.PushBack(1) cb.PushBack(2) }