Skip to content
Snippets Groups Projects
Commit 41a67770 authored by Kaj Williams's avatar Kaj Williams
Browse files

initial frame tests

parent 963e250a
No related branches found
No related tags found
No related merge requests found
cmake_minimum_required(VERSION 3.10)
# Link runCSMCameraModelTests with what we want to test and the GTest and pthread library
add_executable(runCSMCameraModelTests TestyMcTestFace.cpp)
add_executable(runCSMCameraModelTests TestyMcTestFace.cpp FrameCameraTests.cpp)
target_link_libraries(runCSMCameraModelTests usgscsm ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} pthread)
gtest_discover_tests(runCSMCameraModelTests WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/tests)
#include "UsgsAstroFramePlugin.h"
#include "UsgsAstroFrameSensorModel.h"
#include <json.hpp>
#include <sstream>
#include <fstream>
#include <gtest/gtest.h>
using json = nlohmann::json;
class FrameSensorModel : public ::testing::Test {
protected:
UsgsAstroFrameSensorModel *sensorModel;
void SetUp() override {
sensorModel = NULL;
std::ifstream isdFile("data/simpleFramerISD.json");
json jsonIsd = json::parse(isdFile);
csm::Isd isd;
for (json::iterator it = jsonIsd.begin(); it != jsonIsd.end(); ++it) {
json jsonValue = it.value();
if (jsonValue.size() > 1) {
for (int i = 0; i < jsonValue.size(); i++) {
isd.addParam(it.key(), jsonValue[i].dump());
}
}
else {
isd.addParam(it.key(), jsonValue.dump());
}
}
isdFile.close();
UsgsAstroFramePlugin frameCameraPlugin;
csm::Model *model = frameCameraPlugin.constructModelFromISD(
isd,
"USGS_ASTRO_FRAME_SENSOR_MODEL");
sensorModel = dynamic_cast<UsgsAstroFrameSensorModel *>(model);
ASSERT_NE(sensorModel, nullptr);
}
void TearDown() override {
if (sensorModel) {
delete sensorModel;
sensorModel = NULL;
}
}
};
TEST_F(FrameSensorModel, Center) {
csm::ImageCoord imagePt(7.5, 7.5);
csm::EcefCoord groundPt = sensorModel->imageToGround(imagePt, 0.0);
EXPECT_DOUBLE_EQ(groundPt.x, 10.0);
EXPECT_DOUBLE_EQ(groundPt.y, 0);
EXPECT_DOUBLE_EQ(groundPt.z, 0);
}
TEST_F(FrameSensorModel, OffBody) {
csm::ImageCoord imagePt(0.0, 15.0);
csm::EcefCoord groundPt = sensorModel->imageToGround(imagePt, 0.0);
EXPECT_DOUBLE_EQ(groundPt.x, 0.44979759);
EXPECT_DOUBLE_EQ(groundPt.y, -14.99325304);
EXPECT_DOUBLE_EQ(groundPt.z, 14.99325304);
}
TEST_F(FrameSensorModel, SlightlyOffCenter) {
csm::ImageCoord imagePt(6.5, 7.5);
csm::EcefCoord groundPt = sensorModel->imageToGround(imagePt, 0.0);
EXPECT_DOUBLE_EQ(groundPt.x, 9.80194018);
EXPECT_DOUBLE_EQ(groundPt.y, 0);
EXPECT_DOUBLE_EQ(groundPt.z, 1.98039612);
}
\ No newline at end of file
#include "gtest/gtest.h"
int main(int argc, char **argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
\ No newline at end of file
......@@ -12,7 +12,7 @@
"focal_length": 50,
"focal_length_epsilon": 1.0,
"ifov": 6.0,
"model_name": "UsgsAstroFramePluginCSM",
"model_name": "USGS_ASTRO_FRAME_SENSOR_MODEL",
"spacecraft_name": "TEST_CRAFT",
"instrument_id": "TEST_SENSOR",
"target_name": "TEST_BALL",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment