From 8d8c20221d6fc044f69dacd831854d6fd7826e95 Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Tue, 5 Aug 2025 12:37:11 +0200 Subject: [PATCH] Add assertion library (testify) and cartridge tests --- gb/cartridge.go | 7 ++++--- gb/cartridge_test.go | 21 +++++++++++++++++++++ go.mod | 8 ++++++++ go.sum | 10 ++++++++++ 4 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 gb/cartridge_test.go diff --git a/gb/cartridge.go b/gb/cartridge.go index f52fa2c..9676426 100644 --- a/gb/cartridge.go +++ b/gb/cartridge.go @@ -1,6 +1,7 @@ package gb import ( + "bytes" "encoding/binary" "io" "log" @@ -53,7 +54,7 @@ var cartridgeTypes = map[byte]string{ // RAM sizes // https://gbdev.io/pandocs/The_Cartridge_Header.html#0149--ram-size var ramSizes = map[byte]string{ - 0x00: "0 - No RAM ", + 0x00: "0 - No RAM", 0x01: "UNUSED VALUE", 0x02: "8 KiB - 1 bank", 0x03: "32 KiB - 4 banks of 8 KiB each", @@ -244,7 +245,7 @@ type Cartridge struct { } func Insert(filename string) Cartridge { - file, err := os.Open("rom.gb") + file, err := os.Open(filename) if err != nil { log.Fatal(err) } @@ -270,7 +271,7 @@ func Insert(filename string) Cartridge { } // Convert some header values - cartridge.Title = string(header.Title[:]) + cartridge.Title = string(bytes.Trim(header.Title[:], "\x00")) cartridge.Mapper = cartridgeTypes[header.CartridgeType] if header.OldLicenseeCode == 0x33 { // FIXME(m): Support new licensee codes diff --git a/gb/cartridge_test.go b/gb/cartridge_test.go new file mode 100644 index 0000000..e0521a9 --- /dev/null +++ b/gb/cartridge_test.go @@ -0,0 +1,21 @@ +package gb + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestInsertCartridge(t *testing.T) { + cartridge := Insert("../rom.gb") + assert := assert.New(t) + + assert.Equal(cartridge.Title, "SEIKEN DENSETSU") + assert.Equal(cartridge.Mapper, "MBC2+BATTERY") + assert.Equal(cartridge.Licensee, "Square") + assert.False(cartridge.SGBSupport, "SGB support should be false") + assert.Equal(cartridge.ROMSize, 256) + assert.Equal(cartridge.RAMSize, "0 - No RAM") + assert.Equal(cartridge.Destination, "Overseas only") + assert.Equal(cartridge.Version, 0) +} diff --git a/go.mod b/go.mod index 1efc6be..adda519 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,11 @@ module gb-player go 1.24.5 + +require github.com/stretchr/testify v1.10.0 + +require ( + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/go.sum b/go.sum index e69de29..713a0b4 100644 --- a/go.sum +++ b/go.sum @@ -0,0 +1,10 @@ +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=