From 1d79991ec4b4fa62df619e9352cd2f4f4c68156d Mon Sep 17 00:00:00 2001 From: Niel Lebeck Date: Sat, 27 Apr 2024 20:07:17 -0700 Subject: Split `SettingsHandler` into separate reader and writer classes --- Source/UnitTests/Common/SettingsHandlerTest.cpp | 83 +++++++++++-------------- 1 file changed, 38 insertions(+), 45 deletions(-) (limited to 'Source/UnitTests/Common/SettingsHandlerTest.cpp') diff --git a/Source/UnitTests/Common/SettingsHandlerTest.cpp b/Source/UnitTests/Common/SettingsHandlerTest.cpp index 360a2221a5..20b6a59b85 100644 --- a/Source/UnitTests/Common/SettingsHandlerTest.cpp +++ b/Source/UnitTests/Common/SettingsHandlerTest.cpp @@ -9,15 +9,15 @@ namespace { // The encrypted bytes corresponding to the following settings, in order: // "key" = "val" -Common::SettingsHandler::Buffer BUFFER_A{0x91, 0x91, 0x90, 0xEE, 0xD1, 0x2F, 0xF0, 0x34, 0x79}; +Common::SettingsBuffer BUFFER_A{0x91, 0x91, 0x90, 0xEE, 0xD1, 0x2F, 0xF0, 0x34, 0x79}; // The encrypted bytes corresponding to the following settings, in order: // "key1" = "val1" // "key2" = "val2" // "foo" = "bar" -Common::SettingsHandler::Buffer BUFFER_B{ - 0x91, 0x91, 0x90, 0xE2, 0x9A, 0x38, 0xFD, 0x55, 0x42, 0xEA, 0xC4, 0xF6, 0x5E, 0xF, 0xDF, 0xE7, - 0xC3, 0x0A, 0xBB, 0x9C, 0x50, 0xB1, 0x10, 0x82, 0xB4, 0x8A, 0x0D, 0xBE, 0xCD, 0x72, 0xF4}; +Common::SettingsBuffer BUFFER_B{0x91, 0x91, 0x90, 0xE2, 0x9A, 0x38, 0xFD, 0x55, 0x42, 0xEA, 0xC4, + 0xF6, 0x5E, 0xF, 0xDF, 0xE7, 0xC3, 0x0A, 0xBB, 0x9C, 0x50, 0xB1, + 0x10, 0x82, 0xB4, 0x8A, 0x0D, 0xBE, 0xCD, 0x72, 0xF4}; // The encrypted bytes corresponding to the following setting: // "\xFA" = "a" @@ -25,7 +25,7 @@ Common::SettingsHandler::Buffer BUFFER_B{ // This setting triggers the edge case fixed in PR #8704: the key's first and only byte matches the // first byte of the initial encryption key, resulting in a null encoded byte on the first attempt // to encode the line. -Common::SettingsHandler::Buffer BUFFER_C{0xF0, 0x0E, 0xD4, 0xB2, 0xAA, 0x44}; +Common::SettingsBuffer BUFFER_C{0xF0, 0x0E, 0xD4, 0xB2, 0xAA, 0x44}; // The encrypted bytes corresponding to the following setting: // "\xFA\xE9" = "a" @@ -38,76 +38,69 @@ Common::SettingsHandler::Buffer BUFFER_C{0xF0, 0x0E, 0xD4, 0xB2, 0xAA, 0x44}; // 2. The key's second byte matches the first byte of the encryption key after two // rotations, resulting in a null encoded byte on the second attempt to encode the line (with a // single LF inserted before the line). -Common::SettingsHandler::Buffer BUFFER_D{0xF0, 0xFE, 0x13, 0x3A, 0x9A, 0x2F, 0x91, 0x33}; +Common::SettingsBuffer BUFFER_D{0xF0, 0xFE, 0x13, 0x3A, 0x9A, 0x2F, 0x91, 0x33}; } // namespace -TEST(SettingsHandlerTest, EncryptSingleSetting) +TEST(SettingsWriterTest, EncryptSingleSetting) { - Common::SettingsHandler handler; - handler.AddSetting("key", "val"); - Common::SettingsHandler::Buffer buffer = handler.GetBytes(); + Common::SettingsWriter writer; + writer.AddSetting("key", "val"); + Common::SettingsBuffer buffer = writer.GetBytes(); EXPECT_TRUE(std::ranges::equal(buffer, BUFFER_A)); } -TEST(SettingsHandlerTest, DecryptSingleSetting) +TEST(SettingsReaderTest, DecryptSingleSetting) { - Common::SettingsHandler handler(BUFFER_A); - EXPECT_EQ(handler.GetValue("key"), "val"); + const Common::SettingsReader reader(BUFFER_A); + EXPECT_EQ(reader.GetValue("key"), "val"); } -TEST(SettingsHandlerTest, EncryptMultipleSettings) +TEST(SettingsWriterTest, EncryptMultipleSettings) { - Common::SettingsHandler handler; - handler.AddSetting("key1", "val1"); - handler.AddSetting("key2", "val2"); - handler.AddSetting("foo", "bar"); - Common::SettingsHandler::Buffer buffer = handler.GetBytes(); + Common::SettingsWriter writer; + writer.AddSetting("key1", "val1"); + writer.AddSetting("key2", "val2"); + writer.AddSetting("foo", "bar"); + Common::SettingsBuffer buffer = writer.GetBytes(); EXPECT_TRUE(std::ranges::equal(buffer, BUFFER_B)); } -TEST(SettingsHandlerTest, DecryptMultipleSettings) +TEST(SettingsReaderTest, DecryptMultipleSettings) { - Common::SettingsHandler handler(BUFFER_B); - EXPECT_EQ(handler.GetValue("key1"), "val1"); - EXPECT_EQ(handler.GetValue("key2"), "val2"); - EXPECT_EQ(handler.GetValue("foo"), "bar"); + const Common::SettingsReader reader(BUFFER_B); + EXPECT_EQ(reader.GetValue("key1"), "val1"); + EXPECT_EQ(reader.GetValue("key2"), "val2"); + EXPECT_EQ(reader.GetValue("foo"), "bar"); } -TEST(SettingsHandlerTest, GetValueOnSameInstance) +TEST(SettingsWriterTest, EncryptAddsLFOnNullChar) { - Common::SettingsHandler handler; - handler.AddSetting("key", "val"); - EXPECT_EQ(handler.GetValue("key"), ""); -} - -TEST(SettingsHandlerTest, EncryptAddsLFOnNullChar) -{ - Common::SettingsHandler handler; - handler.AddSetting("\xFA", "a"); - Common::SettingsHandler::Buffer buffer = handler.GetBytes(); + Common::SettingsWriter writer; + writer.AddSetting("\xFA", "a"); + Common::SettingsBuffer buffer = writer.GetBytes(); EXPECT_TRUE(std::ranges::equal(buffer, BUFFER_C)); } -TEST(SettingsHandlerTest, EncryptAddsLFOnNullCharTwice) +TEST(SettingsWriterTest, EncryptAddsLFOnNullCharTwice) { - Common::SettingsHandler handler; - handler.AddSetting("\xFA\xE9", "a"); - Common::SettingsHandler::Buffer buffer = handler.GetBytes(); + Common::SettingsWriter writer; + writer.AddSetting("\xFA\xE9", "a"); + Common::SettingsBuffer buffer = writer.GetBytes(); EXPECT_TRUE(std::ranges::equal(buffer, BUFFER_D)); } -TEST(SettingsHandlerTest, DecryptSingleAddedLF) +TEST(SettingsReaderTest, DecryptSingleAddedLF) { - Common::SettingsHandler handler(BUFFER_C); - EXPECT_EQ(handler.GetValue("\xFA"), "a"); + const Common::SettingsReader reader(BUFFER_C); + EXPECT_EQ(reader.GetValue("\xFA"), "a"); } -TEST(SettingsHandlerTest, DecryptTwoAddedLFs) +TEST(SettingsReaderTest, DecryptTwoAddedLFs) { - Common::SettingsHandler handler(BUFFER_D); - EXPECT_EQ(handler.GetValue("\xFA\xE9"), "a"); + const Common::SettingsReader reader(BUFFER_D); + EXPECT_EQ(reader.GetValue("\xFA\xE9"), "a"); } -- cgit v1.2.3