u
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
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 次入队+出队后应为空")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user