diff --git a/CHANGELOG.md b/CHANGELOG.md index eeaef4376f..ee2e851fd3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -69,6 +69,7 @@ release. - The isis3VarInit script is now just called isisVarInit and allows for more robust paths. [#3945](https://github.com/USGS-Astrogeology/ISIS3/pull/3945) - Isis2raw will now output straight to a 32bit file (no stretch) when stretch is set to None and bittype is set to 32bit. [#3878](https://github.com/USGS-Astrogeology/ISIS3/issues/3878) - Findimageoverlaps can now have calculations and writes happen at the same time or sequentially. [#4047](https://github.com/USGS-Astrogeology/ISIS3/pull/4047) + - IsisPreferences has had the default path to Osirisrex updated to point to new kernels released by NAIF [#4060](https://github.com/USGS-Astrogeology/ISIS3/issues/4060) ### Fixed diff --git a/isis/IsisPreferences b/isis/IsisPreferences index 432ee429cd..26c2b36515 100644 --- a/isis/IsisPreferences +++ b/isis/IsisPreferences @@ -220,7 +220,7 @@ Group = DataDirectory Near = $ISISDATA/near NewHorizons = $ISISDATA/newhorizons Odyssey = $ISISDATA/odyssey - OsirisRex = $ISISDATA/../datalocal/osirisrex + OsirisRex = $ISISDATA/osirisrex Rolo = $ISISDATA/rolo Rosetta = $ISISDATA/rosetta Smart1 = $ISISDATA/smart1 diff --git a/isis/TestPreferences b/isis/TestPreferences index 655aeefa68..fee162b7c2 100644 --- a/isis/TestPreferences +++ b/isis/TestPreferences @@ -217,7 +217,7 @@ Group = DataDirectory Near = $ISISDATA/near NewHorizons = $ISISDATA/newhorizons Odyssey = $ISISDATA/odyssey - OsirisRex = $ISISDATA/../datalocal/osirisrex + OsirisRex = $ISISDATA/osirisrex Rolo = $ISISDATA/rolo Rosetta = $ISISDATA/rosetta Smart1 = $ISISDATA/smart1 diff --git a/isis/src/osirisrex/objs/OsirisRexOcamsCamera/OsirisRexOcamsCamera.truth b/isis/src/osirisrex/objs/OsirisRexOcamsCamera/OsirisRexOcamsCamera.truth deleted file mode 100644 index fb37bfe926..0000000000 --- a/isis/src/osirisrex/objs/OsirisRexOcamsCamera/OsirisRexOcamsCamera.truth +++ /dev/null @@ -1,155 +0,0 @@ -Unit Test for OsirisRexOcamsCamera... - -Testing PolyCam (backwards compatibility)... -FileName: 2019-01-13T23_36_05.000_PCAM_L2b_V001.cub -NAIF Frame ID: -64360 - -Kernel IDs: -CK Frame ID = -64000 -CK Reference ID = 1 -SPK Target ID = -64 -SPK Reference ID = 1 - -Spacecraft Name Long: OSIRIS-REx -Spacecraft Name Short: OSIRIS-REx -Instrument Name Long: PolyMath Camera -Instrument Name Short: PolyCam - -Shutter open = 600694634.184289455 -Shutter close = 600694634.284289479 - -For upper left corner ... -DeltaSample = 0.000000000 -DeltaLine = 0.000000000 - -For upper right corner ... -DeltaSample = 0.000000000 -DeltaLine = 0.000000000 - -For lower left corner ... -DeltaSample = 0.000000000 -DeltaLine = 0.000000000 - -For lower right corner ... -DeltaSample = 0.000000000 -DeltaLine = 0.000000000 - -For known pixel position ... -Latitude OK -Longitude OK - -Testing PolyCam (with PolyCamFocusPositionNaifId keyword)... -FileName: 20190113T191852S740_pol_iofL2pan_V001.cub -NAIF Frame ID: -64360 - -Kernel IDs: -CK Frame ID = -64000 -CK Reference ID = 1 -SPK Target ID = -64 -SPK Reference ID = 1 - -Spacecraft Name Long: OSIRIS-REx -Spacecraft Name Short: OSIRIS-REx -Instrument Name Long: PolyMath Camera -Instrument Name Short: PolyCam - -Shutter open = 600679201.924284339 -Shutter close = 600679201.944284320 - -For upper left corner ... -DeltaSample = 0.000000000 -DeltaLine = 0.000000000 - -For upper right corner ... -DeltaSample = 0.000000000 -DeltaLine = 0.000000000 - -For lower left corner ... -DeltaSample = 0.000000000 -DeltaLine = 0.000000000 - -For lower right corner ... -DeltaSample = 0.000000000 -DeltaLine = 0.000000000 - -For known pixel position ... -Latitude OK -Longitude OK -============================================================================ - -Testing MapCam (backwards compatibility)... -FileName: D19030320000.cub -NAIF Frame ID: -64361 - -Kernel IDs: -CK Frame ID = -64000 -CK Reference ID = 1 -SPK Target ID = -64 -SPK Reference ID = 1 - -Spacecraft Name Long: OSIRIS-REx -Spacecraft Name Short: OSIRIS-REx -Instrument Name Long: Mapping Camera -Instrument Name Short: MapCam - -Shutter open = 604879475.185411930 -Shutter close = 604879475.205411911 - -For upper left corner ... -DeltaSample = NO INTERSECTION -DeltaLine = NO INTERSECTION - -For upper right corner ... -DeltaSample = NO INTERSECTION -DeltaLine = NO INTERSECTION - -For lower left corner ... -DeltaSample = 0.000000000 -DeltaLine = 0.000000000 - -For lower right corner ... -DeltaSample = 0.000000000 -DeltaLine = 0.000000000 - -For known pixel position ... -Latitude OK -Longitude OK - -Testing MapCam (with PolyCamFocusPositionNaifId keyword)... -FileName: 20190303T100344S990_map_iofL2pan_V001.cub -NAIF Frame ID: -64361 - -Kernel IDs: -CK Frame ID = -64000 -CK Reference ID = 1 -SPK Target ID = -64 -SPK Reference ID = 1 - -Spacecraft Name Long: OSIRIS-REx -Spacecraft Name Short: OSIRIS-REx -Instrument Name Long: Mapping Camera -Instrument Name Short: MapCam - -Shutter open = 604879494.175411940 -Shutter close = 604879494.195411921 - -For upper left corner ... -DeltaSample = NO INTERSECTION -DeltaLine = NO INTERSECTION - -For upper right corner ... -DeltaSample = 0.000000000 -DeltaLine = 0.000000000 - -For lower left corner ... -DeltaSample = NO INTERSECTION -DeltaLine = NO INTERSECTION - -For lower right corner ... -DeltaSample = 0.000000000 -DeltaLine = 0.000000000 - -For known pixel position ... -Latitude OK -Longitude OK -============================================================================ diff --git a/isis/src/osirisrex/objs/OsirisRexOcamsCamera/unitTest.cpp b/isis/src/osirisrex/objs/OsirisRexOcamsCamera/unitTest.cpp deleted file mode 100644 index 9eac678296..0000000000 --- a/isis/src/osirisrex/objs/OsirisRexOcamsCamera/unitTest.cpp +++ /dev/null @@ -1,183 +0,0 @@ -/** This is free and unencumbered software released into the public domain. - -The authors of ISIS do not claim copyright on the contents of this file. -For more details about the LICENSE terms and the AUTHORS, you will -find files of those names at the top level of this repository. **/ - -/* SPDX-License-Identifier: CC0-1.0 */ - -#include -#include - -#include "Camera.h" -#include "CameraFactory.h" -#include "IException.h" -#include "iTime.h" -#include "OsirisRexOcamsCamera.h" -#include "Preference.h" -#include "Pvl.h" -#include "PvlGroup.h" - -using namespace std; -using namespace Isis; - -void testCamera(Cube &c, double sample, double line, double knownLat, double knownLon); -void testLineSamp(Camera *cam, double sample, double line); - -/** - * This is the unit test for the Osiris Rex Camera model. - * - * @author 2015-11-10 Stuart C. Sides - * @internal - * @history 2015-11-10 Stuart C. Sides - Original version (PolyCam test). - * @history 2016-12-27 Jeannie Backer - Added test for MapCam. Added placeholder - * for SamCam test (when we have an image we can spiceinit). - * @history 2017-08-29 Jeannie Backer - Added test for PolyCam and MapCam with - * PolyCamFocusPositionNaifId keyword. - * @history 2017-09-18 Kristin Berry - Updated known latitudes and longitudes for the addition of - * the distortion model. (For non-backwards compatibility MapCam cube - * only, since we do not yet have a PolyCam cube with a motor position - * that we have a distortion solution for.) - * - */ - -int main(void) { - Preference::Preferences(true); - - cout << "Unit Test for OsirisRexOcamsCamera..." << endl; - try { - - cout << "\nTesting PolyCam (backwards compatibility)..." << endl; - Cube polyCamCube("$ISISTESTDATA/isis/src/osirisrex/unitTestData/2019-01-13T23_36_05.000_PCAM_L2b_V001.cub", "r"); - double knownLat = 13.9465663689936950; - double knownLon = 349.0213035062322433; - double sample = 512.0; - double line = 512.0; - testCamera(polyCamCube, sample, line, knownLat, knownLon); - cout << "\nTesting PolyCam (with PolyCamFocusPositionNaifId keyword)..." << endl; - Cube polyCamCube2("$ISISTESTDATA/isis/src/osirisrex/unitTestData/20190113T191852S740_pol_iofL2pan_V001.cub", "r"); - knownLat = -5.5191879351483450; - knownLon = 349.6939492565607566; - sample = 512.0; - line = 512.0; - testCamera(polyCamCube2, sample, line, knownLat, knownLon); - cout << "============================================================================" << endl; - - cout << "\nTesting MapCam (backwards compatibility)..." << endl; - Cube mapCamCube("$ISISTESTDATA/isis/src/osirisrex/unitTestData/D19030320000.cub", "r"); - knownLat = 73.9976065262802933; - knownLon = 149.3814386120742768; - sample = 512.0; - line = 512.0; - testCamera(mapCamCube, sample, line, knownLat, knownLon); - cout << "\nTesting MapCam (with PolyCamFocusPositionNaifId keyword)..." << endl; - Cube mapCamCube2("$ISISTESTDATA/isis/src/osirisrex/unitTestData/20190303T100344S990_map_iofL2pan_V001.cub", "r"); - knownLat = -19.2946930665326732; - knownLon = 145.9510736765638512; - sample = 512.0; - line = 512.0; - testCamera(mapCamCube2, sample, line, knownLat, knownLon); - cout << "============================================================================" << endl; - -/* - cout << "\nTesting SamCam..." << endl; - Cube samCamCube("$osirisrex/testData/20141111T202650_SCAM_L2_V001_SCAM.cub", "r"); - knownLat = 0.0; - knownLon = 0.0; - sample = 512.0; - line = 512.0; - testCamera(samCamCube, sample, line, knownLat, knownLon); - cout << "============================================================================" << endl; -*/ - } - catch (IException &e) { - cout << "Failed unitTest." << endl; - e.print(); - } -} - -void testCamera(Cube &cube, - double sample, double line, - double knownLat, double knownLon) { - - OsirisRexOcamsCamera *cam = (OsirisRexOcamsCamera *) CameraFactory::Create(cube); - cout << "FileName: " << FileName(cube.fileName()).name() << endl; - cout << "NAIF Frame ID: " << cam->instrumentRotation()->Frame() << endl << endl; - cout.setf(std::ios::fixed); - cout << setprecision(9); - - // Test kernel IDs - cout << "Kernel IDs: " << endl; - cout << "CK Frame ID = " << cam->CkFrameId() << endl; - cout << "CK Reference ID = " << cam->CkReferenceId() << endl; - cout << "SPK Target ID = " << cam->SpkTargetId() << endl; - cout << "SPK Reference ID = " << cam->SpkReferenceId() << endl << endl; - - // Test name methods - cout << "Spacecraft Name Long: " << cam->spacecraftNameLong() << endl; - cout << "Spacecraft Name Short: " << cam->spacecraftNameShort() << endl; - cout << "Instrument Name Long: " << cam->instrumentNameLong() << endl; - cout << "Instrument Name Short: " << cam->instrumentNameShort() << endl << endl; - - // Test Shutter Open/Close - const PvlGroup &inst = cube.label()->findGroup("Instrument", Pvl::Traverse); - double exposureDuration = ((double) inst["ExposureDuration"])/1000; - QString stime = inst["StartTime"]; - double et; // StartTime keyword is the center exposure time - str2et_c(stime.toLatin1().data(), &et); - pair shuttertimes = cam->ShutterOpenCloseTimes(et, exposureDuration); - cout << "Shutter open = " << shuttertimes.first.Et() << endl; - cout << "Shutter close = " << shuttertimes.second.Et() << endl << endl; - - // Test all four corners to make sure the conversions are right - cout << "For upper left corner ..." << endl; - testLineSamp(cam, 1.0, 1.0); - - cout << "For upper right corner ..." << endl; - testLineSamp(cam, 1024.0, 1.0); - - cout << "For lower left corner ..." << endl; - testLineSamp(cam, 1.0, 1024.0); - - cout << "For lower right corner ..." << endl; - testLineSamp(cam, 1024.0, 1024.0); - - cout << "For known pixel position ..." << endl; - if (!cam->SetImage(sample, line)) { - throw IException(IException::Unknown, "ERROR setting image to known position.", _FILEINFO_); - } - if (abs(cam->UniversalLatitude() - knownLat) < 6E-14) { - cout << "Latitude OK" << endl; - } - else { - cout << setprecision(16) << "Latitude off by: " << cam->UniversalLatitude() - knownLat << endl; - } - if (abs(cam->UniversalLongitude() - knownLon) < 6E-14) { - cout << "Longitude OK" << endl; - } - else { - cout << setprecision(16) << "Longitude off by: " << cam->UniversalLongitude() - knownLon << endl; - } -} - - -void testLineSamp(Camera *cam, double samp, double line) { - bool success = cam->SetImage(samp, line); - - if (success) { - success = cam->SetUniversalGround(cam->UniversalLatitude(), cam->UniversalLongitude()); - } - - if (success) { - double deltaSamp = samp - cam->Sample(); - double deltaLine = line - cam->Line(); - if (fabs(deltaSamp) < 0.001) deltaSamp = 0.0; - if (fabs(deltaLine) < 0.001) deltaLine = 0.0; - cout << "DeltaSample = " << deltaSamp << endl; - cout << "DeltaLine = " << deltaLine << endl << endl; - } - else { - cout << "DeltaSample = NO INTERSECTION" << endl; - cout << "DeltaLine = NO INTERSECTION" << endl << endl; - } -} diff --git a/isis/src/osirisrex/tsts/mapcam/Makefile b/isis/src/osirisrex/tsts/mapcam/Makefile index f8109877fd..414a34285c 100644 --- a/isis/src/osirisrex/tsts/mapcam/Makefile +++ b/isis/src/osirisrex/tsts/mapcam/Makefile @@ -25,7 +25,10 @@ commands: from=$(OUTPUT)/20190303T100344S990_map_iofL2pan_V001-spiceinit.cub \ ckpredict=t \ spkpredict=t \ - extra='$$osirisrex/kernels/pck/bennu_v10.tpc' \ + ckrecon=f \ + spkrecon=f \ + SCLK='$$osirisrex/kernels/sclk/SCLK.tsc' \ + extra='$$osirisrex/kernels/pck/bennu_v10.tpc' \ >& /dev/null; # phocube first image diff --git a/isis/src/osirisrex/tsts/polycam/Makefile b/isis/src/osirisrex/tsts/polycam/Makefile index 6d695be685..572f8172b8 100644 --- a/isis/src/osirisrex/tsts/polycam/Makefile +++ b/isis/src/osirisrex/tsts/polycam/Makefile @@ -23,10 +23,9 @@ commands: # spiceinit first image spiceinit $(TSTARGS) \ from=$(OUTPUT)/2019-01-13T23_35_59.000_PCAM_L2b_V001.cub \ - ckpredict=t \ - spkpredict=t \ - extra='$$osirisrex/kernels/pck/bennu_v10.tpc' \ - >& /dev/null; + SCLK='$$osirisrex/kernels/sclk/SCLK.tsc' \ + extra='$$osirisrex/kernels/pck/bennu_v10.tpc' \ + > /dev/null; # # phocube first image # # create backplane with dn, phase angle, emission angle, incidence angle, and pixel resolution diff --git a/isis/src/system/apps/kerneldbgen/SpiceDbGen.cpp b/isis/src/system/apps/kerneldbgen/SpiceDbGen.cpp index 71104fc263..7a8a4c8f60 100644 --- a/isis/src/system/apps/kerneldbgen/SpiceDbGen.cpp +++ b/isis/src/system/apps/kerneldbgen/SpiceDbGen.cpp @@ -228,7 +228,7 @@ PvlGroup SpiceDbGen::AddSelection(FileName fileIn, double startOffset, double en //finalize the filename so that it may be used in spice routines QString tmp = fileIn.expanded(); -// const char* file = fileIn.expanded().c_str(); + // const char* file = fileIn.expanded().c_str(); furnsh_c(tmp.toLatin1().data()); SpiceChar fileType[32], source[2048]; SpiceInt handle; diff --git a/isis/tests/Fixtures.cpp b/isis/tests/Fixtures.cpp index 57961e0407..c4fcb12f22 100644 --- a/isis/tests/Fixtures.cpp +++ b/isis/tests/Fixtures.cpp @@ -967,6 +967,72 @@ namespace Isis { cubeFileList.write(cubeListPath); } + + void OsirisRexCube::setInstrument(QString ikid, QString instrumentId) { + delete testCube; + testCube = new Cube(); + + FileName newCube(tempDir.path() + "/testing.cub"); + + testCube->fromIsd(newCube, label, isd, "rw"); + + PvlGroup &kernels = testCube->label()->findObject("IsisCube").findGroup("Kernels"); + kernels.findKeyword("NaifFrameCode").setValue(ikid); + kernels["ShapeModel"] = "Null"; + + PvlGroup &inst = testCube->label()->findObject("IsisCube").findGroup("Instrument"); + std::istringstream iss(R"( + Group = Instrument + MissionName = OSIRIS-REx + SpacecraftName = OSIRIS-REX + InstrumentId = PolyCam + TargetName = Bennu + StartTime = 2019-01-13T23:36:05.000 + ExposureDuration = 100 + SpacecraftClockStartCount = 1/0600694569.00000 + FocusPosition = 21510 + End_Group + )"); + + PvlGroup newInstGroup; + iss >> newInstGroup; + + newInstGroup.findKeyword("InstrumentId").setValue(instrumentId); + + inst = newInstGroup; + + PvlGroup &bandBin = label.findObject("IsisCube").findGroup("BandBin"); + std::istringstream bss(R"( + Group = BandBin + FilterName = Unknown + End_Group + )"); + + PvlGroup newBandBin; + bss >> newBandBin; + bandBin = newBandBin; + + json nk; + nk["BODY2101955_RADII"] = {2825, 2675, 254}; + nk["INS"+ikid.toStdString()+"_FOCAL_LENGTH"] = 630.0; + nk["INS"+ikid.toStdString()+"_PIXEL_SIZE"] = 8.5; + nk["CLOCK_ET_-64_1/0600694569.00000_COMPUTED"] = "8ed6ae8930f3bd41"; + nk["INS"+ikid.toStdString()+"_TRANSX"] = {0.0, 0.0085, 0.0}; + nk["INS"+ikid.toStdString()+"_TRANSY"] = {0.0, 0.0, -0.0085}; + nk["INS"+ikid.toStdString()+"_ITRANSS"] = {0.0, 117.64705882353, 0.0}; + nk["INS"+ikid.toStdString()+"_ITRANSL"] = {0.0, 0.0, -117.64705882353}; + nk["INS"+ikid.toStdString()+"_CCD_CENTER"] = {511.5, 511.5}; + nk["BODY_FRAME_CODE"] = 2101955; + + PvlObject &naifKeywords = testCube->label()->findObject("NaifKeywords"); + PvlObject newNaifKeywords("NaifKeywords", nk); + naifKeywords = newNaifKeywords; + + QString fileName = testCube->fileName(); + delete testCube; + testCube = new Cube(fileName, "rw"); + } + void CSMCubeFixture::SetUp() { SmallCube::SetUp(); diff --git a/isis/tests/Fixtures.h b/isis/tests/Fixtures.h index 6d22a303f3..94d9e4078e 100644 --- a/isis/tests/Fixtures.h +++ b/isis/tests/Fixtures.h @@ -221,6 +221,13 @@ namespace Isis { void setInstrument(QString ikid, QString instrumentId, QString spacecraftName); }; + + class OsirisRexCube : public DefaultCube { + protected: + void setInstrument(QString ikid, QString instrumentId); + }; + + class ApolloCube : public LargeCube { protected: void SetUp() override; diff --git a/isis/tests/OsirisRexOCamsCameraTests.cpp b/isis/tests/OsirisRexOCamsCameraTests.cpp new file mode 100644 index 0000000000..276489f219 --- /dev/null +++ b/isis/tests/OsirisRexOCamsCameraTests.cpp @@ -0,0 +1,75 @@ +#include "OsirisRexOcamsCamera.h" +#include "IException.h" +#include "TestUtilities.h" +#include "iTime.h" + +#include "Fixtures.h" +#include + +using namespace Isis; +using namespace std; + +TEST_F(OsirisRexCube, PolyMath) { + setInstrument("-64360", "PolyCam"); + + OsirisRexOcamsCamera *cam = (OsirisRexOcamsCamera *)testCube->camera(); + + EXPECT_EQ(cam->instrumentRotation()->Frame(), -27002); + + // Test kernel IDs + EXPECT_EQ(cam->CkFrameId(), -64000); + EXPECT_EQ(cam->CkReferenceId(), 1); + EXPECT_EQ(cam->SpkTargetId(), -64); + EXPECT_EQ(cam->SpkReferenceId(), 1); + + // Test name methods + EXPECT_PRED_FORMAT2(AssertQStringsEqual, cam->spacecraftNameLong(), "OSIRIS-REx"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, cam->spacecraftNameShort(), "OSIRIS-REx"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, cam->instrumentNameLong(), "PolyMath Camera"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, cam->instrumentNameShort(), "PolyCam"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, cam->instrumentId(), "PolyCam"); + + const PvlGroup &inst = testCube->label()->findGroup("Instrument", Pvl::Traverse); + double exposureDuration = ((double) inst["ExposureDuration"])/1000; + QString stime = inst["StartTime"]; + double et; // StartTime keyword is the center exposure time + str2et_c(stime.toLatin1().data(), &et); + pair shuttertimes = cam->ShutterOpenCloseTimes(et, exposureDuration); + EXPECT_NEAR(shuttertimes.first.Et(), 600694634.18428946, 6E-14); + EXPECT_NEAR(shuttertimes.second.Et(), 600694634.28428948, 6E-14); + + EXPECT_TRUE(cam->SetImage(5, 5)); + EXPECT_NEAR(cam->UniversalLatitude(), 9.26486, 0.0001); + EXPECT_NEAR(cam->UniversalLongitude(), 276.167, 0.0001); + + EXPECT_TRUE(cam->SetUniversalGround(cam->UniversalLatitude(), cam->UniversalLongitude())); + EXPECT_NEAR(cam->Line(), 5, 0.01); + EXPECT_NEAR(cam->Sample(), 5, 0.01); +} + + +TEST_F(OsirisRexCube, MappingCam) { + setInstrument("-64361", "PolyCam"); + + OsirisRexOcamsCamera *cam = (OsirisRexOcamsCamera *)testCube->camera();; + EXPECT_PRED_FORMAT2(AssertQStringsEqual, cam->spacecraftNameLong(), "OSIRIS-REx"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, cam->spacecraftNameShort(), "OSIRIS-REx"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, cam->instrumentNameLong(), "Mapping Camera"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, cam->instrumentNameShort(), "MapCam"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, cam->instrumentId(), "PolyCam"); +} + + +TEST_F(OsirisRexCube, SamplingCam) { + setInstrument("-64362", "PolyCam"); + + OsirisRexOcamsCamera *cam = (OsirisRexOcamsCamera *)testCube->camera();; + EXPECT_PRED_FORMAT2(AssertQStringsEqual, cam->spacecraftNameLong(), "OSIRIS-REx"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, cam->spacecraftNameShort(), "OSIRIS-REx"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, cam->instrumentNameLong(), "Sampling Camera"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, cam->instrumentNameShort(), "SamCam"); + EXPECT_PRED_FORMAT2(AssertQStringsEqual, cam->instrumentId(), "PolyCam"); + + +} +