mirror of
https://github.com/duke-git/lancet.git
synced 2025-10-05 07:26:51 +08:00
149 lines
2.8 KiB
Go
149 lines
2.8 KiB
Go
package datastructure
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/duke-git/lancet/v2/internal"
|
|
)
|
|
|
|
func TestCircularQueue_Enqueue(t *testing.T) {
|
|
assert := internal.NewAssert(t, "TestCircularQueue_Enqueue")
|
|
|
|
queue := NewCircularQueue[int](6)
|
|
queue.Enqueue(1)
|
|
queue.Enqueue(2)
|
|
queue.Enqueue(3)
|
|
queue.Enqueue(4)
|
|
queue.Enqueue(5)
|
|
|
|
queue.Print()
|
|
// assert.Equal([]int{1, 2, 3, 4, 5}, queue.Data())
|
|
assert.Equal(5, queue.Length())
|
|
|
|
err := queue.Enqueue(6)
|
|
assert.IsNotNil(err)
|
|
}
|
|
|
|
func TestCircularQueue_Dequeue(t *testing.T) {
|
|
assert := internal.NewAssert(t, "TestCircularQueue_DeQueue")
|
|
|
|
queue := NewCircularQueue[int](6)
|
|
assert.Equal(true, queue.IsEmpty())
|
|
|
|
queue.Enqueue(1)
|
|
queue.Enqueue(2)
|
|
queue.Enqueue(3)
|
|
queue.Enqueue(4)
|
|
queue.Enqueue(5)
|
|
|
|
val, err := queue.Dequeue()
|
|
assert.IsNil(err)
|
|
|
|
assert.Equal(1, *val)
|
|
assert.Equal(false, queue.IsFull())
|
|
|
|
val, _ = queue.Dequeue()
|
|
queue.Print()
|
|
assert.Equal(2, *val)
|
|
|
|
queue.Enqueue(6)
|
|
queue.Print()
|
|
assert.Equal(false, queue.IsFull())
|
|
}
|
|
|
|
func TestCircularQueue_Front(t *testing.T) {
|
|
assert := internal.NewAssert(t, "TestCircularQueue_Front")
|
|
|
|
queue := NewCircularQueue[int](6)
|
|
queue.Enqueue(1)
|
|
queue.Enqueue(2)
|
|
queue.Enqueue(3)
|
|
queue.Enqueue(4)
|
|
queue.Enqueue(5)
|
|
|
|
queue.Print()
|
|
|
|
queue.Dequeue()
|
|
queue.Dequeue()
|
|
queue.Enqueue(6)
|
|
queue.Enqueue(7)
|
|
|
|
queue.Print()
|
|
|
|
val := queue.Front()
|
|
assert.Equal(3, val)
|
|
assert.Equal(5, queue.Length())
|
|
}
|
|
|
|
func TestCircularQueue_Back(t *testing.T) {
|
|
assert := internal.NewAssert(t, "TestCircularQueue_Back")
|
|
|
|
queue := NewCircularQueue[int](6)
|
|
assert.Equal(true, queue.IsEmpty())
|
|
|
|
queue.Enqueue(1)
|
|
queue.Enqueue(2)
|
|
queue.Enqueue(3)
|
|
queue.Enqueue(4)
|
|
queue.Enqueue(5)
|
|
|
|
queue.Print()
|
|
assert.Equal(5, queue.Back())
|
|
|
|
queue.Dequeue()
|
|
queue.Dequeue()
|
|
queue.Enqueue(6)
|
|
queue.Enqueue(7)
|
|
|
|
queue.Print()
|
|
assert.Equal(7, queue.Back())
|
|
}
|
|
|
|
func TestCircularQueue_Contain(t *testing.T) {
|
|
assert := internal.NewAssert(t, "TestCircularQueue_Contain")
|
|
|
|
queue := NewCircularQueue[int](2)
|
|
queue.Enqueue(1)
|
|
assert.Equal(true, queue.Contain(1))
|
|
assert.Equal(false, queue.Contain(2))
|
|
}
|
|
|
|
func TestCircularQueue_Clear(t *testing.T) {
|
|
assert := internal.NewAssert(t, "TestCircularQueue_Clear")
|
|
|
|
queue := NewCircularQueue[int](3)
|
|
assert.Equal(true, queue.IsEmpty())
|
|
assert.Equal(0, queue.Length())
|
|
|
|
queue.Enqueue(1)
|
|
assert.Equal(false, queue.IsEmpty())
|
|
assert.Equal(1, queue.Length())
|
|
|
|
queue.Clear()
|
|
assert.Equal(true, queue.IsEmpty())
|
|
assert.Equal(0, queue.Length())
|
|
}
|
|
|
|
func TestCircularQueue_Data(t *testing.T) {
|
|
assert := internal.NewAssert(t, "TestCircularQueue_Data")
|
|
|
|
queue := NewCircularQueue[int](6)
|
|
queue.Enqueue(1)
|
|
queue.Enqueue(2)
|
|
queue.Enqueue(3)
|
|
queue.Enqueue(4)
|
|
queue.Enqueue(5)
|
|
|
|
queue.Print()
|
|
assert.Equal([]int{1, 2, 3, 4, 5}, queue.Data())
|
|
|
|
queue.Dequeue()
|
|
queue.Dequeue()
|
|
queue.Enqueue(6)
|
|
queue.Enqueue(7)
|
|
|
|
queue.Print()
|
|
assert.Equal([]int{3, 4, 5, 6, 7}, queue.Data())
|
|
|
|
}
|