Commit d3759e84 authored by dcookastrog's avatar dcookastrog
Browse files

Updated unitTests for LidarData and LidarControlPoint and fixed problems encountered

parent fae5ed6b
Loading
Loading
Loading
Loading
+19 −19
Original line number Diff line number Diff line
@@ -214,14 +214,14 @@ namespace Isis {

        if (pointObject.contains("aprioriMatrix") &&
                                 pointObject["aprioriMatrix"].isArray()) {
          QJsonArray  aprioriMatrixArray = pointObject["apriorMatrix"].toArray();
          QJsonArray  aprioriMatrixArray = pointObject["aprioriMatrix"].toArray();
          boost::numeric::ublas::symmetric_matrix<double, upper> aprioriMatrix(3);
          aprioriMatrix.clear();
          aprioriMatrix(0, 0) = aprioriMatrixArray[0].toDouble();
          aprioriMatrix(0, 1) = aprioriMatrixArray[1].toDouble();
          aprioriMatrix(0, 2) = aprioriMatrixArray[2].toDouble();
          aprioriMatrix(0, 1) = aprioriMatrix(1, 0) = aprioriMatrixArray[1].toDouble();
          aprioriMatrix(0, 2) = aprioriMatrix(2, 0) = aprioriMatrixArray[2].toDouble();
          aprioriMatrix(1, 1) = aprioriMatrixArray[3].toDouble();
          aprioriMatrix(1, 2) = aprioriMatrixArray[4].toDouble();
          aprioriMatrix(1, 2) = aprioriMatrix(2, 1) = aprioriMatrixArray[4].toDouble();
          aprioriMatrix(2, 2) = aprioriMatrixArray[5].toDouble();
          
          lcp->SetAprioriSurfacePoint(SurfacePoint(Latitude(latitude, Angle::Units::Degrees),
@@ -259,10 +259,10 @@ namespace Isis {
            boost::numeric::ublas::symmetric_matrix<double, upper> adjustedMatrix(3);
            adjustedMatrix.clear();
            adjustedMatrix(0, 0) = adjustedMatrixArray[0].toDouble();
            adjustedMatrix(0, 1) = adjustedMatrixArray[1].toDouble();
            adjustedMatrix(0, 2) = adjustedMatrixArray[2].toDouble();
            adjustedMatrix(0, 1) = adjustedMatrix(1, 0) = adjustedMatrixArray[1].toDouble();
            adjustedMatrix(0, 2) = adjustedMatrix(2, 0) = adjustedMatrixArray[2].toDouble();
            adjustedMatrix(1, 1) = adjustedMatrixArray[3].toDouble();
            adjustedMatrix(1, 2) = adjustedMatrixArray[4].toDouble();
            adjustedMatrix(1, 2) = adjustedMatrix(2, 1) = adjustedMatrixArray[4].toDouble();
            adjustedMatrix(2, 2) = adjustedMatrixArray[5].toDouble();
          
            lcp->SetAdjustedSurfacePoint(SurfacePoint(Latitude(adjustedLatitude, Angle::Units::Degrees),
@@ -380,12 +380,12 @@ namespace Isis {
        // Serialize the apriori matrix
        symmetric_matrix<double, upper> aprioriMatrix = aprioriSurfacePoint.GetSphericalMatrix();
        QJsonArray aprioriMatrixArray;
        aprioriMatrixArray += toString(aprioriMatrix(0, 0));
        aprioriMatrixArray += toString(aprioriMatrix(0, 1));
        aprioriMatrixArray += toString(aprioriMatrix(0, 2));
        aprioriMatrixArray += toString(aprioriMatrix(1, 1));
        aprioriMatrixArray += toString(aprioriMatrix(1, 2));
        aprioriMatrixArray += toString(aprioriMatrix(2, 2));
        aprioriMatrixArray += aprioriMatrix(0, 0);
        aprioriMatrixArray += aprioriMatrix(0, 1);
        aprioriMatrixArray += aprioriMatrix(0, 2);
        aprioriMatrixArray += aprioriMatrix(1, 1);
        aprioriMatrixArray += aprioriMatrix(1, 2);
        aprioriMatrixArray += aprioriMatrix(2, 2);

        // If the covariance matrix has a value, add it to the PVL point.
        if ( aprioriMatrix(0, 0) != 0.0
@@ -410,12 +410,12 @@ namespace Isis {
        // Serialize the adjusted matrix
        symmetric_matrix<double, upper> adjustedMatrix = adjustedSurfacePoint.GetSphericalMatrix();
        QJsonArray adjustedMatrixArray;
        adjustedMatrixArray += toString(adjustedMatrix(0, 0));
        adjustedMatrixArray += toString(adjustedMatrix(0, 1));
        adjustedMatrixArray += toString(adjustedMatrix(0, 2));
        adjustedMatrixArray += toString(adjustedMatrix(1, 1));
        adjustedMatrixArray += toString(adjustedMatrix(1, 2));
        adjustedMatrixArray += toString(adjustedMatrix(2, 2));
        adjustedMatrixArray += adjustedMatrix(0, 0);
        adjustedMatrixArray += adjustedMatrix(0, 1);
        adjustedMatrixArray += adjustedMatrix(0, 2);
        adjustedMatrixArray += adjustedMatrix(1, 1);
        adjustedMatrixArray += adjustedMatrix(1, 2);
        adjustedMatrixArray += adjustedMatrix(2, 2);

        // If the covariance matrix has a value, add it to the PVL point.
        if ( adjustedMatrix(0, 0) != 0.0
+442 −0
Original line number Diff line number Diff line
Testing default constructor... 
	number of points: 0

Testing insert(QSharedPointer<LidarControlPoint>)... 
	number of points: 1
	name of point:    testLidarControlPoint
	time of point:    2018-01-31T14:05:00.1233999

Testing write(FileName)... 
json

json
dat
./test.dat
Testing read(FileName) from binary data... 
LidarData:
	LidarControlPoint:
		id: testLidarControlPoint3
		latitude:  53
		longitude: 103
		radius:    1000
		range:     85
		sigmaRange:0.1
		time:      2018-01-31T14:08:00.1233999
		matrix:      [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549))
		ControlMeasure: 
			line:   0
			sample: 3
			SN:     SN_3-0
		#END_ControlMeasure.
		ControlMeasure: 
			line:   1
			sample: 3
			SN:     SN_3-1
		#END_ControlMeasure.
	#END_LidarControlPoint.

	LidarControlPoint:
		id: testLidarControlPoint4
		latitude:  54
		longitude: 104
		radius:    1000
		range:     95
		sigmaRange:0.1
		time:      2018-01-31T14:09:00.1233999
		matrix:      [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549))
		ControlMeasure: 
			line:   0
			sample: 4
			SN:     SN_4-0
		#END_ControlMeasure.
		ControlMeasure: 
			line:   1
			sample: 4
			SN:     SN_4-1
		#END_ControlMeasure.
	#END_LidarControlPoint.

	LidarControlPoint:
		id: testLidarControlPoint5
		latitude:  55
		longitude: 105
		radius:    1000
		range:     105
		sigmaRange:0.1
		time:      2018-01-31T14:10:00.1233999
		matrix:      [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549))
		ControlMeasure: 
			line:   0
			sample: 5
			SN:     SN_5-0
		#END_ControlMeasure.
		ControlMeasure: 
			line:   1
			sample: 5
			SN:     SN_5-1
		#END_ControlMeasure.
	#END_LidarControlPoint.

	LidarControlPoint:
		id: testLidarControlPoint1
		latitude:  51
		longitude: 101
		radius:    1000
		range:     65
		sigmaRange:0.1
		time:      2018-01-31T14:06:00.1233999
		matrix:      [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549))
		ControlMeasure: 
			line:   0
			sample: 1
			SN:     SN_1-0
		#END_ControlMeasure.
		ControlMeasure: 
			line:   1
			sample: 1
			SN:     SN_1-1
		#END_ControlMeasure.
	#END_LidarControlPoint.

	LidarControlPoint:
		id: testLidarControlPoint7
		latitude:  57
		longitude: 107
		radius:    1000
		range:     125
		sigmaRange:0.1
		time:      2018-01-31T14:12:00.1233998
		matrix:      [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549))
		ControlMeasure: 
			line:   0
			sample: 7
			SN:     SN_7-0
		#END_ControlMeasure.
		ControlMeasure: 
			line:   1
			sample: 7
			SN:     SN_7-1
		#END_ControlMeasure.
	#END_LidarControlPoint.

	LidarControlPoint:
		id: testLidarControlPoint9
		latitude:  59
		longitude: 109
		radius:    1000
		range:     145
		sigmaRange:0.1
		time:      2018-01-31T14:14:00.1233998
		matrix:      [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549))
		ControlMeasure: 
			line:   0
			sample: 9
			SN:     SN_9-0
		#END_ControlMeasure.
		ControlMeasure: 
			line:   1
			sample: 9
			SN:     SN_9-1
		#END_ControlMeasure.
	#END_LidarControlPoint.

	LidarControlPoint:
		id: testLidarControlPoint8
		latitude:  58
		longitude: 108
		radius:    1000
		range:     135
		sigmaRange:0.1
		time:      2018-01-31T14:13:00.1233998
		matrix:      [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549))
		ControlMeasure: 
			line:   0
			sample: 8
			SN:     SN_8-0
		#END_ControlMeasure.
		ControlMeasure: 
			line:   1
			sample: 8
			SN:     SN_8-1
		#END_ControlMeasure.
	#END_LidarControlPoint.

	LidarControlPoint:
		id: testLidarControlPoint10
		latitude:  60
		longitude: 110
		radius:    1000
		range:     155
		sigmaRange:0.1
		time:      2018-01-31T14:15:00.1233998
		matrix:      [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549))
		ControlMeasure: 
			line:   0
			sample: 10
			SN:     SN_10-0
		#END_ControlMeasure.
		ControlMeasure: 
			line:   1
			sample: 10
			SN:     SN_10-1
		#END_ControlMeasure.
	#END_LidarControlPoint.

	LidarControlPoint:
		id: testLidarControlPoint2
		latitude:  52
		longitude: 102
		radius:    1000
		range:     75
		sigmaRange:0.1
		time:      2018-01-31T14:07:00.1233999
		matrix:      [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549))
		ControlMeasure: 
			line:   0
			sample: 2
			SN:     SN_2-0
		#END_ControlMeasure.
		ControlMeasure: 
			line:   1
			sample: 2
			SN:     SN_2-1
		#END_ControlMeasure.
	#END_LidarControlPoint.

	LidarControlPoint:
		id: testLidarControlPoint6
		latitude:  56
		longitude: 106
		radius:    1000
		range:     115
		sigmaRange:0.1
		time:      2018-01-31T14:11:00.1233999
		matrix:      [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549))
		ControlMeasure: 
			line:   0
			sample: 6
			SN:     SN_6-0
		#END_ControlMeasure.
		ControlMeasure: 
			line:   1
			sample: 6
			SN:     SN_6-1
		#END_ControlMeasure.
	#END_LidarControlPoint.



Testing read(FileName) from JSON data... 
LidarData:
	LidarControlPoint:
		id: testLidarControlPoint3
		latitude:  53
		longitude: 103
		radius:    1000
		range:     85
		sigmaRange:0.1
		time:      2018-01-31T14:08:00.1233999
		matrix:      [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549))
		ControlMeasure: 
			line:   0
			sample: 3
			SN:     SN_3-0
		#END_ControlMeasure.
		ControlMeasure: 
			line:   1
			sample: 3
			SN:     SN_3-1
		#END_ControlMeasure.
	#END_LidarControlPoint.

	LidarControlPoint:
		id: testLidarControlPoint4
		latitude:  54
		longitude: 104
		radius:    1000
		range:     95
		sigmaRange:0.1
		time:      2018-01-31T14:09:00.1233999
		matrix:      [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549))
		ControlMeasure: 
			line:   0
			sample: 4
			SN:     SN_4-0
		#END_ControlMeasure.
		ControlMeasure: 
			line:   1
			sample: 4
			SN:     SN_4-1
		#END_ControlMeasure.
	#END_LidarControlPoint.

	LidarControlPoint:
		id: testLidarControlPoint5
		latitude:  55
		longitude: 105
		radius:    1000
		range:     105
		sigmaRange:0.1
		time:      2018-01-31T14:10:00.1233999
		matrix:      [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549))
		ControlMeasure: 
			line:   0
			sample: 5
			SN:     SN_5-0
		#END_ControlMeasure.
		ControlMeasure: 
			line:   1
			sample: 5
			SN:     SN_5-1
		#END_ControlMeasure.
	#END_LidarControlPoint.

	LidarControlPoint:
		id: testLidarControlPoint1
		latitude:  51
		longitude: 101
		radius:    1000
		range:     65
		sigmaRange:0.1
		time:      2018-01-31T14:06:00.1233999
		matrix:      [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549))
		ControlMeasure: 
			line:   0
			sample: 1
			SN:     SN_1-0
		#END_ControlMeasure.
		ControlMeasure: 
			line:   1
			sample: 1
			SN:     SN_1-1
		#END_ControlMeasure.
	#END_LidarControlPoint.

	LidarControlPoint:
		id: testLidarControlPoint7
		latitude:  57
		longitude: 107
		radius:    1000
		range:     125
		sigmaRange:0.1
		time:      2018-01-31T14:12:00.1233998
		matrix:      [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549))
		ControlMeasure: 
			line:   0
			sample: 7
			SN:     SN_7-0
		#END_ControlMeasure.
		ControlMeasure: 
			line:   1
			sample: 7
			SN:     SN_7-1
		#END_ControlMeasure.
	#END_LidarControlPoint.

	LidarControlPoint:
		id: testLidarControlPoint9
		latitude:  59
		longitude: 109
		radius:    1000
		range:     145
		sigmaRange:0.1
		time:      2018-01-31T14:14:00.1233998
		matrix:      [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549))
		ControlMeasure: 
			line:   0
			sample: 9
			SN:     SN_9-0
		#END_ControlMeasure.
		ControlMeasure: 
			line:   1
			sample: 9
			SN:     SN_9-1
		#END_ControlMeasure.
	#END_LidarControlPoint.

	LidarControlPoint:
		id: testLidarControlPoint8
		latitude:  58
		longitude: 108
		radius:    1000
		range:     135
		sigmaRange:0.1
		time:      2018-01-31T14:13:00.1233998
		matrix:      [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549))
		ControlMeasure: 
			line:   0
			sample: 8
			SN:     SN_8-0
		#END_ControlMeasure.
		ControlMeasure: 
			line:   1
			sample: 8
			SN:     SN_8-1
		#END_ControlMeasure.
	#END_LidarControlPoint.

	LidarControlPoint:
		id: testLidarControlPoint10
		latitude:  60
		longitude: 110
		radius:    1000
		range:     155
		sigmaRange:0.1
		time:      2018-01-31T14:15:00.1233998
		matrix:      [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549))
		ControlMeasure: 
			line:   0
			sample: 10
			SN:     SN_10-0
		#END_ControlMeasure.
		ControlMeasure: 
			line:   1
			sample: 10
			SN:     SN_10-1
		#END_ControlMeasure.
	#END_LidarControlPoint.

	LidarControlPoint:
		id: testLidarControlPoint2
		latitude:  52
		longitude: 102
		radius:    1000
		range:     75
		sigmaRange:0.1
		time:      2018-01-31T14:07:00.1233999
		matrix:      [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549))
		ControlMeasure: 
			line:   0
			sample: 2
			SN:     SN_2-0
		#END_ControlMeasure.
		ControlMeasure: 
			line:   1
			sample: 2
			SN:     SN_2-1
		#END_ControlMeasure.
	#END_LidarControlPoint.

	LidarControlPoint:
		id: testLidarControlPoint6
		latitude:  56
		longitude: 106
		radius:    1000
		range:     115
		sigmaRange:0.1
		time:      2018-01-31T14:11:00.1233999
		matrix:      [3,3]((0.028657,0,0),(0,0.0311981,0),(0,0,38.4549))
		ControlMeasure: 
			line:   0
			sample: 6
			SN:     SN_6-0
		#END_ControlMeasure.
		ControlMeasure: 
			line:   1
			sample: 6
			SN:     SN_6-1
		#END_ControlMeasure.
	#END_LidarControlPoint.


