Loading CHANGELOG.md +9 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,15 @@ release. ## [Unreleased] ### Changed ### Added ### Deprecated ### Fixed - Modified cnetcheck noLatLonCheck logic to correctly exclude ignored measures. [#4649](https://github.com/USGS-Astrogeology/ISIS3/issues/4649) ## [7.0.0] - 2022-02-11 Loading isis/src/control/apps/cnetcheck/cnetcheck.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -635,7 +635,12 @@ namespace Isis { createdCamera = false; } QList< ControlMeasure * > measures = cnet.GetMeasuresInCube(serialNumber); QList< ControlMeasure * > measures; if (ignore) { measures = cnet.GetValidMeasuresInCube(serialNumber); } else { measures = cnet.GetMeasuresInCube(serialNumber); } for (int cm = 0; cm < measures.size(); cm++) { ControlMeasure *measure = measures[cm]; ControlPoint *point = measure->Parent(); Loading isis/tests/FunctionalTestsCnetcheck.cpp +86 −1 Original line number Diff line number Diff line Loading @@ -96,7 +96,7 @@ TEST_F(ThreeImageNetwork, FunctionalTestCnetcheckNoPoints) { } TEST_F(ThreeImageNetwork, FunctionalTestCnetcheckIgnore) { TEST_F(ThreeImageNetwork, FunctionalTestCnetcheckIslands) { // Add measures with fake serials not in the cubelist ControlMeasure *m1 = new ControlMeasure(); m1->SetAprioriLine(481); Loading Loading @@ -146,3 +146,88 @@ TEST_F(ThreeImageNetwork, FunctionalTestCnetcheckIgnore) { EXPECT_EQ((int)pvlResults.findKeyword("NoControl"), 1); EXPECT_EQ((int)pvlResults.findKeyword("LowCoverage"), 3); } TEST_F(ThreeImageNetwork, FunctionaltestCnetcheckIgnoredMeasures){ QVector<QString> args = {"fromlist="+cubeListFile, "prefix="+tempDir.path()+"/", "nocube=false", "lowcoverage=false"}; UserInterface options(APP_XML, args); QString cube1Serial = SerialNumber::Compose(*cube1->label()); QString cube2Serial = SerialNumber::Compose(*cube2->label()); // Add measure guaranteed to fail computing lat/lon ControlMeasure *m1 = new ControlMeasure(); m1->SetAprioriLine(481); m1->SetAprioriSample(481); m1->SetCamera(cube1->camera()); m1->SetCubeSerialNumber(cube1Serial); m1->SetIgnored(true); ControlMeasure *m2 = new ControlMeasure(); m2->SetAprioriLine(999); m2->SetAprioriSample(999); m2->SetCamera(cube2->camera()); m2->SetCubeSerialNumber(cube2Serial); m2->SetIgnored(true); ControlPoint *newPoint = new ControlPoint(); newPoint->Add(m1); newPoint->Add(m2); newPoint->SetIgnored(true); network->AddPoint(newPoint); Pvl log; cnetcheck(*network, *cubeList, options, &log); PvlGroup pvlResults = log.findGroup("Results"); EXPECT_TRUE((int)pvlResults.findKeyword("Islands") == 1); EXPECT_FALSE(pvlResults.hasKeyword("NoLatLonCubes")); EXPECT_FALSE(pvlResults.hasKeyword("SingleCube")); } TEST_F(ThreeImageNetwork, FunctionalTestCnetcheckIslandsIgnoredPoint) { // Add measures with fake serials not in the cubelist ControlMeasure *m1 = new ControlMeasure(); m1->SetAprioriLine(481); m1->SetAprioriSample(481); m1->SetCubeSerialNumber("thisIsFakeLol"); ControlMeasure *m2 = new ControlMeasure(); m2->SetAprioriLine(481); m2->SetAprioriSample(481); m2->SetCubeSerialNumber("thisIsFakeLol2"); ControlPoint *newPoint = new ControlPoint(); newPoint->Add(m1); newPoint->Add(m2); network->AddPoint(newPoint); ControlMeasure *m3 = new ControlMeasure(); m3->SetAprioriLine(881); m3->SetAprioriSample(881); m3->SetCubeSerialNumber("thisIsFakeLol2"); // Add an ignored point that would otherwise join the islands ControlPoint *existingPoint = network->GetPoint("test0001"); existingPoint->Add(m3); existingPoint->SetIgnored(true); // append cube not in network FileName c("data/defaultImage/defaultCube.pvl"); cubeList->append(c.expanded()); QVector<QString> args = {"fromlist="+cubeListFile, "prefix="+tempDir.path()+"/", "tolerance=0.95"}; UserInterface options(APP_XML, args); Pvl log; cnetcheck(*network, *cubeList, options, &log); PvlGroup pvlResults = log.findGroup("Results"); EXPECT_EQ((int)pvlResults.findKeyword("Islands"), 2); EXPECT_EQ((int)pvlResults.findKeyword("SingleCube"), 2); EXPECT_EQ((int)pvlResults.findKeyword("NoCube"), 2); EXPECT_EQ((int)pvlResults.findKeyword("NoControl"), 1); EXPECT_EQ((int)pvlResults.findKeyword("LowCoverage"), 3); } Loading
CHANGELOG.md +9 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,15 @@ release. ## [Unreleased] ### Changed ### Added ### Deprecated ### Fixed - Modified cnetcheck noLatLonCheck logic to correctly exclude ignored measures. [#4649](https://github.com/USGS-Astrogeology/ISIS3/issues/4649) ## [7.0.0] - 2022-02-11 Loading
isis/src/control/apps/cnetcheck/cnetcheck.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -635,7 +635,12 @@ namespace Isis { createdCamera = false; } QList< ControlMeasure * > measures = cnet.GetMeasuresInCube(serialNumber); QList< ControlMeasure * > measures; if (ignore) { measures = cnet.GetValidMeasuresInCube(serialNumber); } else { measures = cnet.GetMeasuresInCube(serialNumber); } for (int cm = 0; cm < measures.size(); cm++) { ControlMeasure *measure = measures[cm]; ControlPoint *point = measure->Parent(); Loading
isis/tests/FunctionalTestsCnetcheck.cpp +86 −1 Original line number Diff line number Diff line Loading @@ -96,7 +96,7 @@ TEST_F(ThreeImageNetwork, FunctionalTestCnetcheckNoPoints) { } TEST_F(ThreeImageNetwork, FunctionalTestCnetcheckIgnore) { TEST_F(ThreeImageNetwork, FunctionalTestCnetcheckIslands) { // Add measures with fake serials not in the cubelist ControlMeasure *m1 = new ControlMeasure(); m1->SetAprioriLine(481); Loading Loading @@ -146,3 +146,88 @@ TEST_F(ThreeImageNetwork, FunctionalTestCnetcheckIgnore) { EXPECT_EQ((int)pvlResults.findKeyword("NoControl"), 1); EXPECT_EQ((int)pvlResults.findKeyword("LowCoverage"), 3); } TEST_F(ThreeImageNetwork, FunctionaltestCnetcheckIgnoredMeasures){ QVector<QString> args = {"fromlist="+cubeListFile, "prefix="+tempDir.path()+"/", "nocube=false", "lowcoverage=false"}; UserInterface options(APP_XML, args); QString cube1Serial = SerialNumber::Compose(*cube1->label()); QString cube2Serial = SerialNumber::Compose(*cube2->label()); // Add measure guaranteed to fail computing lat/lon ControlMeasure *m1 = new ControlMeasure(); m1->SetAprioriLine(481); m1->SetAprioriSample(481); m1->SetCamera(cube1->camera()); m1->SetCubeSerialNumber(cube1Serial); m1->SetIgnored(true); ControlMeasure *m2 = new ControlMeasure(); m2->SetAprioriLine(999); m2->SetAprioriSample(999); m2->SetCamera(cube2->camera()); m2->SetCubeSerialNumber(cube2Serial); m2->SetIgnored(true); ControlPoint *newPoint = new ControlPoint(); newPoint->Add(m1); newPoint->Add(m2); newPoint->SetIgnored(true); network->AddPoint(newPoint); Pvl log; cnetcheck(*network, *cubeList, options, &log); PvlGroup pvlResults = log.findGroup("Results"); EXPECT_TRUE((int)pvlResults.findKeyword("Islands") == 1); EXPECT_FALSE(pvlResults.hasKeyword("NoLatLonCubes")); EXPECT_FALSE(pvlResults.hasKeyword("SingleCube")); } TEST_F(ThreeImageNetwork, FunctionalTestCnetcheckIslandsIgnoredPoint) { // Add measures with fake serials not in the cubelist ControlMeasure *m1 = new ControlMeasure(); m1->SetAprioriLine(481); m1->SetAprioriSample(481); m1->SetCubeSerialNumber("thisIsFakeLol"); ControlMeasure *m2 = new ControlMeasure(); m2->SetAprioriLine(481); m2->SetAprioriSample(481); m2->SetCubeSerialNumber("thisIsFakeLol2"); ControlPoint *newPoint = new ControlPoint(); newPoint->Add(m1); newPoint->Add(m2); network->AddPoint(newPoint); ControlMeasure *m3 = new ControlMeasure(); m3->SetAprioriLine(881); m3->SetAprioriSample(881); m3->SetCubeSerialNumber("thisIsFakeLol2"); // Add an ignored point that would otherwise join the islands ControlPoint *existingPoint = network->GetPoint("test0001"); existingPoint->Add(m3); existingPoint->SetIgnored(true); // append cube not in network FileName c("data/defaultImage/defaultCube.pvl"); cubeList->append(c.expanded()); QVector<QString> args = {"fromlist="+cubeListFile, "prefix="+tempDir.path()+"/", "tolerance=0.95"}; UserInterface options(APP_XML, args); Pvl log; cnetcheck(*network, *cubeList, options, &log); PvlGroup pvlResults = log.findGroup("Results"); EXPECT_EQ((int)pvlResults.findKeyword("Islands"), 2); EXPECT_EQ((int)pvlResults.findKeyword("SingleCube"), 2); EXPECT_EQ((int)pvlResults.findKeyword("NoCube"), 2); EXPECT_EQ((int)pvlResults.findKeyword("NoControl"), 1); EXPECT_EQ((int)pvlResults.findKeyword("LowCoverage"), 3); }