tests: add test for queue implementation

This commit is contained in:
Stevan Freeborn
2025-12-13 07:40:48 -06:00
parent 3560f6b538
commit 0a2407ec1d
+86
View File
@@ -1 +1,87 @@
package queue_test
import (
"testing"
"github.com/StevanFreeborn/advent-of-code-2025/internal/queue"
)
func TestQueue_EnqueueDequeue(t *testing.T) {
q := queue.New[int]()
q.Enqueue(1)
q.Enqueue(2)
q.Enqueue(3)
expectedValues := []int{1, 2, 3}
for _, expected := range expectedValues {
value, ok := q.Dequeue()
if !ok {
t.Errorf("expected dequeue to be successful, but it failed")
}
if value != expected {
t.Errorf("expected value to be %d, got %d", expected, value)
}
}
_, ok := q.Dequeue()
if ok {
t.Errorf("expected dequeue to fail on empty queue, but it succeeded")
}
if !q.IsEmpty() {
t.Errorf("expected queue to be empty, but it is not")
}
}
func TestQueue_Size(t *testing.T) {
q := queue.New[string]()
if q.Size() != 0 {
t.Errorf("expected size to be 0, got %d", q.Size())
}
q.Enqueue("a")
q.Enqueue("b")
if q.Size() != 2 {
t.Errorf("expected size to be 2, got %d", q.Size())
}
q.Dequeue()
if q.Size() != 1 {
t.Errorf("expected size to be 1, got %d", q.Size())
}
}
func TestQueue_ConcurrentAccess(t *testing.T) {
q := queue.New[int]()
done := make(chan bool)
numGoroutines := 100
numItemsPerGoroutine := 100
for i := range numGoroutines {
go func(start int) {
for j := range numItemsPerGoroutine {
q.Enqueue(start + j)
}
done <- true
}(i * numItemsPerGoroutine)
}
for range numGoroutines {
<-done
}
expectedSize := numGoroutines * numItemsPerGoroutine
if q.Size() != expectedSize {
t.Errorf("expected size to be %d, got %d", expectedSize, q.Size())
}
}