Unverified Commit 916d3fe1 authored by github-actions[bot]'s avatar github-actions[bot] Committed by GitHub
Browse files

Exclude ignored measures in cnetcheck (#4784) (#4821)



* Modified noLatLon logic to exclude ignored measures

* Added test for ignored measures

* Added entry for cnetcheck ignored points

* Added test for ignored point, fixed test for ignored measures

Co-authored-by: default avatarAustinSanders <austinsanders1993@gmail.com>
parent fad0d9ad
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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

+6 −1
Original line number Diff line number Diff line
@@ -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();
+86 −1
Original line number Diff line number Diff line
@@ -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);
@@ -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);
}