From fa33be3463165521eed37d4d3a203e90c93b02d6 Mon Sep 17 00:00:00 2001 From: scawful Date: Sun, 19 Jan 2025 20:01:57 -0500 Subject: [PATCH] Add tests for ParseSingleMessage function in message_test.cc --- test/CMakeLists.txt | 1 + test/zelda3/message_test.cc | 31 +++++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) 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