Unverified Commit 30196b9a authored by Tyler Wilson's avatar Tyler Wilson Committed by GitHub
Browse files

Merge pull request #85 from AstroKEW78/testCameraModel

Test camera model
parents 963e250a 36bc2793
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.0, 7.0);
   csm::EcefCoord groundPt = sensorModel->imageToGround(imagePt, 0.0);
   EXPECT_NEAR(groundPt.x, 10.0, 1e-8);
   EXPECT_NEAR(groundPt.y, 0, 1e-8);
   EXPECT_NEAR(groundPt.z, 0, 1e-8);
}

TEST_F(FrameSensorModel, OffBody) {
   csm::ImageCoord imagePt(14.5, -0.5);
   csm::EcefCoord groundPt = sensorModel->imageToGround(imagePt, 0.0);
   EXPECT_NEAR(groundPt.x, 0.44979759, 1e-8);
   EXPECT_NEAR(groundPt.y, -14.99325304, 1e-8);
   EXPECT_NEAR(groundPt.z, 14.99325304, 1e-8);
}

TEST_F(FrameSensorModel, SlightlyOffCenter) {
   csm::ImageCoord imagePt(7.0, 6.0);
   csm::EcefCoord groundPt = sensorModel->imageToGround(imagePt, 0.0);
   EXPECT_NEAR(groundPt.x, 9.80194018, 1e-8);
   EXPECT_NEAR(groundPt.y, 0, 1e-8);
   EXPECT_NEAR(groundPt.z, 1.98039612, 1e-8);
}
 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
+3 −3
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",
@@ -46,8 +46,8 @@
    "omega": 0,
    "phi": -1.5707963267948966,
    "kappa": 3.141592653589793,
    "semi_major_axis": 10,
    "semi_minor_axis": 10,
    "semi_major_axis":0.01,
    "semi_minor_axis":0.01,
    "transx": [
        0.0,
        0.1,