package chip8_test import ( "testing" "github.com/stretchr/testify/assert" "github.com/tangzero/chip8-emulator/chip8" ) func TestEmulator_StackPush(t *testing.T) { emulator := chip8.NewEmulator() emulator.PC = 0xABCD emulator.StackPush() assert.Equal(t, uint8(0xAB), emulator.Memory[chip8.StackAddress]) assert.Equal(t, uint8(0xCD), emulator.Memory[chip8.StackAddress+1]) assert.Equal(t, chip8.StackAddress+2, emulator.SP) } func TestEmulator_StackPush_Overflow(t *testing.T) { emulator := chip8.NewEmulator() defer func() { assert.Equal(t, "chip8: stack overflow", recover()) }() emulator.SP = chip8.StackAddress + chip8.StackSize*2 emulator.StackPush() } func TestEmulator_StackPop(t *testing.T) { emulator := chip8.NewEmulator() emulator.SP = chip8.StackAddress + 32 emulator.Memory[chip8.StackAddress+30] = 0xEE emulator.Memory[chip8.StackAddress+31] = 0xFF emulator.StackPop() assert.Equal(t, uint16(0xEEFF), emulator.PC) assert.Equal(t, chip8.StackAddress+30, emulator.SP) } func TestEmulator_StackPop_Empty(t *testing.T) { emulator := chip8.NewEmulator() defer func() { assert.Equal(t, "chip8: nothing to pop from stack", recover()) }() emulator.StackPop() }