Add the inspireface project to cpp-package.

This commit is contained in:
JingyuYan
2024-05-02 01:27:29 +08:00
parent e90dacb3cf
commit 08d7e96f79
431 changed files with 370534 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
//
// Created by Tunm-Air13 on 2024/4/7.
//
#pragma once
#ifndef INSPIREFACE_ENVIRO_H
#define INSPIREFACE_ENVIRO_H
#include <string>
class Enviro {
public:
static Enviro& getInstance() {
static Enviro instance;
return instance;
}
Enviro(Enviro const&) = delete;
void operator=(Enviro const&) = delete;
std::string getPackName() const { return packName; }
void setPackName(const std::string& name) { packName = name; }
const std::string &getTestResDir() const { return testResDir; }
void setTestResDir(const std::string &dir) { Enviro::testResDir = dir; }
private:
Enviro() {}
std::string packName = "Pikachu";
std::string testResDir = "test_res";
};
#endif //INSPIREFACE_ENVIRO_H

View File

@@ -0,0 +1,61 @@
//
// Created by Tunm-Air13 on 2023/5/24.
//
#include "test_settings.h"
std::string getTestDataDir() {
return Enviro::getInstance().getTestResDir();
}
std::string getTestData(const std::string& name) {
return getTestDataDir() + "/" + name;
}
std::string getTestSaveDir() {
return getTestData("save");
}
std::string getTestSaveData(const std::string& name) {
return getTestSaveDir() + "/" + name;
}
std::string getTestModelsFile() {
std::string path = "pack/";
path = path + TEST_MODEL_FILE;
return getTestData(path);
}
std::string getTestLFWFunneledTxt() {
return getTestData(TEST_LFW_FUNNELED_TXT);
}
std::string getTestLFWFunneledEvaTxt() {
return getLFWFunneledDir() + "/" + TEST_LFW_EVALUATION_TXT;
}
std::string getLFWFunneledDir() {
const char* testLfwFunneledDir = LFW_FUNNELED_DIR;
std::string lfwFunneledPath;
if (testLfwFunneledDir != nullptr && std::string(testLfwFunneledDir) != "") {
lfwFunneledPath = testLfwFunneledDir;
} else {
const char* lfwFunneled = std::getenv("LFW_FUNNELED_DIR");
if (lfwFunneled != nullptr) {
lfwFunneledPath = lfwFunneled;
}
}
if (lfwFunneledPath.empty()) {
spdlog::warn("lfw funneled dir is empty!");
}
return lfwFunneledPath;
}
std::string getBenchmarkRecordFile() {
return getTestSaveData(TEST_BENCHMARK_RECORD);
}
std::string getEvaluationRecordFile() {
return getTestSaveData(TEST_EVALUATION_RECORD);
}

View File

@@ -0,0 +1,123 @@
//
// Created by Tunm-Air13 on 2023/5/24.
//
#pragma once
#ifndef BIGGUYSMAIN_TEST_SETTINGS_H
#define BIGGUYSMAIN_TEST_SETTINGS_H
#include <catch2/catch.hpp>
#include <spdlog/spdlog.h>
#include <iostream>
#include "enviro.h"
#define TEST_MODEL_FILE Enviro::getInstance().getPackName() // Optional model file
#define SET_PACK_NAME(name) Enviro::getInstance().setPackName(name)
#define SET_TEST_DIR(dir) Enviro::getInstance().setTestResDir(dir)
#define TEST_LFW_FUNNELED_TXT "valid_lfw_funneled.txt" // LFW Index txt file
#define LFW_FUNNELED_DIR "" // LFW funneled data dir
#define TEST_LFW_EVALUATION_TXT "pairs.txt"
#define TEST_BENCHMARK_RECORD "benchmark.csv"
#define TEST_EVALUATION_RECORD "evaluation.csv"
using namespace Catch::Detail;
#define TEST_PRINT(...) SPDLOG_LOGGER_CALL(spdlog::get("TEST"), spdlog::level::trace, __VA_ARGS__)
#define TEST_PRINT_OUTPUT(open) TestMessageBroadcast test_msg_broadcast_##open(open)
#define LOG_OUTPUT_LEVEL(level) LogLevelBroadcast log_level_broadcast_##level(level);
#define GET_DIR getTestDataDir()
#define GET_DATA(filename) getTestData(filename)
#define GET_MODEL_FILE() getTestModelsFile()
#define GET_LFW_FUNNELED_TXT() getTestLFWFunneledTxt()
#define GET_SAVE_DIR getTestSaveDir()
#define GET_SAVE_DATA(filename) getTestSaveData(filename)
std::string getTestDataDir();
std::string getTestData(const std::string &name);
std::string getTestSaveDir();
std::string getTestSaveData(const std::string &name);
std::string getTestModelsFile();
std::string getTestLFWFunneledTxt();
std::string getTestLFWFunneledEvaTxt();
std::string getLFWFunneledDir();
std::string getBenchmarkRecordFile();
std::string getEvaluationRecordFile();
/** Logger level */
enum LOG_LEVEL {
TRACE = 0, ///< trace
DEBUG = 1, ///< debug
INFO = 2, ///< information
WARN = 3, ///< warn
ERROR = 4, ///< error
FATAL = 5, ///< fatal
OFF = 6, ///< off
};
class TestMessageBroadcast {
public:
explicit TestMessageBroadcast(bool open) : m_old_level(spdlog::level::trace) {
auto logger = spdlog::get("TEST");
m_old_level = logger->level();
if (open) {
if (m_old_level != spdlog::level::trace) {
logger->set_level(spdlog::level::trace);
}
} else {
if (m_old_level == spdlog::level::trace) {
logger->set_level(spdlog::level::info);
}
}
}
~TestMessageBroadcast() {
spdlog::get("TEST")->set_level(m_old_level);
}
private:
spdlog::level::level_enum m_old_level;
};
class LogLevelBroadcast {
public:
explicit LogLevelBroadcast(LOG_LEVEL level) {
m_oldLevel = level;
spdlog::set_level(spdlog::level::level_enum(level));
}
~LogLevelBroadcast() {
spdlog::set_level(spdlog::level::level_enum(spdlog::level::trace));
}
private:
LOG_LEVEL m_oldLevel;
};
struct test_case_split {
~test_case_split() {
std::cout
<< "==============================================================================="
<< std::endl;
}
#define DRAW_SPLIT_LINE test_case_split split_line_x;
};
#endif //BIGGUYSMAIN_TEST_SETTINGS_H