You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
naza/pkg/circularqueue/circular_queue_test.go

126 lines
2.5 KiB
Go

// Copyright 2020, Chef. All rights reserved.
// https://github.com/q191201771/naza
//
// Use of this source code is governed by a MIT-style license
// that can be found in the License file.
//
// Author: Chef (191201771@qq.com)
package circularqueue_test
import (
"testing"
"github.com/q191201771/naza/pkg/assert"
"github.com/q191201771/naza/pkg/circularqueue"
)
func TestCircularQueue(t *testing.T) {
var (
err error
n int
b bool
v interface{}
)
q := circularqueue.New(3)
assert.IsNotNil(t, q)
// empty
_, err = q.PopFront()
assert.IsNotNil(t, err)
_, err = q.Front()
assert.IsNotNil(t, err)
_, err = q.Back()
assert.IsNotNil(t, err)
_, err = q.At(0)
assert.IsNotNil(t, err)
n = q.Size()
assert.Equal(t, 0, n)
b = q.Full()
assert.Equal(t, false, b)
b = q.Empty()
assert.Equal(t, true, b)
err = q.PushBack(1)
assert.Equal(t, nil, err)
// [1]
v, err = q.Front()
assert.Equal(t, nil, err)
assert.Equal(t, 1, v.(int))
v, err = q.Back()
assert.Equal(t, nil, err)
assert.Equal(t, 1, v.(int))
v, err = q.At(0)
assert.Equal(t, nil, err)
assert.Equal(t, 1, v.(int))
n = q.Size()
assert.Equal(t, 1, n)
b = q.Full()
assert.Equal(t, false, b)
b = q.Empty()
assert.Equal(t, false, b)
err = q.PushBack(2)
assert.Equal(t, nil, err)
err = q.PushBack(3)
assert.Equal(t, nil, err)
// [1, 2, 3]
v, err = q.Front()
assert.Equal(t, nil, err)
assert.Equal(t, 1, v.(int))
v, err = q.Back()
assert.Equal(t, nil, err)
assert.Equal(t, 3, v.(int))
v, err = q.At(0)
assert.Equal(t, nil, err)
assert.Equal(t, 1, v.(int))
v, err = q.At(1)
assert.Equal(t, nil, err)
assert.Equal(t, 2, v.(int))
v, err = q.At(2)
assert.Equal(t, nil, err)
assert.Equal(t, 3, v.(int))
n = q.Size()
assert.Equal(t, 3, n)
b = q.Full()
assert.Equal(t, true, b)
b = q.Empty()
assert.Equal(t, false, b)
v, err = q.PopFront()
assert.Equal(t, nil, err)
assert.Equal(t, 1, v.(int))
err = q.PushBack(400)
assert.Equal(t, nil, err)
err = q.PushBack(500)
assert.IsNotNil(t, err)
// [2, 3, 400]
v, err = q.Front()
assert.Equal(t, nil, err)
assert.Equal(t, 2, v.(int))
v, err = q.Back()
assert.Equal(t, nil, err)
assert.Equal(t, 400, v.(int))
v, err = q.At(0)
assert.Equal(t, nil, err)
assert.Equal(t, 2, v.(int))
v, err = q.At(1)
assert.Equal(t, nil, err)
assert.Equal(t, 3, v.(int))
v, err = q.At(2)
assert.Equal(t, nil, err)
assert.Equal(t, 400, v.(int))
n = q.Size()
assert.Equal(t, 3, n)
b = q.Full()
assert.Equal(t, true, b)
b = q.Empty()
assert.Equal(t, false, b)
}