56 lines
1.7 KiB
C++
56 lines
1.7 KiB
C++
#include "zelda3/overworld/overworld_version_helper.h"
|
|
#include "gtest/gtest.h"
|
|
#include "rom/rom.h"
|
|
|
|
namespace yaze::zelda3 {
|
|
|
|
TEST(OverworldVersionHelperTest, GetVersion_VanillaSmallRom) {
|
|
Rom rom;
|
|
std::vector<uint8_t> data(1024 * 1024, 0); // 1MB ROM
|
|
auto status = rom.LoadFromData(data);
|
|
ASSERT_TRUE(status.ok());
|
|
|
|
// Should return Vanilla and not crash
|
|
EXPECT_EQ(OverworldVersionHelper::GetVersion(rom), OverworldVersion::kVanilla);
|
|
}
|
|
|
|
TEST(OverworldVersionHelperTest, GetVersion_VanillaExpandedRom_ZeroFilled) {
|
|
Rom rom;
|
|
std::vector<uint8_t> data(2 * 1024 * 1024, 0); // 2MB ROM, 0 filled
|
|
auto status = rom.LoadFromData(data);
|
|
ASSERT_TRUE(status.ok());
|
|
|
|
EXPECT_EQ(OverworldVersionHelper::GetVersion(rom), OverworldVersion::kVanilla);
|
|
}
|
|
|
|
TEST(OverworldVersionHelperTest, GetVersion_VanillaExpandedRom_FF_Filled) {
|
|
Rom rom;
|
|
std::vector<uint8_t> data(2 * 1024 * 1024, 0xFF); // 2MB ROM, 0xFF filled
|
|
auto status = rom.LoadFromData(data);
|
|
ASSERT_TRUE(status.ok());
|
|
|
|
EXPECT_EQ(OverworldVersionHelper::GetVersion(rom), OverworldVersion::kVanilla);
|
|
}
|
|
|
|
TEST(OverworldVersionHelperTest, GetVersion_V1) {
|
|
Rom rom;
|
|
std::vector<uint8_t> data(2 * 1024 * 1024, 0);
|
|
data[OverworldCustomASMHasBeenApplied] = 1;
|
|
auto status = rom.LoadFromData(data);
|
|
ASSERT_TRUE(status.ok());
|
|
|
|
EXPECT_EQ(OverworldVersionHelper::GetVersion(rom), OverworldVersion::kZSCustomV1);
|
|
}
|
|
|
|
TEST(OverworldVersionHelperTest, GetVersion_V3) {
|
|
Rom rom;
|
|
std::vector<uint8_t> data(2 * 1024 * 1024, 0);
|
|
data[OverworldCustomASMHasBeenApplied] = 3;
|
|
auto status = rom.LoadFromData(data);
|
|
ASSERT_TRUE(status.ok());
|
|
|
|
EXPECT_EQ(OverworldVersionHelper::GetVersion(rom), OverworldVersion::kZSCustomV3);
|
|
}
|
|
|
|
} // namespace yaze::zelda3
|