Files
deep_go/homework/slices_and_arrays/homework_test.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())
}