1
0
mirror of https://github.com/ariejan/i6502.git synced 2024-06-11 08:29:35 +00:00
i6502/address_bus_test.go
Ariejan de Vroom 8bf1e629e6 Update testify assert methods
`assert.Equal` now tests for type equality as well, which means
256 != 0xff. The alternative is to use `assert.EqualValues`
2015-04-09 09:20:04 +02:00

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))
}