From 24a4f7b64dcd20ef7f60b119177e64a4feea436f Mon Sep 17 00:00:00 2001 From: Jesse Mapel <jam826@nau.edu> Date: Wed, 15 Aug 2018 11:09:45 -0700 Subject: [PATCH] Improved frame plugin testing (#78) * Improved frame plugin testing * Removed extra line from frame plugin test * Fixed seg fault in framer test * Minor tweaks to clean up testing --- tests/CMakeLists.txt | 2 +- tests/TestyMcTestFace.cpp | 56 ++++++++++++++++++++++++++++++--- tests/data/simpleFramerISD.json | 4 +-- 3 files changed, 55 insertions(+), 7 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 1d4a8de..b246321 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 e79d958..2955822 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 8e4f7eb..7235ecb 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, -- GitLab