Select Git revision
FunctionalTestsConfig.cpp
-
Austin Sanders authored
* Added hayabusa2 onc configuration and tests * Updated changelog * Updated test to reflect new conf * trigger build * Updated json submodule * Added preceding slash to hayabusa dep * Updated megaconfig size in test
Austin Sanders authored* Added hayabusa2 onc configuration and tests * Updated changelog * Updated test to reflect new conf * trigger build * Updated json submodule * Added preceding slash to hayabusa dep * Updated megaconfig size in test
FunctionalTestsConfig.cpp 9.07 KiB
#include <fstream>
#include <gtest/gtest.h>
#include "Fixtures.h"
#include "config.h"
#include "utils.h"
#include "query.h"
#include "memo.h"
using namespace std;
using json = nlohmann::json;
using namespace SpiceQL;
TEST_F(TestConfig, FunctionalTestConfigConstruct) {
json megaConfig = testConfig.globalConf();
EXPECT_EQ(megaConfig.size(), 65);
}
TEST_F(TestConfig, FunctionalTestConfigEval) {
fs::path dbPath = getMissionConfigFile("clem1");
ifstream i(dbPath);
nlohmann::json conf;
i >> conf;
MockRepository mocks;
mocks.OnCallFunc(ls).Return(paths);
mocks.OnCallFunc(getDataDirectory).Return("/isis_data/");
json config_eval_res = testConfig.get();
json pointer_eval_res = testConfig.get("/clementine1");
json::json_pointer pointer = "/ck/reconstructed/kernels"_json_pointer;
int expected_number = 4;
EXPECT_EQ(SpiceQL::getKernelsAsVector(config_eval_res["clementine1"][pointer]).size(), expected_number);
EXPECT_EQ(SpiceQL::getKernelsAsVector(pointer_eval_res[pointer]).size(), expected_number);
EXPECT_EQ(testConfig["clementine1"][pointer].size(), 1);
pointer = "/ck/smithed/kernels"_json_pointer;
expected_number = 1;
EXPECT_EQ(SpiceQL::getKernelsAsVector(config_eval_res["clementine1"][pointer]).size(), expected_number);
EXPECT_EQ(SpiceQL::getKernelsAsVector(pointer_eval_res[pointer]).size(), expected_number);
EXPECT_EQ(testConfig["clementine1"][pointer].size(), expected_number);
pointer = "/spk/reconstructed/kernels"_json_pointer;
expected_number = 2;
EXPECT_EQ(SpiceQL::getKernelsAsVector(config_eval_res["clementine1"][pointer]).size(), expected_number);
EXPECT_EQ(SpiceQL::getKernelsAsVector(pointer_eval_res[pointer]).size(), expected_number);
EXPECT_EQ(testConfig["clementine1"][pointer].size(), 1);
pointer = "/fk/kernels"_json_pointer;
expected_number = 1;
EXPECT_EQ(SpiceQL::getKernelsAsVector(config_eval_res["clementine1"][pointer]).size(), expected_number);
EXPECT_EQ(SpiceQL::getKernelsAsVector(pointer_eval_res[pointer]).size(), expected_number);
EXPECT_EQ(testConfig["clementine1"][pointer].size(), expected_number);
pointer = "/sclk/kernels"_json_pointer;
expected_number = 2;
EXPECT_EQ(SpiceQL::getKernelsAsVector(config_eval_res["clementine1"][pointer]).size(), expected_number);
EXPECT_EQ(SpiceQL::getKernelsAsVector(pointer_eval_res[pointer]).size(), expected_number);
EXPECT_EQ(testConfig["clementine1"][pointer].size(), 1);
pointer = "/uvvis/ik/kernels"_json_pointer;
expected_number = 1;
EXPECT_EQ(SpiceQL::getKernelsAsVector(config_eval_res[pointer]).size(), expected_number);
EXPECT_EQ(testConfig[pointer].size(), expected_number);
pointer = "/uvvis/iak/kernels"_json_pointer;
expected_number = 2;
EXPECT_EQ(SpiceQL::getKernelsAsVector(config_eval_res[pointer]).size(), expected_number);
EXPECT_EQ(testConfig[pointer].size(), 1);
}
TEST_F(TestConfig, FunctionalTestConfigGlobalEval) {
fs::path dbPath = getMissionConfigFile("clem1");
ifstream i(dbPath);
nlohmann::json conf;
i >> conf;
MockRepository mocks;
mocks.OnCallFunc(ls).Return(paths);
mocks.OnCallFunc(getDataDirectory).Return("/isis_data/");
testConfig.get();
json config_eval_res = testConfig.globalConf();
json::json_pointer pointer = "/clementine1/ck/reconstructed/kernels"_json_pointer;
int expected_number = 1;
EXPECT_EQ(config_eval_res[pointer].size(), expected_number);
pointer = "/clementine1/ck/smithed/kernels"_json_pointer;
expected_number = 1;
EXPECT_EQ(config_eval_res[pointer].size(), expected_number);
pointer = "/clementine1/spk/reconstructed/kernels"_json_pointer;
expected_number = 1;
EXPECT_EQ(config_eval_res[pointer].size(), expected_number);
pointer = "/clementine1/fk/kernels"_json_pointer;
expected_number = 1;
EXPECT_EQ(config_eval_res[pointer].size(), expected_number);
pointer = "/clementine1/sclk/kernels"_json_pointer;
expected_number = 1;
EXPECT_EQ(config_eval_res[pointer].size(), expected_number);
pointer = "/uvvis/ik/kernels"_json_pointer;
expected_number = 1;
EXPECT_EQ(config_eval_res[pointer].size(), expected_number);
pointer = "/uvvis/iak/kernels"_json_pointer;
expected_number = 1;
EXPECT_EQ(config_eval_res[pointer].size(), expected_number);
}
TEST_F(TestConfig, FunctionalTestConfigAccessors) {
Config base = testConfig["base"];
Config base_pointer = testConfig["/base"];
MockRepository mocks;
mocks.OnCallFunc(SpiceQL::ls).Return(paths);
EXPECT_EQ(base.get()["lsk"]["kernels"].at(0).at(0), "/isis_data/base/kernels/sclk/naif0001.tls");
EXPECT_EQ(base_pointer.get()["lsk"]["kernels"].at(0).at(0), "/isis_data/base/kernels/sclk/naif0001.tls");
}
TEST_F(TestConfig, FunctionalTestsConfigKeySearch) {
vector<json::json_pointer> pointers = {"/my/first/pointer"_json_pointer, "/my/second/pointer"_json_pointer};
MockRepository mocks;
mocks.OnCallFunc(SpiceQL::findKeyInJson).Return(pointers);
vector<string> res_pointers = testConfig.findKey("kernels", true);
int i = 0;
for (auto pointer : res_pointers) {
EXPECT_EQ(pointer, pointers[i++]);
}
}
// TODO: Re-enable after confs are refactored.
TEST_F(TestConfig, FunctionalTestsConfigGetRecursive) {
GTEST_SKIP() << "Disabled until config refactor";
MockRepository mocks;
mocks.OnCallFunc(ls).Return(paths);
json resJson = testConfig.getRecursive("sclk");
SPDLOG_DEBUG(resJson.dump(2));
EXPECT_EQ(resJson.size(), 61);
for (auto &[key, val] : resJson.items()) {
EXPECT_TRUE(val.contains("sclk"));
}
}
TEST_F(TestConfig, FunctionalTestsSubConfigGetRecursive) {
MockRepository mocks;
mocks.OnCallFunc(ls).Return(paths);
testConfig = testConfig["lro"];
json resJson = testConfig.getRecursive("sclk");
EXPECT_EQ(resJson.size(), 1);
for (auto &[key, val] : resJson.items()) {
EXPECT_EQ(key, "sclk");
}
}
TEST_F(TestConfig, FunctionalTestsSubConfigGetLatestRecursive) {
MockRepository mocks;
mocks.OnCallFunc(ls).Return(paths);
testConfig = testConfig["lroc"];
json resJson = testConfig.getLatestRecursive("sclk");
EXPECT_EQ(resJson.size(), 1);
for (auto &[key, val] : resJson.items()) {
EXPECT_EQ(key, "sclk");
EXPECT_EQ(val["kernels"].at(0).size(), 1);
}
}
TEST_F(TestConfig, FunctionalTestsConfigGet) {
vector<string> expectedPointers = {"/ck/reconstructed", "/fk", "/iak", "/ik", "/pck", "/spk/reconstructed", "/spk/smithed", "/sclk", "/tspk"};
MockRepository mocks;
mocks.OnCallFunc(Memo::ls).Return(paths);
json resJson = testConfig.get("lroc");
EXPECT_EQ(resJson.size(), 8);
for (auto pointer : expectedPointers) {
ASSERT_TRUE(resJson.contains(json::json_pointer(pointer)));
EXPECT_TRUE(resJson[json::json_pointer(pointer)]["kernels"].size() > 0);
}
}
TEST_F(TestConfig, FunctionalTestsConfigGetVector) {
vector<string> expectedLrocPointers = {"/ck/reconstructed", "/fk", "/iak", "/ik", "/pck", "/spk/reconstructed", "/spk/smithed", "/sclk", "/tspk"};
vector<string> expectedCassiniPointers = {"/ck/reconstructed", "/ck/smithed", "/fk", "/iak", "/pck", "/pck/smithed", "/sclk", "/spk"};
MockRepository mocks;
mocks.OnCallFunc(Memo::ls).Return(paths);
vector<string> configPointers = {"lroc", "cassini"};
json resJson = testConfig.get(configPointers);
ASSERT_EQ(resJson.size(), 2);
ASSERT_EQ(resJson["lroc"].size(), 8);
for (auto pointer : expectedLrocPointers) {
ASSERT_TRUE(resJson["lroc"].contains(json::json_pointer(pointer)));
EXPECT_TRUE(resJson["lroc"][json::json_pointer(pointer)]["kernels"].size() > 0);
}
EXPECT_EQ(resJson["cassini"].size(), 6);
for (auto pointer : expectedCassiniPointers) {
ASSERT_TRUE(resJson["cassini"].contains(json::json_pointer(pointer)));
EXPECT_TRUE(resJson["cassini"][json::json_pointer(pointer)]["kernels"].size() > 0);
}
}
TEST_F(TestConfig, FunctionalTestsSubsetConfigGetVector) {
vector<string> expectedPointers = {"/fk", "/sclk", "/ik", "/pck"};
MockRepository mocks;
mocks.OnCallFunc(Memo::ls).Return(paths);
testConfig = testConfig["lroc"];
json resJson = testConfig.get(expectedPointers);
ASSERT_EQ(resJson.size(), 4);
for (auto pointer : expectedPointers) {
ASSERT_TRUE(resJson.contains(json::json_pointer(pointer)));
EXPECT_TRUE(resJson[json::json_pointer(pointer)]["kernels"].size() > 0);
}
}
TEST_F(TestConfig, FunctionalTestsConfigGetParentPointer) {
MockRepository mocks;
mocks.OnCallFunc(SpiceQL::getRootDependency).Return("");
std::string pointer = "/banana/apple/orange";
std::string parent = testConfig.getParentPointer(pointer, 0);
EXPECT_EQ(parent, "");
parent = testConfig.getParentPointer(pointer, 1);
EXPECT_EQ(parent, "/banana");
parent = testConfig.getParentPointer(pointer, 2);
EXPECT_EQ(parent, "/banana/apple");
parent = testConfig.getParentPointer(pointer, 3);
EXPECT_EQ(parent, pointer);
}
TEST_F(TestConfig, FunctionalTestsConfigGetParentPointerDeps) {
std::string folder = getenv("SPICEROOT");
folder += "/lro";
ASSERT_TRUE(fs::create_directory(folder));
std::string pointer = "/lroc/sclk";
std::string parent = testConfig.getParentPointer(pointer, 1);
EXPECT_EQ(parent, "/lroc");
parent = testConfig.getParentPointer(pointer, 2);
EXPECT_EQ(parent, "/lroc/sclk");
ASSERT_TRUE(fs::remove(folder));
}