mirror of https://github.com/q191201771/naza
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.
126 lines
2.5 KiB
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)
|
|
}
|