Refactor message tests to improve ROM loading checks and class naming
- Renamed `MessageTest` to `MessageRomTest` for clarity in context. - Added checks to skip tests if the ROM file is not available or if tests are disabled via environment variable, enhancing test robustness. - Updated all test cases to use the new class name, ensuring consistency across the test suite.
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
#include <gtest/gtest.h>
|
||||
#include <filesystem>
|
||||
|
||||
#include "app/editor/message/message_data.h"
|
||||
#include "app/editor/message/message_editor.h"
|
||||
@@ -7,13 +8,21 @@
|
||||
namespace yaze {
|
||||
namespace test {
|
||||
|
||||
class MessageTest : public ::testing::Test {
|
||||
class MessageRomTest : public ::testing::Test {
|
||||
protected:
|
||||
void SetUp() override {
|
||||
#if defined(__linux__)
|
||||
GTEST_SKIP();
|
||||
#endif
|
||||
EXPECT_OK(rom_.LoadFromFile("zelda3.sfc"));
|
||||
// Skip tests if ROM is not available
|
||||
if (getenv("YAZE_SKIP_ROM_TESTS")) {
|
||||
GTEST_SKIP() << "ROM tests disabled";
|
||||
}
|
||||
|
||||
// Check if ROM file exists
|
||||
std::string rom_path = "zelda3.sfc";
|
||||
if (!std::filesystem::exists(rom_path)) {
|
||||
GTEST_SKIP() << "Test ROM not found: " << rom_path;
|
||||
}
|
||||
|
||||
EXPECT_OK(rom_.LoadFromFile(rom_path));
|
||||
dictionary_ = editor::BuildDictionaryEntries(&rom_);
|
||||
}
|
||||
void TearDown() override {}
|
||||
@@ -23,7 +32,7 @@ class MessageTest : public ::testing::Test {
|
||||
std::vector<editor::DictionaryEntry> dictionary_;
|
||||
};
|
||||
|
||||
TEST_F(MessageTest, ParseSingleMessage_CommandParsing) {
|
||||
TEST_F(MessageRomTest, ParseSingleMessage_CommandParsing) {
|
||||
std::vector<uint8_t> mock_data = {0x6A, 0x7F, 0x00};
|
||||
int pos = 0;
|
||||
|
||||
@@ -36,7 +45,7 @@ TEST_F(MessageTest, ParseSingleMessage_CommandParsing) {
|
||||
EXPECT_EQ(pos, 2);
|
||||
}
|
||||
|
||||
TEST_F(MessageTest, ParseSingleMessage_BasicAscii) {
|
||||
TEST_F(MessageRomTest, ParseSingleMessage_BasicAscii) {
|
||||
// A, B, C, terminator
|
||||
std::vector<uint8_t> mock_data = {0x00, 0x01, 0x02, 0x7F, 0x00};
|
||||
int pos = 0;
|
||||
@@ -52,36 +61,36 @@ TEST_F(MessageTest, ParseSingleMessage_BasicAscii) {
|
||||
EXPECT_THAT(parsed, ::testing::ElementsAre("ABC"));
|
||||
}
|
||||
|
||||
TEST_F(MessageTest, FindMatchingCharacter_Success) {
|
||||
TEST_F(MessageRomTest, FindMatchingCharacter_Success) {
|
||||
EXPECT_EQ(editor::FindMatchingCharacter('A'), 0x00);
|
||||
EXPECT_EQ(editor::FindMatchingCharacter('Z'), 0x19);
|
||||
EXPECT_EQ(editor::FindMatchingCharacter('a'), 0x1A);
|
||||
EXPECT_EQ(editor::FindMatchingCharacter('z'), 0x33);
|
||||
}
|
||||
|
||||
TEST_F(MessageTest, FindMatchingCharacter_Failure) {
|
||||
TEST_F(MessageRomTest, FindMatchingCharacter_Failure) {
|
||||
EXPECT_EQ(editor::FindMatchingCharacter('@'), 0xFF);
|
||||
EXPECT_EQ(editor::FindMatchingCharacter('#'), 0xFF);
|
||||
}
|
||||
|
||||
TEST_F(MessageTest, FindDictionaryEntry_Success) {
|
||||
TEST_F(MessageRomTest, FindDictionaryEntry_Success) {
|
||||
EXPECT_EQ(editor::FindDictionaryEntry(0x88), 0x00);
|
||||
EXPECT_EQ(editor::FindDictionaryEntry(0x90), 0x08);
|
||||
}
|
||||
|
||||
TEST_F(MessageTest, FindDictionaryEntry_Failure) {
|
||||
TEST_F(MessageRomTest, FindDictionaryEntry_Failure) {
|
||||
EXPECT_EQ(editor::FindDictionaryEntry(0x00), -1);
|
||||
EXPECT_EQ(editor::FindDictionaryEntry(0xFF), -1);
|
||||
}
|
||||
|
||||
TEST_F(MessageTest, ParseMessageToData_Basic) {
|
||||
TEST_F(MessageRomTest, ParseMessageToData_Basic) {
|
||||
std::string input = "[L][C:01]ABC";
|
||||
auto result = editor::ParseMessageToData(input);
|
||||
std::vector<uint8_t> expected = {0x6A, 0x77, 0x01, 0x00, 0x01, 0x02};
|
||||
EXPECT_EQ(result, expected);
|
||||
}
|
||||
|
||||
TEST_F(MessageTest, ReplaceAllDictionaryWords_Success) {
|
||||
TEST_F(MessageRomTest, ReplaceAllDictionaryWords_Success) {
|
||||
std::vector<editor::DictionaryEntry> mock_dict = {
|
||||
editor::DictionaryEntry(0x00, "test"),
|
||||
editor::DictionaryEntry(0x01, "message")};
|
||||
@@ -90,7 +99,7 @@ TEST_F(MessageTest, ReplaceAllDictionaryWords_Success) {
|
||||
EXPECT_EQ(result, "This is a [D:00] [D:01].");
|
||||
}
|
||||
|
||||
TEST_F(MessageTest, ReplaceAllDictionaryWords_NoMatch) {
|
||||
TEST_F(MessageRomTest, ReplaceAllDictionaryWords_NoMatch) {
|
||||
std::vector<editor::DictionaryEntry> mock_dict = {
|
||||
editor::DictionaryEntry(0x00, "hello")};
|
||||
std::string input = "No matching words.";
|
||||
@@ -98,17 +107,17 @@ TEST_F(MessageTest, ReplaceAllDictionaryWords_NoMatch) {
|
||||
EXPECT_EQ(result, "No matching words.");
|
||||
}
|
||||
|
||||
TEST_F(MessageTest, ParseTextDataByte_Success) {
|
||||
TEST_F(MessageRomTest, ParseTextDataByte_Success) {
|
||||
EXPECT_EQ(editor::ParseTextDataByte(0x00), "A");
|
||||
EXPECT_EQ(editor::ParseTextDataByte(0x74), "[1]");
|
||||
EXPECT_EQ(editor::ParseTextDataByte(0x88), "[D:00]");
|
||||
}
|
||||
|
||||
TEST_F(MessageTest, ParseTextDataByte_Failure) {
|
||||
TEST_F(MessageRomTest, ParseTextDataByte_Failure) {
|
||||
EXPECT_EQ(editor::ParseTextDataByte(0xFF), "");
|
||||
}
|
||||
|
||||
TEST_F(MessageTest, ParseSingleMessage_SpecialCharacters) {
|
||||
TEST_F(MessageRomTest, ParseSingleMessage_SpecialCharacters) {
|
||||
std::vector<uint8_t> mock_data = {0x4D, 0x4E, 0x4F, 0x50, 0x7F};
|
||||
int pos = 0;
|
||||
|
||||
@@ -120,7 +129,7 @@ TEST_F(MessageTest, ParseSingleMessage_SpecialCharacters) {
|
||||
EXPECT_EQ(pos, 5);
|
||||
}
|
||||
|
||||
TEST_F(MessageTest, ParseSingleMessage_DictionaryReference) {
|
||||
TEST_F(MessageRomTest, ParseSingleMessage_DictionaryReference) {
|
||||
std::vector<uint8_t> mock_data = {0x88, 0x89, 0x7F};
|
||||
int pos = 0;
|
||||
|
||||
@@ -132,7 +141,7 @@ TEST_F(MessageTest, ParseSingleMessage_DictionaryReference) {
|
||||
EXPECT_EQ(pos, 3);
|
||||
}
|
||||
|
||||
TEST_F(MessageTest, ParseSingleMessage_InvalidTerminator) {
|
||||
TEST_F(MessageRomTest, ParseSingleMessage_InvalidTerminator) {
|
||||
std::vector<uint8_t> mock_data = {0x00, 0x01, 0x02}; // No terminator
|
||||
int pos = 0;
|
||||
|
||||
@@ -140,7 +149,7 @@ TEST_F(MessageTest, ParseSingleMessage_InvalidTerminator) {
|
||||
EXPECT_FALSE(result.ok());
|
||||
}
|
||||
|
||||
TEST_F(MessageTest, ParseSingleMessage_EmptyData) {
|
||||
TEST_F(MessageRomTest, ParseSingleMessage_EmptyData) {
|
||||
std::vector<uint8_t> mock_data = {0x7F};
|
||||
int pos = 0;
|
||||
|
||||
@@ -152,7 +161,7 @@ TEST_F(MessageTest, ParseSingleMessage_EmptyData) {
|
||||
EXPECT_EQ(pos, 1);
|
||||
}
|
||||
|
||||
TEST_F(MessageTest, OptimizeMessageForDictionary_Basic) {
|
||||
TEST_F(MessageRomTest, OptimizeMessageForDictionary_Basic) {
|
||||
std::vector<editor::DictionaryEntry> mock_dict = {
|
||||
editor::DictionaryEntry(0x00, "Link"),
|
||||
editor::DictionaryEntry(0x01, "Zelda")};
|
||||
@@ -165,7 +174,7 @@ TEST_F(MessageTest, OptimizeMessageForDictionary_Basic) {
|
||||
EXPECT_EQ(optimized, "[L] rescued [D:01] from danger.");
|
||||
}
|
||||
|
||||
TEST_F(MessageTest, SetMessage_Success) {
|
||||
TEST_F(MessageRomTest, SetMessage_Success) {
|
||||
std::vector<editor::DictionaryEntry> mock_dict = {
|
||||
editor::DictionaryEntry(0x00, "item")};
|
||||
editor::MessageData message_data;
|
||||
@@ -177,7 +186,7 @@ TEST_F(MessageTest, SetMessage_Success) {
|
||||
EXPECT_EQ(message_data.ContentsParsed, "You got an [D:00]!");
|
||||
}
|
||||
|
||||
TEST_F(MessageTest, FindMatchingElement_CommandWithArgument) {
|
||||
TEST_F(MessageRomTest, FindMatchingElement_CommandWithArgument) {
|
||||
std::string input = "[W:02]";
|
||||
editor::ParsedElement result = editor::FindMatchingElement(input);
|
||||
|
||||
@@ -186,14 +195,14 @@ TEST_F(MessageTest, FindMatchingElement_CommandWithArgument) {
|
||||
EXPECT_EQ(result.Value, 0x02);
|
||||
}
|
||||
|
||||
TEST_F(MessageTest, FindMatchingElement_InvalidCommand) {
|
||||
TEST_F(MessageRomTest, FindMatchingElement_InvalidCommand) {
|
||||
std::string input = "[INVALID]";
|
||||
editor::ParsedElement result = editor::FindMatchingElement(input);
|
||||
|
||||
EXPECT_FALSE(result.Active);
|
||||
}
|
||||
|
||||
TEST_F(MessageTest, BuildDictionaryEntries_CorrectSize) {
|
||||
TEST_F(MessageRomTest, BuildDictionaryEntries_CorrectSize) {
|
||||
auto result = editor::BuildDictionaryEntries(&rom_);
|
||||
EXPECT_EQ(result.size(), editor::kNumDictionaryEntries);
|
||||
EXPECT_FALSE(result.empty());
|
||||
|
||||
Reference in New Issue
Block a user