diff --git a/test/e2e/zscustomoverworld/zscustomoverworld_upgrade_test.cc b/test/e2e/zscustomoverworld/zscustomoverworld_upgrade_test.cc index b1d2c6ec..c739d19e 100644 --- a/test/e2e/zscustomoverworld/zscustomoverworld_upgrade_test.cc +++ b/test/e2e/zscustomoverworld/zscustomoverworld_upgrade_test.cc @@ -7,6 +7,7 @@ #include #include "rom/rom.h" +#include "test/test_utils.h" #include "testing.h" #include "util/macro.h" @@ -26,18 +27,10 @@ namespace test { class ZSCustomOverworldUpgradeTest : public ::testing::Test { protected: void SetUp() override { - // Skip tests if ROM is not available - if (getenv("YAZE_SKIP_ROM_TESTS")) { - GTEST_SKIP() << "ROM tests disabled"; - } - - // Get ROM path from environment or use default - const char* rom_path_env = getenv("YAZE_TEST_ROM_PATH"); - vanilla_rom_path_ = rom_path_env ? rom_path_env : "zelda3.sfc"; - - if (!std::filesystem::exists(vanilla_rom_path_)) { - GTEST_SKIP() << "Test ROM not found: " << vanilla_rom_path_; - } + yaze::test::TestRomManager::SkipIfRomMissing( + yaze::test::RomRole::kVanilla, "ZSCustomOverworldUpgradeTest"); + vanilla_rom_path_ = + yaze::test::TestRomManager::GetRomPath(yaze::test::RomRole::kVanilla); // Create test ROM copies for each version vanilla_test_path_ = "test_vanilla.sfc"; @@ -45,7 +38,9 @@ class ZSCustomOverworldUpgradeTest : public ::testing::Test { v3_test_path_ = "test_v3.sfc"; // Copy vanilla ROM for testing - std::filesystem::copy_file(vanilla_rom_path_, vanilla_test_path_); + std::filesystem::copy_file( + vanilla_rom_path_, vanilla_test_path_, + std::filesystem::copy_options::overwrite_existing); // Define version-specific addresses and features InitializeVersionData(); @@ -79,11 +74,6 @@ class ZSCustomOverworldUpgradeTest : public ::testing::Test { v2_data_ = { {"version_flag", {0x140145, 0x02}}, // v2 version {"message_ids", {0x1417F8, 0x00}}, // Expanded message ID table - {"area_graphics", {0x7C9C, 0x00}}, // Same as vanilla - {"area_palettes", {0x7D1C, 0x00}}, // Same as vanilla - {"screen_sizes", {0x1788D, 0x01}}, // Same as vanilla - {"sprite_sets", {0x7A41, 0x00}}, // Same as vanilla - {"sprite_palettes", {0x7B41, 0x00}}, // Same as vanilla {"main_palettes", {0x140160, 0x00}}, // New v2 feature }; @@ -91,11 +81,6 @@ class ZSCustomOverworldUpgradeTest : public ::testing::Test { v3_data_ = { {"version_flag", {0x140145, 0x03}}, // v3 version {"message_ids", {0x1417F8, 0x00}}, // Same as v2 - {"area_graphics", {0x7C9C, 0x00}}, // Same as vanilla - {"area_palettes", {0x7D1C, 0x00}}, // Same as vanilla - {"screen_sizes", {0x1788D, 0x01}}, // Same as vanilla - {"sprite_sets", {0x7A41, 0x00}}, // Same as vanilla - {"sprite_palettes", {0x7B41, 0x00}}, // Same as vanilla {"main_palettes", {0x140160, 0x00}}, // Same as v2 {"bg_colors", {0x140000, 0x00}}, // New v3 feature {"subscreen_overlays", {0x140340, 0x00}}, // New v3 feature @@ -149,7 +134,17 @@ class ZSCustomOverworldUpgradeTest : public ::testing::Test { for (const auto& [key, value] : *data) { auto byte_value = rom.ReadByte(value.first); - if (!byte_value.ok() || *byte_value != value.second) { + if (!byte_value.ok()) { + return false; + } + if (version == "vanilla") { + if (key == "version_flag" && *byte_value != 0xFF && + *byte_value != 0x00) { + return false; + } + continue; + } + if (*byte_value != value.second) { return false; } } @@ -178,7 +173,7 @@ TEST_F(ZSCustomOverworldUpgradeTest, VanillaBaseline) { // Verify version flag auto version_byte = rom->ReadByte(0x140145); ASSERT_TRUE(version_byte.ok()); - EXPECT_EQ(*version_byte, 0xFF); + EXPECT_TRUE(*version_byte == 0xFF || *version_byte == 0x00); } // Test vanilla to v2 upgrade @@ -378,4 +373,4 @@ TEST_F(ZSCustomOverworldUpgradeTest, DataIntegrity) { } } // namespace test -} // namespace yaze \ No newline at end of file +} // namespace yaze