50 lines
890 B
Go
50 lines
890 B
Go
package chip8_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/tangzero/chip8-emulator/chip8"
|
|
)
|
|
|
|
func TestStack_Push(t *testing.T) {
|
|
stack := chip8.NewStack()
|
|
|
|
stack.Push(0xABCD)
|
|
stack.Push(0xCDEF)
|
|
stack.Push(0x9999)
|
|
|
|
assert.Equal(t, []uint16{0xABCD, 0xCDEF, 0x9999}, stack.Values)
|
|
}
|
|
|
|
func TestStack_Push_Overflow(t *testing.T) {
|
|
stack := chip8.NewStack()
|
|
|
|
defer func() {
|
|
assert.Equal(t, "chip8: stack overflow", recover())
|
|
}()
|
|
|
|
for {
|
|
stack.Push(0xCAFE)
|
|
}
|
|
}
|
|
|
|
func TestEmulator_StackPop(t *testing.T) {
|
|
stack := chip8.NewStack()
|
|
|
|
stack.Values = append(stack.Values, 0xCAFE)
|
|
|
|
assert.Equal(t, uint16(0xCAFE), stack.Pop())
|
|
assert.Equal(t, []uint16{}, stack.Values)
|
|
}
|
|
|
|
func TestEmulator_StackPop_Empty(t *testing.T) {
|
|
stack := chip8.NewStack()
|
|
|
|
defer func() {
|
|
assert.Equal(t, "chip8: nothing to pop from stack", recover())
|
|
}()
|
|
|
|
stack.Pop()
|
|
}
|