Skip to content
Snippets Groups Projects
Select Git revision
  • 7079a414ded88052f4e27d9c2d4c3247825a814e
  • main default protected
  • oleg-alexandrov-patch-1
  • radtan
  • 2.0
  • Kelvinrr-patch-1
  • acpaquette-patch-1
  • gxp_testing
  • 2.0.2
  • 2.0.1
  • 2.0.0
  • 1.7.0
  • 1.6.0
  • 1.5.2
  • 1.5.1
  • 1.5.0
  • 1.4.1
  • 1.4.0
  • 1.3.1
  • 1.3.0
  • 1.2.0
  • 1.1.1
  • 1.1.0
  • 1.0.0
24 results

PluginTests.cpp

Blame
  • PluginTests.cpp 5.94 KiB
    #include "UsgsAstroPlugin.h"
    #include "UsgsAstroFrameSensorModel.h"
    #include "UsgsAstroLsSensorModel.h"
    
    #include <sstream>
    #include <fstream>
    
    #include <gtest/gtest.h>
    
    #include "Fixtures.h"
    
    TEST(PluginTests, PluginName) {
       UsgsAstroPlugin testPlugin;
       EXPECT_EQ("UsgsAstroPluginCSM", testPlugin.getPluginName());
    }
    
    TEST(PluginTests, ManufacturerName) {
       UsgsAstroPlugin testPlugin;
       EXPECT_EQ("UsgsAstrogeology", testPlugin.getManufacturer());
    }
    
    TEST(PluginTests, ReleaseDate) {
       UsgsAstroPlugin testPlugin;
       EXPECT_EQ("20170425", testPlugin.getReleaseDate());
    }
    
    TEST(PluginTests, NumModels) {
       UsgsAstroPlugin testPlugin;
       EXPECT_EQ(2, testPlugin.getNumModels());
    }
    
    TEST(PluginTests, BadISDFile) {
       UsgsAstroPlugin testPlugin;
       csm::Isd badIsd("Not a file");
       EXPECT_FALSE(testPlugin.canModelBeConstructedFromISD(
                    badIsd,
                    "USGS_ASTRO_FRAME_SENSOR_MODEL"));
       EXPECT_FALSE(testPlugin.canModelBeConstructedFromISD(
                    badIsd,
                    "USGS_ASTRO_LINE_SCANNER_SENSOR_MODEL"));
    }
    
    TEST(FrameStateTests, NoStateName) {
       UsgsAstroPlugin testPlugin;
       std::string badState = "{\"not_a_name\":\"bad_name\"}";
       EXPECT_FALSE(testPlugin.canModelBeConstructedFromState(
             "USGS_ASTRO_FRAME_SENSOR_MODEL",
             badState));
    }
    
    TEST(FrameStateTests, BadStateName) {
       UsgsAstroPlugin testPlugin;
       std::string badState = "{\"m_model_name\":\"bad_name\"}";
       EXPECT_FALSE(testPlugin.canModelBeConstructedFromState(
             "USGS_ASTRO_FRAME_SENSOR_MODEL",
             badState));
    }
    
    TEST(FrameStateTests, BadStateValue) {
       UsgsAstroPlugin testPlugin;
       std::string badState = "{"
             "\"m_model_name\":\"USGS_ASTRO_FRAME_SENSOR_MODEL\","
             "\"bad_param\":\"bad_value\"}";
       EXPECT_FALSE(testPlugin.canModelBeConstructedFromState(
             "USGS_ASTRO_FRAME_SENSOR_MODEL",
             badState));
    }
    
    TEST(FrameStateTests, MissingStateValue) {
       UsgsAstroPlugin testPlugin;
       std::string badState = "{"
             "\"m_model_name\":\"USGS_ASTRO_FRAME_SENSOR_MODEL\"}";
       EXPECT_FALSE(testPlugin.canModelBeConstructedFromState(
             "USGS_ASTRO_FRAME_SENSOR_MODEL",
             badState));
    }
    
    TEST_F(FrameIsdTest, Constructible) {
       UsgsAstroPlugin testPlugin;
       EXPECT_TRUE(testPlugin.canModelBeConstructedFromISD(
                   isd,
                   "USGS_ASTRO_FRAME_SENSOR_MODEL"));
    }
    
    TEST_F(FrameIsdTest, ConstructibleFromState) {
       UsgsAstroPlugin testPlugin;
       std::string modelState = testPlugin.getStateFromISD(isd);
       EXPECT_TRUE(testPlugin.canModelBeConstructedFromState(
            "USGS_ASTRO_FRAME_SENSOR_MODEL",
            modelState));
    }
    
    TEST_F(FrameIsdTest, NotConstructible) {
       UsgsAstroPlugin testPlugin;
       isd.setFilename("data/constVelocityLineScan.img");
       EXPECT_FALSE(testPlugin.canModelBeConstructedFromISD(
                    isd,
                    "USGS_ASTRO_FRAME_SENSOR_MODEL"));
    }
    
    
    TEST_F(FrameIsdTest, ConstructValidCamera) {
       UsgsAstroPlugin 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) {
       UsgsAstroPlugin testPlugin;
       isd.setFilename("data/constVelocityLineScan.img");
       csm::Model *cameraModel = NULL;
       csm::WarningList *warnings = new csm::WarningList;
       try {
          testPlugin.constructModelFromISD(
                isd,
                "USGS_ASTRO_FRAME_SENSOR_MODEL",
                warnings);
          FAIL() << "Expected an error";
       }
       catch(csm::Error &e) {
          EXPECT_EQ(e.getError(), csm::Error::SENSOR_MODEL_NOT_CONSTRUCTIBLE);
          EXPECT_FALSE(warnings->empty());
       }
       catch(...) {
          FAIL() << "Expected csm SENSOR_MODEL_NOT_CONSTRUCTIBLE error";
       }
       if (cameraModel) {
          delete cameraModel;
       }
       if (warnings) {
         delete warnings;
       }
    }
    
    TEST_F(ConstVelLineScanIsdTest, Constructible) {
       UsgsAstroPlugin testPlugin;
       EXPECT_TRUE(testPlugin.canModelBeConstructedFromISD(
                   isd,
                   "USGS_ASTRO_LINE_SCANNER_SENSOR_MODEL"));
    }
    
    TEST_F(ConstVelLineScanIsdTest, ConstructibleFromState) {
       UsgsAstroPlugin testPlugin;
       std::string modelState = testPlugin.getStateFromISD(isd);
       EXPECT_TRUE(testPlugin.canModelBeConstructedFromState(
             "USGS_ASTRO_LINE_SCANNER_SENSOR_MODEL",
             modelState));
    }
    
    TEST_F(ConstVelLineScanIsdTest, NotConstructible) {
       UsgsAstroPlugin testPlugin;
       isd.setFilename("data/simpleFramerISD.img");
       EXPECT_FALSE(testPlugin.canModelBeConstructedFromISD(
                   isd,
                   "USGS_ASTRO_LINE_SCANNER_SENSOR_MODEL"));
    }
    
    TEST_F(ConstVelLineScanIsdTest, ConstructValidCamera) {
       UsgsAstroPlugin testPlugin;
       csm::Model *cameraModel = NULL;
       EXPECT_NO_THROW(
             cameraModel = testPlugin.constructModelFromISD(
                   isd,
                   "USGS_ASTRO_LINE_SCANNER_SENSOR_MODEL",
                   NULL)
       );
       UsgsAstroLsSensorModel *frameModel = dynamic_cast<UsgsAstroLsSensorModel *>(cameraModel);
       EXPECT_NE(frameModel, nullptr);
       if (cameraModel) {
          delete cameraModel;
       }
    }
    
    TEST_F(ConstVelLineScanIsdTest, ConstructInValidCamera) {
       UsgsAstroPlugin testPlugin;
       isd.setFilename("data/simpleFramerISD.img");
       csm::Model *cameraModel = NULL;
       try {
          testPlugin.constructModelFromISD(
                isd,
                "USGS_ASTRO_LINE_SCANNER_SENSOR_MODEL",
                NULL);
          FAIL() << "Expected an error";
    
       }
       catch(csm::Error &e) {
          EXPECT_EQ(e.getError(), csm::Error::SENSOR_MODEL_NOT_CONSTRUCTIBLE);
       }
       catch(...) {
          FAIL() << "Expected csm SENSOR_MODEL_NOT_CONSTRUCTIBLE error";
       }
       if (cameraModel) {
          delete cameraModel;
       }
    }
    
    int main(int argc, char **argv) {
       ::testing::InitGoogleTest(&argc, argv);
       return RUN_ALL_TESTS();
    }