diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 1d4a8de9b8240206182a48790ca6e003ea50c96b..b2463211d87d9c634b74586a174d158c26c685ed 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -4,4 +4,4 @@ cmake_minimum_required(VERSION 3.10) add_executable(runCSMCameraModelTests TestyMcTestFace.cpp) target_link_libraries(runCSMCameraModelTests usgscsm ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} pthread) -gtest_discover_tests(runCSMCameraModelTests WORKING_DIRECTORY tests) +gtest_discover_tests(runCSMCameraModelTests WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/tests) diff --git a/tests/TestyMcTestFace.cpp b/tests/TestyMcTestFace.cpp index e79d958accb9d50b767cad04a656b131eecece3a..29558227ed4e2723747f34504edae5c9eee97d51 100644 --- a/tests/TestyMcTestFace.cpp +++ b/tests/TestyMcTestFace.cpp @@ -1,7 +1,9 @@ #include "UsgsAstroFramePlugin.h" +#include "UsgsAstroFrameSensorModel.h" #include <json/json.hpp> +#include <sstream> #include <fstream> #include <gtest/gtest.h> @@ -16,10 +18,18 @@ class FrameIsdTest : public ::testing::Test { virtual void SetUp() { std::ifstream isdFile("data/simpleFramerISD.json"); json jsonIsd = json::parse(isdFile); - isd.clearAllParams(); for (json::iterator it = jsonIsd.begin(); it != jsonIsd.end(); ++it) { - isd.addParam(it.key(), it.value().dump()); + 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(); } }; @@ -78,12 +88,50 @@ TEST(FramePluginTests, MissingStateValue) { badState));; } -/* TEST_F(FrameIsdTest, ConstructFromISD) { +TEST_F(FrameIsdTest, Constructible) { UsgsAstroFramePlugin testPlugin; EXPECT_TRUE(testPlugin.canModelBeConstructedFromISD( isd, "USGS_ASTRO_FRAME_SENSOR_MODEL")); -} */ +} + +TEST_F(FrameIsdTest, ConstructValidCamera) { + UsgsAstroFramePlugin testPlugin; + csm::Model *cameraModel = NULL; + EXPECT_NO_THROW( + cameraModel = testPlugin.constructModelFromISD( + isd, + "USGS_ASTRO_FRAME_SENSOR_MODEL", + NULL) + ); + UsgsAstroFrameSensorModel *frameModel = dynamic_cast<UsgsAstroFrameSensorModel *>(cameraModel); + EXPECT_NE(frameModel, nullptr); + if (cameraModel) { + delete cameraModel; + } +} + +TEST_F(FrameIsdTest, ConstructInValidCamera) { + UsgsAstroFramePlugin testPlugin; + // Remove the model_name keyword from the ISD to make it invalid + isd.clearParams("model_name"); + csm::Model *cameraModel = NULL; + try { + testPlugin.constructModelFromISD( + isd, + "USGS_ASTRO_FRAME_SENSOR_MODEL", + NULL); + } + catch(csm::Error &e) { + EXPECT_EQ(e.getError(), csm::Error::ISD_NOT_SUPPORTED); + } + catch(...) { + FAIL() << "Expected csm ISD_NOT_SUPPORTED error"; + } + if (cameraModel) { + delete cameraModel; + } +} int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); diff --git a/tests/data/simpleFramerISD.json b/tests/data/simpleFramerISD.json index 8e4f7ebf41509e3650ba9fee69708d594f0d7ede..7235ecb5f087d032b046b3dcb57edf7324ab02cc 100644 --- a/tests/data/simpleFramerISD.json +++ b/tests/data/simpleFramerISD.json @@ -9,7 +9,7 @@ 7.5 ], "ephemeris_time": 100.0, - "focal_length": 500, + "focal_length": 50, "focal_length_epsilon": 1.0, "ifov": 6.0, "model_name": "UsgsAstroFramePluginCSM", @@ -80,7 +80,6 @@ 0.0 ], "odt_y": [ - 0.0, 0.0, 1.0, 0.0, @@ -89,6 +88,7 @@ 0.0, 0.0, 0.0, + 0.0, 0.0 ], "starting_detector_line": 0.0,