Files
leetcode/data-structure/ds-queue_test.go
T
2026-07-20 19:57:25 +08:00

62 lines
1.1 KiB
Go

package ds
import "testing"
func TestQueueFIFO(t *testing.T) {
var q Queue[int]
if !q.Empty() {
t.Fatal("新建队列应为空")
}
if _, ok := q.Dequeue(); ok {
t.Fatal("空队列 Dequeue 应返回 false")
}
q.Enqueue(1)
q.Enqueue(2)
q.Enqueue(3)
if q.Len() != 3 {
t.Fatalf("Len = %d, want 3", q.Len())
}
// FIFO 顺序
for _, want := range []int{1, 2, 3} {
got, ok := q.Dequeue()
if !ok {
t.Fatalf("Dequeue 失败,期望 %d", want)
}
if got != want {
t.Fatalf("Dequeue = %d, want %d", got, want)
}
}
if !q.Empty() {
t.Fatal("全部出队后应为空")
}
}
func TestQueueFront(t *testing.T) {
var q Queue[string]
q.Enqueue("x")
q.Enqueue("y")
f, ok := q.Front()
if !ok || f != "x" {
t.Fatalf("Front = %q,%v, want \"x\",true", f, ok)
}
_, _ = q.Dequeue()
f, _ = q.Front()
if f != "y" {
t.Fatalf("第二次 Front = %q, want \"y\"", f)
}
}
func TestQueueCompactNoGrowth(t *testing.T) {
// 大量入队/出队后,逻辑长度正确且不泄漏内存。
var q Queue[int]
for i := 0; i < 1000; i++ {
q.Enqueue(i)
_, _ = q.Dequeue()
}
if !q.Empty() {
t.Fatal("1000 次入队+出队后应为空")
}
}