diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 18ab23a9..a58ede47 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -20,6 +20,7 @@ add_executable( gfx/compression_test.cc gfx/snes_palette_test.cc integration/test_editor.cc + zelda3/message_test.cc zelda3/overworld_test.cc zelda3/sprite_builder_test.cc ${ASAR_STATIC_SRC} diff --git a/test/zelda3/message_test.cc b/test/zelda3/message_test.cc index 5ca28ab0..025d2d9c 100644 --- a/test/zelda3/message_test.cc +++ b/test/zelda3/message_test.cc @@ -42,13 +42,40 @@ TEST_F(MessageTest, LoadMessagesFromRomOk) { Message ID: 2 Raw: [S:00][3][][:75][:44][CH2I] Parsed: [S:00][3][][:75][:44][CH2I] - Raw Bytes: 7A 00 76 88 8A 75 88 44 68 - Parsed Bytes: 7A 00 76 88 8A 75 88 44 68 + Raw Bytes: 7A 00 76 88 8A 75 88 44 68 + Parsed Bytes: 7A 00 76 88 8A 75 88 44 68 */ TEST_F(MessageTest, VerifySingleMessageFromRomOk) { // TODO - Implement this test } +TEST_F(MessageTest, ParseSingleMessage_CommandParsing) { + std::vector mock_data = {0x6A, 0x7F, 0x00}; + int pos = 0; + + auto result = editor::ParseSingleMessage(mock_data, &pos); + EXPECT_TRUE(result.ok()); + const auto message_data = result.value(); + + // Verify that the command was recognized and parsed + EXPECT_EQ(message_data.ContentsParsed, "[L]"); + EXPECT_EQ(pos, 2); +} + +TEST_F(MessageTest, ParseSingleMessage_BasicAscii) { + std::vector mock_data = {0x41, 0x42, 0x43, 0x7F, + 0x00}; // A, B, C, terminator + int pos = 0; + + auto result = editor::ParseSingleMessage(mock_data, &pos); + ASSERT_TRUE(result.ok()); + const auto message_data = result.value(); + + EXPECT_EQ(message_data.RawString, "ABC"); + EXPECT_EQ(message_data.ContentsParsed, "ABC"); + EXPECT_EQ(pos, 4); // consumed all 4 bytes +} + } // namespace test } // namespace yaze