Test boolean registry keys are evaluated as dwords

Related-To: NEO-4338

Change-Id: I95bb3ed60efbb5ff762e23c425b00ebbac70451c
Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
Zbigniew Zdanowicz
2020-04-10 16:11:10 +02:00
committed by sys_ocldev
parent 9a4217b6d3
commit 71d712bfba
2 changed files with 87 additions and 1 deletions

View File

@ -9,6 +9,7 @@
uint32_t regOpenKeySuccessCount = 0u;
uint32_t regQueryValueSuccessCount = 0u;
uint64_t regQueryValueExpectedData = 0ull;
const HKEY validHkey = reinterpret_cast<HKEY>(0);
LSTATUS APIENTRY RegOpenKeyExA(
@ -71,6 +72,12 @@ LSTATUS APIENTRY RegQueryValueExA(
*lpType = REG_BINARY;
}
}
} else if (strcmp(lpValueName, "boolRegistryKey") == 0) {
if (*lpcbData == sizeof(int64_t)) {
if (lpData) {
*reinterpret_cast<uint64_t *>(lpData) = regQueryValueExpectedData;
}
}
}
}

View File

@ -17,6 +17,7 @@ using RegistryReaderTest = ::testing::Test;
extern uint32_t regOpenKeySuccessCount;
extern uint32_t regQueryValueSuccessCount;
extern uint64_t regQueryValueExpectedData;
TEST_F(RegistryReaderTest, givenRegistryReaderWhenItIsCreatedWithUserScopeSetToFalseThenItsHkeyTypeIsInitializedToHkeyLocalMachine) {
bool userScope = false;
@ -153,4 +154,82 @@ TEST_F(DebugReaderWithRegistryAndEnvTest, givenBinaryDebugKeyOnlyInRegistryWhenR
regQueryValueSuccessCount = 0u;
EXPECT_STREQ("default", registryReader.getSetting("settingSourceBinary", defaultValue).c_str());
}
}
TEST_F(RegistryReaderTest, givenRegistryKeyPresentWhenValueIsZeroThenExpectBooleanFalse) {
std::string regKey = "notExistPath";
std::string keyName = "boolRegistryKey";
bool defaultValue = false;
regOpenKeySuccessCount = 1;
regQueryValueSuccessCount = 1;
regQueryValueExpectedData = 0ull;
TestedRegistryReader registryReader(regKey);
bool value = registryReader.getSetting(keyName.c_str(), defaultValue);
EXPECT_FALSE(value);
}
TEST_F(RegistryReaderTest, givenRegistryKeyNotPresentWhenDefaulValueIsFalseOrTrueThenExpectReturnIsMatchingFalseOrTrue) {
std::string regKey = "notExistPath";
std::string keyName = "boolRegistryKey";
bool defaultValue = false;
regOpenKeySuccessCount = 1;
regQueryValueSuccessCount = 0;
regQueryValueExpectedData = 1ull;
TestedRegistryReader registryReader(regKey);
bool value = registryReader.getSetting(keyName.c_str(), defaultValue);
EXPECT_FALSE(value);
defaultValue = true;
regOpenKeySuccessCount = 1;
regQueryValueSuccessCount = 0;
regQueryValueExpectedData = 0ull;
value = registryReader.getSetting(keyName.c_str(), defaultValue);
EXPECT_TRUE(value);
}
TEST_F(RegistryReaderTest, givenRegistryKeyPresentWhenValueIsNonZeroInHigherDwordThenExpectBooleanFalse) {
std::string regKey = "notExistPath";
std::string keyName = "boolRegistryKey";
bool defaultValue = true;
regOpenKeySuccessCount = 1;
regQueryValueSuccessCount = 1;
regQueryValueExpectedData = 1ull << 32;
TestedRegistryReader registryReader(regKey);
bool value = registryReader.getSetting(keyName.c_str(), defaultValue);
EXPECT_FALSE(value);
}
TEST_F(RegistryReaderTest, givenRegistryKeyPresentWhenValueIsNonZeroInLowerDwordThenExpectBooleanTrue) {
std::string regKey = "notExistPath";
std::string keyName = "boolRegistryKey";
bool defaultValue = false;
regOpenKeySuccessCount = 1;
regQueryValueSuccessCount = 1;
regQueryValueExpectedData = 1ull;
TestedRegistryReader registryReader(regKey);
bool value = registryReader.getSetting(keyName.c_str(), defaultValue);
EXPECT_TRUE(value);
}
TEST_F(RegistryReaderTest, givenRegistryKeyPresentWhenValueIsNonZeroInBothDwordsThenExpectBooleanTrue) {
std::string regKey = "notExistPath";
std::string keyName = "boolRegistryKey";
bool defaultValue = false;
regOpenKeySuccessCount = 1;
regQueryValueSuccessCount = 1;
regQueryValueExpectedData = 1ull | (1ull << 32);
TestedRegistryReader registryReader(regKey);
bool value = registryReader.getSetting(keyName.c_str(), defaultValue);
EXPECT_TRUE(value);
}