87 lines
1.7 KiB
Go
87 lines
1.7 KiB
Go
|
|
package main
|
||
|
|
|
||
|
|
import (
|
||
|
|
"reflect"
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
"github.com/stretchr/testify/assert"
|
||
|
|
)
|
||
|
|
|
||
|
|
// go test -v homework_test.go
|
||
|
|
|
||
|
|
type CircularQueue struct {
|
||
|
|
values []int
|
||
|
|
// need to implement
|
||
|
|
}
|
||
|
|
|
||
|
|
func NewCircularQueue(size int) CircularQueue {
|
||
|
|
return CircularQueue{} // need to implement
|
||
|
|
}
|
||
|
|
|
||
|
|
func (q *CircularQueue) Push(value int) bool {
|
||
|
|
return false // need to implement
|
||
|
|
}
|
||
|
|
|
||
|
|
func (q *CircularQueue) Pop() bool {
|
||
|
|
return false // need to implement
|
||
|
|
}
|
||
|
|
|
||
|
|
func (q *CircularQueue) Front() int {
|
||
|
|
return -1 // need to implement
|
||
|
|
}
|
||
|
|
|
||
|
|
func (q *CircularQueue) Back() int {
|
||
|
|
return -1 // need to implement
|
||
|
|
}
|
||
|
|
|
||
|
|
func (q *CircularQueue) Empty() bool {
|
||
|
|
return false // need to implement
|
||
|
|
}
|
||
|
|
|
||
|
|
func (q *CircularQueue) Full() bool {
|
||
|
|
return false // need to implement
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestCircularQueue(t *testing.T) {
|
||
|
|
const queueSize = 3
|
||
|
|
queue := NewCircularQueue(queueSize)
|
||
|
|
|
||
|
|
assert.True(t, queue.Empty())
|
||
|
|
assert.False(t, queue.Full())
|
||
|
|
|
||
|
|
assert.Equal(t, -1, queue.Front())
|
||
|
|
assert.Equal(t, -1, queue.Back())
|
||
|
|
assert.False(t, queue.Pop())
|
||
|
|
|
||
|
|
assert.True(t, queue.Push(1))
|
||
|
|
assert.True(t, queue.Push(2))
|
||
|
|
assert.True(t, queue.Push(3))
|
||
|
|
assert.False(t, queue.Push(4))
|
||
|
|
|
||
|
|
assert.True(t, reflect.DeepEqual([]int{1, 2, 3}, queue.values))
|
||
|
|
|
||
|
|
assert.False(t, queue.Empty())
|
||
|
|
assert.True(t, queue.Full())
|
||
|
|
|
||
|
|
assert.Equal(t, 1, queue.Front())
|
||
|
|
assert.Equal(t, 3, queue.Back())
|
||
|
|
|
||
|
|
assert.True(t, queue.Pop())
|
||
|
|
assert.False(t, queue.Empty())
|
||
|
|
assert.False(t, queue.Full())
|
||
|
|
assert.True(t, queue.Push(4))
|
||
|
|
|
||
|
|
assert.True(t, reflect.DeepEqual([]int{4, 2, 3}, queue.values))
|
||
|
|
|
||
|
|
assert.Equal(t, 2, queue.Front())
|
||
|
|
assert.Equal(t, 4, queue.Back())
|
||
|
|
|
||
|
|
assert.True(t, queue.Pop())
|
||
|
|
assert.True(t, queue.Pop())
|
||
|
|
assert.True(t, queue.Pop())
|
||
|
|
assert.False(t, queue.Pop())
|
||
|
|
|
||
|
|
assert.True(t, queue.Empty())
|
||
|
|
assert.False(t, queue.Full())
|
||
|
|
}
|