From a4c1d40faaf7383e504ba11c985057a4eb2da640 Mon Sep 17 00:00:00 2001 From: dudaodong Date: Tue, 26 Apr 2022 10:45:19 +0800 Subject: [PATCH] test: add unit test for PriorityQueue Enqueue function --- datastructure/queue/priorityqueue.go | 10 ++++++ datastructure/queue/priorityqueue_test.go | 41 +++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 datastructure/queue/priorityqueue_test.go diff --git a/datastructure/queue/priorityqueue.go b/datastructure/queue/priorityqueue.go index baeaceb..deb4997 100644 --- a/datastructure/queue/priorityqueue.go +++ b/datastructure/queue/priorityqueue.go @@ -34,6 +34,16 @@ func (q *PriorityQueue[T]) IsFull() bool { return q.size == len(q.items)-1 } +// Data return data slice in the queue +func (q *PriorityQueue[T]) Data() []T { + data := make([]T, q.size) + for i := 1; i < q.size+1; i++ { + data[i-1] = q.items[i] + } + + return data +} + // Enqueue insert value into queue func (q *PriorityQueue[T]) Enqueue(val T) error { if q.IsFull() { diff --git a/datastructure/queue/priorityqueue_test.go b/datastructure/queue/priorityqueue_test.go new file mode 100644 index 0000000..7acd753 --- /dev/null +++ b/datastructure/queue/priorityqueue_test.go @@ -0,0 +1,41 @@ +package datastructure + +import ( + "testing" + + "github.com/duke-git/lancet/v2/internal" +) + +type intComparator struct{} + +func (c *intComparator) Compare(v1, v2 any) int { + val1, _ := v1.(int) + val2, _ := v2.(int) + + if val1 < val2 { + return -1 + } else if val1 > val2 { + return 1 + } + return 0 +} +func TestPriorityQueue_Enqueue(t *testing.T) { + assert := internal.NewAssert(t, "TestPriorityQueue_Enqueue") + + comparator := &intComparator{} + pq := NewPriorityQueue[int](10, comparator) + + assert.Equal(true, pq.IsEmpty()) + assert.Equal(false, pq.IsFull()) + + for i := 1; i < 11; i++ { + pq.Enqueue(i) + } + + assert.Equal(true, pq.IsFull()) + + queueData := pq.Data() + assert.Equal([]int{10, 9, 6, 7, 8, 2, 5, 1, 4, 3}, queueData) + + // assert.IsNotNil(err) +}