Commit 41a67770 authored by Kaj Williams's avatar Kaj Williams
Browse files

initial frame tests

parent 963e250a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
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)
+77 −0
Original line number Diff line number Diff line
#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

tests/TestMain.cpp

0 → 100644
+6 −0
Original line number Diff line number Diff line
#include "gtest/gtest.h"
int main(int argc, char **argv)
{
   testing::InitGoogleTest(&argc, argv);
   return RUN_ALL_TESTS();
}
 No newline at end of file
+1 −1
Original line number Diff line number Diff line
@@ -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",