compute-runtime/unit_tests/utilities/debug_file_reader_tests.inl

125 lines
4.4 KiB
C++

/*
* Copyright (C) 2018 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "test.h"
#include "gtest/gtest.h"
#include "runtime/helpers/file_io.h"
#include "runtime/utilities/debug_file_reader.h"
#include <memory>
#include <string>
using namespace OCLRT;
using namespace std;
class TestSettingsFileReader : public SettingsFileReader {
public:
TestSettingsFileReader(const char *filePath = nullptr) : SettingsFileReader(filePath) {
}
~TestSettingsFileReader() override {
}
size_t getValueSettingsCount() {
return settingValueMap.size();
}
size_t getStringSettingsCount() {
return settingStringMap.size();
}
public:
static const char *testPath;
static const char *stringTestPath;
};
const char *TestSettingsFileReader::testPath = "./test_files/igdrcl.config";
const char *TestSettingsFileReader::stringTestPath = "./test_files/igdrcl_string.config";
TEST(SettingsFileReader, CreateFileReaderWithoutFile) {
bool settingsFileExists = fileExists(SettingsReader::settingsFileName);
// if settings file exists, remove it
if (settingsFileExists) {
remove(SettingsReader::settingsFileName);
}
// Use current location for file read
std::unique_ptr<TestSettingsFileReader> reader = unique_ptr<TestSettingsFileReader>(new TestSettingsFileReader());
ASSERT_NE(nullptr, reader);
EXPECT_EQ(0u, reader->getValueSettingsCount());
EXPECT_EQ(0u, reader->getStringSettingsCount());
}
TEST(SettingsFileReader, GetStringSettingFromFile) {
// Use test settings file
std::unique_ptr<TestSettingsFileReader> reader = unique_ptr<TestSettingsFileReader>(new TestSettingsFileReader(TestSettingsFileReader::stringTestPath));
ASSERT_NE(nullptr, reader);
string retValue;
// StringTestKey is defined in file: unit_tests\helpers\test_debug_variables.inl
string returnedStringValue = reader->getSetting("StringTestKey", retValue);
// "Test Value" is a value that should be read from file defined in stringTestPath member
EXPECT_STREQ(returnedStringValue.c_str(), "TestValue");
#define DECLARE_DEBUG_VARIABLE(dataType, variableName, defaultValue, description) \
{ \
dataType defaultData = defaultValue; \
dataType tempData = reader->getSetting(#variableName, defaultData); \
if (tempData == defaultData) { \
EXPECT_TRUE(true); \
} \
}
#include "unit_tests/helpers/test_debug_variables.inl"
#undef DECLARE_DEBUG_VARIABLE
}
TEST(SettingsFileReader, givenDebugFileSettingInWhichStringIsFollowedByIntegerWhenItIsParsedThenProperValuesAreObtained) {
std::unique_ptr<TestSettingsFileReader> reader(new TestSettingsFileReader(TestSettingsFileReader::stringTestPath));
ASSERT_NE(nullptr, reader.get());
int32_t retValue = 0;
int32_t returnedIntValue = reader->getSetting("IntTestKey", retValue);
EXPECT_EQ(1, returnedIntValue);
string retValueString;
string returnedStringValue = reader->getSetting("StringTestKey", retValueString);
EXPECT_STREQ(returnedStringValue.c_str(), "TestValue");
}
TEST(SettingsFileReader, GetSettingWhenNotInFile) {
// Use test settings file
std::unique_ptr<TestSettingsFileReader> reader = unique_ptr<TestSettingsFileReader>(new TestSettingsFileReader(TestSettingsFileReader::testPath));
ASSERT_NE(nullptr, reader);
bool defaultBoolValue = false;
bool returnedBoolValue = reader->getSetting("BoolSettingNotExistingInFile", defaultBoolValue);
EXPECT_EQ(defaultBoolValue, returnedBoolValue);
int32_t defaultIntValue = 123;
int32_t returnedIntValue = reader->getSetting("IntSettingNotExistingInFile", defaultIntValue);
EXPECT_EQ(defaultIntValue, returnedIntValue);
string defaultStringValue = "ABCD";
string returnedStringValue = reader->getSetting("StringSettingNotExistingInFile", defaultStringValue);
EXPECT_EQ(defaultStringValue, returnedStringValue);
}
TEST(SettingsFileReader, appSpecificLocation) {
std::unique_ptr<TestSettingsFileReader> reader(new TestSettingsFileReader(TestSettingsFileReader::testPath));
std::string appSpecific = "cl_cache_dir";
EXPECT_EQ(appSpecific, reader->appSpecificLocation(appSpecific));
}