Refactor E2E ROM tests to improve error handling and readability

- Updated ROM reading assertions to handle potential errors using status checks, enhancing robustness in the E2E tests.
- Simplified byte and word read operations by storing results in variables and checking their status before assertions, improving code clarity.
- Ensured consistency in transaction system tests by applying similar error handling practices.
This commit is contained in:
scawful
2025-09-28 15:24:19 -04:00
parent 3210cc0ab6
commit 41326edd91

View File

@@ -67,7 +67,9 @@ class E2ERomDependentTest : public ::testing::Test {
EXPECT_NE(rom->data(), nullptr) << "ROM data should not be null";
// Check ROM header
EXPECT_EQ(rom->ReadByte(0x7FC0), 0x21) << "ROM should be LoROM format";
auto header_byte = rom->ReadByte(0x7FC0);
RETURN_IF_ERROR(header_byte.status());
EXPECT_EQ(*header_byte, 0x21) << "ROM should be LoROM format";
return absl::OkStatus();
}
@@ -157,12 +159,20 @@ TEST_F(E2ERomDependentTest, ROMDataEditWorkflow) {
std::unique_ptr<Rom> reloaded_rom;
ASSERT_OK(LoadAndVerifyROM(test_rom_path_, reloaded_rom));
EXPECT_EQ(reloaded_rom->ReadByte(0x1000), 0xAA);
EXPECT_EQ(reloaded_rom->ReadByte(0x2000), 0xBB);
EXPECT_EQ(reloaded_rom->ReadWord(0x3000), 0xCCDD);
auto byte1 = reloaded_rom->ReadByte(0x1000);
ASSERT_OK(byte1.status());
EXPECT_EQ(*byte1, 0xAA);
auto byte2 = reloaded_rom->ReadByte(0x2000);
ASSERT_OK(byte2.status());
EXPECT_EQ(*byte2, 0xBB);
auto word1 = reloaded_rom->ReadWord(0x3000);
ASSERT_OK(word1.status());
EXPECT_EQ(*word1, 0xCCDD);
// Verify other data wasn't corrupted
EXPECT_NE(reloaded_rom->ReadByte(0x1000), *initial_byte);
EXPECT_NE(*byte1, *initial_byte);
}
// Test transaction system with multiple edits
@@ -174,9 +184,12 @@ TEST_F(E2ERomDependentTest, TransactionSystem) {
auto transaction = std::make_unique<yaze::Transaction>(*rom);
// Make multiple edits in transaction
ASSERT_OK(transaction->WriteByte(0x1000, 0xAA));
ASSERT_OK(transaction->WriteByte(0x2000, 0xBB));
ASSERT_OK(transaction->WriteWord(0x3000, 0xCCDD));
transaction->WriteByte(0x1000, 0xAA);
transaction->WriteByte(0x2000, 0xBB);
transaction->WriteWord(0x3000, 0xCCDD);
// Commit the transaction
ASSERT_OK(transaction->Commit());
// Commit transaction
ASSERT_OK(transaction->Commit());
@@ -188,9 +201,17 @@ TEST_F(E2ERomDependentTest, TransactionSystem) {
std::unique_ptr<Rom> reloaded_rom;
ASSERT_OK(LoadAndVerifyROM(test_rom_path_, reloaded_rom));
EXPECT_EQ(reloaded_rom->ReadByte(0x1000), 0xAA);
EXPECT_EQ(reloaded_rom->ReadByte(0x2000), 0xBB);
EXPECT_EQ(reloaded_rom->ReadWord(0x3000), 0xCCDD);
auto byte1 = reloaded_rom->ReadByte(0x1000);
ASSERT_OK(byte1.status());
EXPECT_EQ(*byte1, 0xAA);
auto byte2 = reloaded_rom->ReadByte(0x2000);
ASSERT_OK(byte2.status());
EXPECT_EQ(*byte2, 0xBB);
auto word1 = reloaded_rom->ReadWord(0x3000);
ASSERT_OK(word1.status());
EXPECT_EQ(*word1, 0xCCDD);
}
// Test ROM corruption detection
@@ -209,8 +230,13 @@ TEST_F(E2ERomDependentTest, CorruptionDetection) {
std::unique_ptr<Rom> reloaded_rom;
ASSERT_OK(LoadAndVerifyROM(test_rom_path_, reloaded_rom));
EXPECT_EQ(reloaded_rom->ReadByte(0x1000), 0xFF);
EXPECT_EQ(reloaded_rom->ReadByte(0x2000), 0xAA);
auto corrupt_byte1 = reloaded_rom->ReadByte(0x1000);
ASSERT_OK(corrupt_byte1.status());
EXPECT_EQ(*corrupt_byte1, 0xFF);
auto corrupt_byte2 = reloaded_rom->ReadByte(0x2000);
ASSERT_OK(corrupt_byte2.status());
EXPECT_EQ(*corrupt_byte2, 0xAA);
}
// Test large-scale editing without corruption
@@ -232,8 +258,13 @@ TEST_F(E2ERomDependentTest, LargeScaleEditing) {
// Verify all changes
for (int i = 0; i < 10; i++) {
EXPECT_EQ(reloaded_rom->ReadByte(0x1000 + i), i % 16);
EXPECT_EQ(reloaded_rom->ReadByte(0x2000 + i), (i + 1) % 16);
auto byte1 = reloaded_rom->ReadByte(0x1000 + i);
ASSERT_OK(byte1.status());
EXPECT_EQ(*byte1, i % 16);
auto byte2 = reloaded_rom->ReadByte(0x2000 + i);
ASSERT_OK(byte2.status());
EXPECT_EQ(*byte2, (i + 1) % 16);
}
}