mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-04-29 15:58:33 +00:00
Split SettingsHandler
into separate reader and writer classes
This commit is contained in:
parent
f412e2488c
commit
1d79991ec4
6 changed files with 107 additions and 112 deletions
|
@ -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");
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue