Add some RAM and a stack
This commit is contained in:
59
gb/stack_test.go
Normal file
59
gb/stack_test.go
Normal file
@@ -0,0 +1,59 @@
|
||||
package gb
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestStackPush(t *testing.T) {
|
||||
cpu := createCPU([]byte{0x00, 0x00, 0x00})
|
||||
|
||||
cpu.StackPush(0xDE)
|
||||
|
||||
// Should decrement the stack pointer
|
||||
assert.Equal(t, cpu.Regs.SP, uint16(0xDFFE))
|
||||
|
||||
// Should write the value to the stack
|
||||
assert.Equal(t, cpu.Bus.Read(cpu.Regs.SP), byte(0xDE))
|
||||
}
|
||||
|
||||
func TestStackPush16(t *testing.T) {
|
||||
cpu := createCPU([]byte{0x00, 0x00, 0x00})
|
||||
|
||||
cpu.StackPush16(0xDEAD)
|
||||
|
||||
// Should decrement the stack pointer twice
|
||||
assert.Equal(t, cpu.Regs.SP, uint16(0xDFFD))
|
||||
|
||||
// Should write the value to the stack
|
||||
assert.Equal(t, cpu.Bus.Read16(cpu.Regs.SP), uint16(0xDEAD))
|
||||
}
|
||||
|
||||
func TestStackPop(t *testing.T) {
|
||||
cpu := createCPU([]byte{0x00, 0x00, 0x00})
|
||||
|
||||
cpu.StackPush(0xDE)
|
||||
|
||||
val := cpu.StackPop()
|
||||
|
||||
// Should increment the stack pointer
|
||||
assert.Equal(t, cpu.Regs.SP, uint16(0xDFFF))
|
||||
|
||||
// Should return the byte value
|
||||
assert.Equal(t, val, byte(0xDE))
|
||||
}
|
||||
|
||||
func TestStackPop16(t *testing.T) {
|
||||
cpu := createCPU([]byte{0x00, 0x00, 0x00})
|
||||
|
||||
cpu.StackPush16(0xBEEF)
|
||||
|
||||
val := cpu.StackPop16()
|
||||
|
||||
// Should increment the stack pointer
|
||||
assert.Equal(t, cpu.Regs.SP, uint16(0xDFFF))
|
||||
|
||||
// Should return the 16 bit value
|
||||
assert.Equal(t, val, uint16(0xBEEF))
|
||||
}
|
||||
Reference in New Issue
Block a user