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()) }