mirror of
https://github.com/ariejan/i6502.git
synced 2024-10-31 23:09:44 +00:00
8bf1e629e6
`assert.Equal` now tests for type equality as well, which means 256 != 0xff. The alternative is to use `assert.EqualValues`
67 lines
1.4 KiB
Go
67 lines
1.4 KiB
Go
package i6502
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestEmptyAddressBus(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
bus, err := NewAddressBus()
|
|
|
|
assert.Nil(err)
|
|
|
|
if assert.NotNil(bus) {
|
|
assert.EqualValues(0, len(bus.addressables))
|
|
}
|
|
}
|
|
|
|
func TestAttachToAddressBus(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
bus, _ := NewAddressBus()
|
|
ram, _ := NewRam(0x10000)
|
|
|
|
bus.Attach(ram, 0x0000)
|
|
assert.EqualValues(1, len(bus.addressables))
|
|
}
|
|
|
|
func TestBusReadWrite(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
bus, _ := NewAddressBus()
|
|
ram, _ := NewRam(0x8000)
|
|
ram2, _ := NewRam(0x8000)
|
|
bus.Attach(ram, 0x0000)
|
|
bus.Attach(ram2, 0x8000)
|
|
|
|
// 8-bit Writing
|
|
bus.WriteByte(0x1234, 0xFA)
|
|
assert.EqualValues(0xFA, ram.ReadByte(0x1234))
|
|
|
|
// 16-bit Writing
|
|
bus.Write16(0x1000, 0xAB42)
|
|
assert.EqualValues(0x42, ram.ReadByte(0x1000))
|
|
assert.EqualValues(0xAB, ram.ReadByte(0x1001))
|
|
|
|
// 8-bit Reading
|
|
ram.WriteByte(0x5522, 0xDA)
|
|
assert.EqualValues(0xDA, bus.ReadByte(0x5522))
|
|
|
|
// 16-bit Reading
|
|
ram.WriteByte(0x4440, 0x7F)
|
|
ram.WriteByte(0x4441, 0x56)
|
|
assert.EqualValues(0x567F, bus.Read16(0x4440))
|
|
|
|
//// Test addressing memory not mounted at 0x0000
|
|
|
|
// Read from relative addressable Ram2: $C123
|
|
ram2.WriteByte(0x4123, 0xEF)
|
|
assert.EqualValues(0xEF, bus.ReadByte(0xC123))
|
|
|
|
bus.WriteByte(0x8001, 0x12)
|
|
assert.EqualValues(0x12, ram2.ReadByte(0x0001))
|
|
}
|