From 945b82a3caf0c112d01c1a18c6b9c052cc87e285 Mon Sep 17 00:00:00 2001 From: Samuel Walker Date: Thu, 30 Jan 2025 15:17:54 -0700 Subject: [PATCH] added cart unit tests --- include/cart.h | 4 +++- lib/cart.c | 8 ++++++-- tests/test.c | 15 +++++++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/include/cart.h b/include/cart.h index b8bd113..464625e 100644 --- a/include/cart.h +++ b/include/cart.h @@ -19,4 +19,6 @@ typedef struct { u16 global_checksum; } rom_header; -bool cart_load(char *cart); \ No newline at end of file +bool cart_load(char *cart); + +rom_header *get_rom_header(); \ No newline at end of file diff --git a/lib/cart.c b/lib/cart.c index 618b136..39753b8 100644 --- a/lib/cart.c +++ b/lib/cart.c @@ -5,9 +5,9 @@ typedef struct { u32 rom_size; u8 *rom_data; rom_header *header; -} cert_context; +} cart_context; -static cert_context ctx; +static cart_context ctx; static const char *ROM_TYPES[] = { "ROM ONLY", @@ -111,6 +111,10 @@ static const char *LIC_CODE[0xA5] = { [0xA4] = "Konami (Yu-Gi-Oh!)" }; +rom_header *get_rom_header() { + return ctx.header; +} + const char *cart_type_name() { if(ctx.header->type <= 0x22) { return ROM_TYPES[ctx.header->type]; diff --git a/tests/test.c b/tests/test.c index 8311738..f7bb279 100644 --- a/tests/test.c +++ b/tests/test.c @@ -5,17 +5,32 @@ #include #include +#include START_TEST(test_nothing) { bool b = cpu_step(); ck_assert_uint_eq(b, false); } END_TEST +START_TEST(test_cart) { + bool b = cart_load("../../roms/cpu_instrs.gb"); + ck_assert_uint_eq(b, true); + rom_header *header = get_rom_header(); + ck_assert_str_eq(header->title, "CPU_INSTRS"); + ck_assert_uint_eq(header->type, 0x01); + ck_assert_uint_eq(header->rom_size, 0x01); + ck_assert_uint_eq(header->ram_size, 0x00); + ck_assert_uint_eq(header->lic_code, 0x00); + ck_assert_uint_eq(header->version, 0x00); + ck_assert_uint_eq(header->checksum, 0x3B); +} END_TEST + Suite *stack_suite() { Suite *s = suite_create("emu"); TCase *tc = tcase_create("core"); tcase_add_test(tc, test_nothing); + tcase_add_test(tc, test_cart); suite_add_tcase(s, tc); return s;