Update SettingsFileReader

Improve parsing to be less strict.

Change-Id: I123a98bb8341b007c8fe6e7556ebaa113d1f076e
Signed-off-by: Filip Hazubski <filip.hazubski@intel.com>
This commit is contained in:
Filip Hazubski
2020-07-01 00:37:33 +02:00
committed by sys_ocldev
parent 949e4cba76
commit 29821b5a25
2 changed files with 128 additions and 15 deletions

View File

@ -155,3 +155,105 @@ TEST(SettingsFileReader, given64bitKeyValueWhenGetSettingThenValueIsCorrect) {
EXPECT_EQ(-18764712120594, returnedValue);
}
TEST(SettingsFileReader, givenKeyValueWithoutSpacesWhenGetSettingThenValueIsCorrect) {
auto reader = std::make_unique<TestSettingsFileReader>();
ASSERT_NE(nullptr, reader);
EXPECT_EQ(0u, reader->getStringSettingsCount());
std::stringstream inputLine("SomeKey=12");
reader->parseStream(inputLine);
int64_t returnedValue = reader->getSetting("SomeKey", 0);
EXPECT_EQ(1u, reader->getStringSettingsCount());
EXPECT_EQ(12, returnedValue);
}
TEST(SettingsFileReader, givenKeyValueWithAdditionalWhitespaceCharactersWhenGetSettingThenValueIsCorrect) {
auto reader = std::make_unique<TestSettingsFileReader>();
ASSERT_NE(nullptr, reader);
EXPECT_EQ(0u, reader->getStringSettingsCount());
std::stringstream inputLine("\t \t SomeKey\t \t =\t \t 12\t \t ");
reader->parseStream(inputLine);
int64_t returnedValue = reader->getSetting("SomeKey", 0);
EXPECT_EQ(1u, reader->getStringSettingsCount());
EXPECT_EQ(12, returnedValue);
}
TEST(SettingsFileReader, givenKeyValueWithAdditionalCharactersWhenGetSettingThenValueIsIncorrect) {
{
auto reader = std::make_unique<TestSettingsFileReader>();
ASSERT_NE(nullptr, reader);
EXPECT_EQ(0u, reader->getStringSettingsCount());
std::stringstream inputLine("Some Key = 12");
reader->parseStream(inputLine);
EXPECT_EQ(0u, reader->getStringSettingsCount());
}
{
auto reader = std::make_unique<TestSettingsFileReader>();
ASSERT_NE(nullptr, reader);
EXPECT_EQ(0u, reader->getStringSettingsCount());
std::stringstream inputLine("SomeKey = 1 2");
reader->parseStream(inputLine);
EXPECT_EQ(0u, reader->getStringSettingsCount());
}
}
TEST(SettingsFileReader, givenMultipleKeysWhenGetSettingThenInvalidKeysAreSkipped) {
auto reader = std::make_unique<TestSettingsFileReader>();
ASSERT_NE(nullptr, reader);
EXPECT_EQ(0u, reader->getStringSettingsCount());
std::string testFile;
testFile.append("InvalidKey1 = 1 2\n");
testFile.append("ValidKey1 = 12\n");
testFile.append("InvalidKey2 = - 1\n");
testFile.append("ValidKey2 = 128\n");
std::stringstream inputFile(testFile);
reader->parseStream(inputFile);
EXPECT_EQ(2u, reader->getStringSettingsCount());
EXPECT_EQ(0, reader->getSetting("InvalidKey1", 0));
EXPECT_EQ(0, reader->getSetting("InvalidKey2", 0));
EXPECT_EQ(12, reader->getSetting("ValidKey1", 0));
EXPECT_EQ(128, reader->getSetting("ValidKey2", 0));
}
TEST(SettingsFileReader, givenNoKeyOrNoValueWhenGetSettingThenExceptionIsNotThrown) {
{
auto reader = std::make_unique<TestSettingsFileReader>();
ASSERT_NE(nullptr, reader);
EXPECT_EQ(0u, reader->getStringSettingsCount());
std::stringstream inputLine("= 12");
EXPECT_NO_THROW(reader->parseStream(inputLine));
EXPECT_EQ(0u, reader->getStringSettingsCount());
}
{
auto reader = std::make_unique<TestSettingsFileReader>();
ASSERT_NE(nullptr, reader);
EXPECT_EQ(0u, reader->getStringSettingsCount());
std::stringstream inputLine("SomeKey =");
EXPECT_NO_THROW(reader->parseStream(inputLine));
EXPECT_EQ(0u, reader->getStringSettingsCount());
}
{
auto reader = std::make_unique<TestSettingsFileReader>();
ASSERT_NE(nullptr, reader);
EXPECT_EQ(0u, reader->getStringSettingsCount());
std::stringstream inputLine("=");
EXPECT_NO_THROW(reader->parseStream(inputLine));
EXPECT_EQ(0u, reader->getStringSettingsCount());
}
}