+37 −11
Original line number Diff line number Diff line
@@ -14,8 +14,11 @@
#include "Preference.h"
#include "SurfacePoint.h"

#include "boost/numeric/ublas/symmetric.hpp"

using namespace std;
using namespace Isis;
using namespace boost::numeric::ublas;

void print(const LidarData &lidarData);

@@ -30,9 +33,9 @@ int main(int argc, char *argv[]) {
  // Set up our unit test preferences
  Preference::Preferences(true);

  LidarData data;
  FileName csvFile("RDR_98E100E_60N62NPointPerRow_csv_table-original.csv");
  data.readCsv(csvFile);
  // LidarData data;
  // FileName csvFile("RDR_98E100E_60N62NPointPerRow_csv_table-original.csv");
  // data.readCsv(csvFile);

  // Test LidarData()
  cout << "Testing default constructor... " << endl;
@@ -40,9 +43,9 @@ int main(int argc, char *argv[]) {
  cout << "\tnumber of points: " << defaultData.points().size() << endl;
  cout << endl;

  // Test LidarData(FileName)
  cout << "Testing LidarData(FileName)... " << endl;
  cout << endl;
  // // Test LidarData(FileName)
  // cout << "Testing LidarData(FileName)... " << endl;
  // cout << endl;

  // Test insert(QSharedPointer<LidarControlPoint>)
  cout << "Testing insert(QSharedPointer<LidarControlPoint>)... " << endl;
@@ -50,30 +53,50 @@ int main(int argc, char *argv[]) {
  double range = 55.0;
  double sigmaRange = 0.1;
  QSharedPointer<LidarControlPoint> lcp =
      QSharedPointer<LidarControlPoint>(new LidarControlPoint(time, range, sigmaRange));
      QSharedPointer<LidarControlPoint>(new LidarControlPoint());
  lcp->setTime(time);
  iTime check = lcp->time();
  lcp->setRange(range);
  lcp->setSigmaRange(sigmaRange);
  lcp->SetId("testLidarControlPoint");
  defaultData.insert(lcp);
  cout << "\tnumber of points: " << defaultData.points().size() << endl;
  cout << "\tname of point:    " << defaultData.points().first()->GetId() << endl;
  cout << "\ttime of point:    " << defaultData.points().first()->time().UTC() << endl;
  cout << endl;

  // Test write() JSON format
  cout << "Testing write(FileName)... " << endl;
  LidarData mockData;
  double lat, lon, rad;
  lat = 100.0;
  lon = 50.0;
  lat = 50.0;
  lon = 100.0;
  rad = 1000.0;
  boost::numeric::ublas::symmetric_matrix<double, upper> aprioriMatrix(3);
  aprioriMatrix.clear();
  aprioriMatrix(0, 0) = 0.028656965032217;
  aprioriMatrix(1, 1) = 0.031198128120272;
  aprioriMatrix(2, 2) = 38.454887335682053718134171237789;
                                // Angle(1.64192315,Angle::Degrees),
                                // Angle(1.78752107, Angle::Degrees),
                                // Distance(38.454887335682053718134171237789, Distance::Meters));
  
  for (int i = 1; i < 11; i++) {
    time += 60.0;
    range += 10.0;
    lcp = QSharedPointer<LidarControlPoint>(new LidarControlPoint(time, range, sigmaRange));
    lcp = QSharedPointer<LidarControlPoint>(new LidarControlPoint());
    lcp->setTime(time);
    lcp->setRange(range);
    lcp->setSigmaRange(sigmaRange);
    lcp->SetId("testLidarControlPoint" + QString::number(i));
    lat += 1.0;
    lon += 1.0;
    SurfacePoint sp(Latitude(lat, Angle::Units::Degrees),
                    Longitude(lon, Angle::Units::Degrees),
                    Distance(rad, Distance::Units::Kilometers));
    sp.SetRadii(Distance(1000.0, Distance::Meters), Distance(1000.0, Distance::Meters),
                Distance(1000.0, Distance::Meters));
    sp.SetSphericalMatrix(aprioriMatrix);
    lcp->SetAprioriSurfacePoint(sp);
    for (int j = 0; j < 2; j++) {
      ControlMeasure *measure = new ControlMeasure();
@@ -128,12 +151,15 @@ void print(const LidarData &lidarData) {
    lat = sp.GetLatitude().planetocentric(Angle::Units::Degrees);
    lon = sp.GetLongitude().positiveEast(Angle::Units::Degrees);
    rad = sp.GetLocalRadius().kilometers();
    symmetric_matrix<double, upper> aprioriMatrix = sp.GetSphericalMatrix();
    std::cout << "\t\tlatitude:  " << lat << std::endl;
    std::cout << "\t\tlongitude: " << lon << std::endl;
    std::cout << "\t\tradius:    " << rad << std::endl;
    std::cout << "\t\trange:     " << point->range() << std::endl;
    std::cout << "\t\tsigmaRange:" << point->sigmaRange() << std::endl;
    std::cout << "\t\ttime:      " << point->time().Et() << std::endl;
    // std::cout << "\t\ttime:      " << point->time().Et() << std::endl;
    std::cout << "\t\ttime:      " << point->time().UTC() << std::endl;
    std::cout << "\t\tmatrix:      " << aprioriMatrix << std::endl;
    QList<ControlMeasure *> measures = point->getMeasures();
    foreach (ControlMeasure *measure, measures) {
      std::cout << "\t\tControlMeasure: " << std::endl;
+2 −0
Original line number Diff line number Diff line
@@ -8,3 +8,5 @@ Testing Setters and Getters
Set the range
Set the sigma range
Set the time
Testing addSimultaneous and getter
Serial number for simultaneous image added successfully
+16 −1
Original line number Diff line number Diff line
@@ -11,7 +11,8 @@ int main() {
  
  cout << "LidarControlPoint Unit Test" << endl;
  
  LidarControlPoint lcp(iTime(13.00), 10, 12);
  // LidarControlPoint lcp(iTime(13.00), 10, 12);
  LidarControlPoint lcp;
  
  
  cout << "Testing EditLocking" << endl;
@@ -77,4 +78,18 @@ int main() {
  else {
    cout << "Error: Could not set the time." << endl;
  }

  cout << "Testing addSimultaneous and getter" << endl;
  QString newSerial = "LRO/1/286265995:36824/NACL";
  if (lcp.addSimultaneous(newSerial) == ControlPoint::Status::Success) {
    cout << "Serial number for simultaneous image added successfully" << endl;
    QList < QString > simultaneousList = lcp.snSimultaneous();
    if (simultaneousList[0] != "LRO/1/286265995:36824/NACL") {
      cout << "Error:  Incorrect serial number added to list:  " <<
        simultaneousList[0] << endl;
    }
  }
  else {
      cout << "Add to simultaneous image list failed!" << endl;
  }
}
Loading