Commit 0aba9828 authored by paarongiroux's avatar paarongiroux Committed by Kelvin Rodriguez
Browse files

Added gtests for Displacement.cpp, removed Displacement unitTest and truthfile. (#3209)

* Added BasisFunctionTests.cpp. Removed BasisFunction unit test and truthfile.

* changed expectedOutput values for some of the tests

* Made tests for Displacement.cpp using gtest. removed Displacement unitTest and truthfile.
parent e53a8c26
Loading
Loading
Loading
Loading
+0 −85
Original line number Diff line number Diff line
----- Testing Constructors -----

Empty constructor
-1.7976931348623e+308 meters
Constructor given a value in meters
1500.5 meters
Constructor given a value in kilometers
1500500 meters
Copy constructor
1500.5 meters

----- Testing Accessors -----

Meters (redundant)
1 meters
Kilometers
1 kilometers

----- Testing Operators -----


Displacement 1: 1 meters
Displacement 2: 1 meters
Displacement 1 > Displacement 2 ? 0
Displacement 1 >= Displacement 2 ? 1
Displacement 1 == Displacement 2 ? 1
Displacement 1 <= Displacement 2 ? 1
Displacement 1 < Displacement 2 ? 0
Displacement 1 + Displacement 2 ? 2 meters
Displacement 1 - Displacement 2 ? 0 meters
Displacement 1 = Displacement 2... Displacement 1 = 1 meters

Displacement 1: 1 meters
Displacement 2: 10 meters
Displacement 1 > Displacement 2 ? 0
Displacement 1 >= Displacement 2 ? 0
Displacement 1 == Displacement 2 ? 0
Displacement 1 <= Displacement 2 ? 1
Displacement 1 < Displacement 2 ? 1
Displacement 1 + Displacement 2 ? 11 meters
Displacement 1 = Displacement 2... Displacement 1 = 10 meters

Displacement 1: 10 meters
Displacement 2: 1 meters
Displacement 1 > Displacement 2 ? 1
Displacement 1 >= Displacement 2 ? 1
Displacement 1 == Displacement 2 ? 0
Displacement 1 <= Displacement 2 ? 0
Displacement 1 < Displacement 2 ? 0
Displacement 1 + Displacement 2 ? 11 meters
Displacement 1 - Displacement 2 ? 9 meters
Displacement 1 = Displacement 2... Displacement 1 = 1 meters

Displacement 1: 1000 meters
Displacement 2: 1000 meters
Displacement 1 > Displacement 2 ? 0
Displacement 1 >= Displacement 2 ? 1
Displacement 1 == Displacement 2 ? 1
Displacement 1 <= Displacement 2 ? 1
Displacement 1 < Displacement 2 ? 0
Displacement 1 + Displacement 2 ? 2000 meters
Displacement 1 - Displacement 2 ? 0 meters
Displacement 1 = Displacement 2... Displacement 1 = 1000 meters
Displacement 1 += Displacement 2... Displacement 1 = 2000 meters
Displacement 1 -= Displacement 2... Displacement 1 = 1000 meters

Displacement 1: 10 meters
Displacement 2: 10 meters
Displacement 1: 10 pixels
Displacement 2: 100 pixels
Displacement 1 > Displacement 2 ? 0
Displacement 1 >= Displacement 2 ? 1
Displacement 1 == Displacement 2 ? 1
Displacement 1 <= Displacement 2 ? 1
Displacement 1 < Displacement 2 ? 0
Displacement 1 + Displacement 2 ? 20 meters
Displacement 1 - Displacement 2 ? 0 meters
Displacement 1 = Displacement 2... Displacement 1 = 10 meters

----- Testing Error Checking -----

**PROGRAMMER ERROR** Displacement has not been initialized, you must initialize it first before comparing with another displacement using [>].
**PROGRAMMER ERROR** Displacement has not been initialized, you must initialize it first before comparing with another displacement using [>].
**PROGRAMMER ERROR** Displacement has not been initialized, you must initialize it first before comparing with another displacement using [<].
**PROGRAMMER ERROR** Displacement has not been initialized, you must initialize it first before comparing with another displacement using [<].
+0 −285
Original line number Diff line number Diff line
#include "Displacement.h"

#include <iostream>

#include "IException.h"
#include "Preference.h"

using std::cout;
using std::endl;

using namespace Isis;

int main(int argc, char *argv[]) {
  Preference::Preferences(true);

  cout.precision(14);

  cout << "----- Testing Constructors -----" << endl << endl;

  try {
    cout << "Empty constructor" << endl;
    Displacement disp;
    cout << disp.meters() << " meters" << endl;
  }
  catch(IException &e) {
    e.print();
  }

  try {
    cout << "Constructor given a value in meters" << endl;
    Displacement disp(1500.5, Displacement::Meters);
    cout << disp.meters() << " meters" << endl;
  }
  catch(IException &e) {
    e.print();
  }

  try {
    cout << "Constructor given a value in kilometers" << endl;
    Displacement disp(1500.5, Displacement::Kilometers);
    cout << disp.meters() << " meters" << endl;
  }
  catch(IException &e) {
    e.print();
  }

  try {
    cout << "Copy constructor" << endl;
    Displacement disp(1500.5, Displacement::Meters);
    Displacement copiedDisp(disp);
    cout << copiedDisp.meters() << " meters" << endl;
  }
  catch(IException &e) {
    e.print();
  }

  cout << endl << "----- Testing Accessors -----" << endl << endl;

  try {
    cout << "Meters (redundant)" << endl;
    Displacement disp(1, Displacement::Meters);
    cout << disp.meters() << " meters" << endl;
  }
  catch(IException &e) {
    e.print();
  }

  try {
    cout << "Kilometers" << endl;
    Displacement disp(1, Displacement::Kilometers);
    cout << disp.kilometers() << " kilometers" << endl;
  }
  catch(IException &e) {
    e.print();
  }

  cout << endl << "----- Testing Operators -----" << endl << endl;

  try {
    Displacement disp1(1, Displacement::Meters);
    Displacement disp2(1, Displacement::Meters);
    cout << endl;
    cout << "Displacement 1: " << disp1.meters() << " meters" << endl;
    cout << "Displacement 2: " << disp2.meters() << " meters" << endl;

    cout << "Displacement 1 > Displacement 2 ? " << (disp1 > disp2) << endl;
    cout << "Displacement 1 >= Displacement 2 ? " << (disp1 >= disp2) << endl;
    cout << "Displacement 1 == Displacement 2 ? " << (disp1 == disp2) << endl;
    cout << "Displacement 1 <= Displacement 2 ? " << (disp1 <= disp2) << endl;
    cout << "Displacement 1 < Displacement 2 ? " << (disp1 < disp2) << endl;
    cout << "Displacement 1 + Displacement 2 ? " <<
        (disp1 + disp2).meters() << " meters" << endl;
    cout << "Displacement 1 - Displacement 2 ? " <<
        (disp1 - disp2).meters() << " meters" << endl;

    disp1 = disp2;
    cout << "Displacement 1 = Displacement 2... Displacement 1 = " <<
        disp1.meters() << " meters" << endl;
  }
  catch(IException &e) {
    e.print();
  }

  try {
    Displacement disp1(1, Displacement::Meters);
    Displacement disp2(10, Displacement::Meters);
    cout << endl;
    cout << "Displacement 1: " << disp1.meters() << " meters" << endl;
    cout << "Displacement 2: " << disp2.meters() << " meters" << endl;

    cout << "Displacement 1 > Displacement 2 ? " << (disp1 > disp2) << endl;
    cout << "Displacement 1 >= Displacement 2 ? " << (disp1 >= disp2) << endl;
    cout << "Displacement 1 == Displacement 2 ? " << (disp1 == disp2) << endl;
    cout << "Displacement 1 <= Displacement 2 ? " << (disp1 <= disp2) << endl;
    cout << "Displacement 1 < Displacement 2 ? " << (disp1 < disp2) << endl;
    cout << "Displacement 1 + Displacement 2 ? " << (disp1 + disp2).meters() <<
        " meters" << endl;

    // This should throw an exception and never cout
    try {
      (disp1 - disp2).meters();
    }
    catch(IException &e) {
      e.print();
    }

    disp1 = disp2;
    cout << "Displacement 1 = Displacement 2... Displacement 1 = " << disp1.meters() <<
        " meters" << endl;
  }
  catch(IException &e) {
    e.print();
  }

  try {
    Displacement disp1(10, Displacement::Meters);
    Displacement disp2(1, Displacement::Meters);
    cout << endl;
    cout << "Displacement 1: " << disp1.meters() << " meters" << endl;
    cout << "Displacement 2: " << disp2.meters() << " meters" << endl;

    cout << "Displacement 1 > Displacement 2 ? " << (disp1 > disp2) << endl;
    cout << "Displacement 1 >= Displacement 2 ? " << (disp1 >= disp2) << endl;
    cout << "Displacement 1 == Displacement 2 ? " << (disp1 == disp2) << endl;
    cout << "Displacement 1 <= Displacement 2 ? " << (disp1 <= disp2) << endl;
    cout << "Displacement 1 < Displacement 2 ? " << (disp1 < disp2) << endl;
    cout << "Displacement 1 + Displacement 2 ? " << (disp1 + disp2).meters() <<
        " meters" << endl;
    cout << "Displacement 1 - Displacement 2 ? " << (disp1 - disp2).meters() <<
        " meters" << endl;

    disp1 = disp2;
    cout << "Displacement 1 = Displacement 2... Displacement 1 = " << disp1.meters() <<
        " meters" << endl;
  }
  catch(IException &e) {
    e.print();
  }

  try {
    Displacement disp1(1000, Displacement::Meters);
    Displacement disp2(1, Displacement::Kilometers);
    cout << endl;
    cout << "Displacement 1: " << disp1.meters() << " meters" << endl;
    cout << "Displacement 2: " << disp2.meters() << " meters" << endl;

    cout << "Displacement 1 > Displacement 2 ? " << (disp1 > disp2) << endl;
    cout << "Displacement 1 >= Displacement 2 ? " << (disp1 >= disp2) << endl;
    cout << "Displacement 1 == Displacement 2 ? " << (disp1 == disp2) << endl;
    cout << "Displacement 1 <= Displacement 2 ? " << (disp1 <= disp2) << endl;
    cout << "Displacement 1 < Displacement 2 ? " << (disp1 < disp2) << endl;
    cout << "Displacement 1 + Displacement 2 ? " << (disp1 + disp2).meters() <<
        " meters" << endl;
    cout << "Displacement 1 - Displacement 2 ? " << (disp1 - disp2).meters() <<
        " meters" << endl;

    disp1 = disp2;
    cout << "Displacement 1 = Displacement 2... Displacement 1 = " << disp1.meters() <<
        " meters" << endl;
    disp1 += disp2;
    cout << "Displacement 1 += Displacement 2... Displacement 1 = " << disp1.meters() <<
        " meters" << endl;
    disp1 -= disp2;
    cout << "Displacement 1 -= Displacement 2... Displacement 1 = " << disp1.meters() <<
        " meters" << endl;
  }
  catch(IException &e) {
    e.print();
  }

  try {
    Displacement disp1(10, Displacement::Pixels);
    Displacement disp2(100, 10.0);
    cout << endl;
    cout << "Displacement 1: " << disp1.meters() << " meters" << endl;
    cout << "Displacement 2: " << disp2.meters() << " meters" << endl;
    cout << "Displacement 1: " << disp1.pixels() << " pixels" << endl;
    cout << "Displacement 2: " << disp2.pixels(10.0) << " pixels" << endl;

    cout << "Displacement 1 > Displacement 2 ? " << (disp1 > disp2) << endl;
    cout << "Displacement 1 >= Displacement 2 ? " << (disp1 >= disp2) << endl;
    cout << "Displacement 1 == Displacement 2 ? " << (disp1 == disp2) << endl;
    cout << "Displacement 1 <= Displacement 2 ? " << (disp1 <= disp2) << endl;
    cout << "Displacement 1 < Displacement 2 ? " << (disp1 < disp2) << endl;
    cout << "Displacement 1 + Displacement 2 ? " << (disp1 + disp2).meters() <<
        " meters" << endl;
    cout << "Displacement 1 - Displacement 2 ? " << (disp1 - disp2).meters() <<
        " meters" << endl;

    disp1 = disp2;
    cout << "Displacement 1 = Displacement 2... Displacement 1 = " << disp1.meters() <<
        " meters" << endl;
  }
  catch(IException &e) {
    e.print();
  }

  cout << endl << "----- Testing Error Checking -----" << endl << endl;

  try {
    Displacement disp(-1, Displacement::Meters);
  }
  catch(IException &e) {
    e.print();
  }

  try {
    Displacement disp(-1, Displacement::Kilometers);
  }
  catch(IException &e) {
    e.print();
  }

  try {
    Displacement disp(1, Displacement::Kilometers);
    disp.setMeters(-1);
  }
  catch(IException &e) {
    e.print();
  }

  try {
    Displacement disp(1, Displacement::Kilometers);
    disp.setMeters(-1);
  }
  catch(IException &e) {
    e.print();
  }

  try {
    Displacement disp(1, Displacement::Kilometers);
    disp.setKilometers(-1);
  }
  catch(IException &e) {
    e.print();
  }

  try {
    cout << (Displacement() > Displacement()) << endl;
  }
  catch(IException &e) {
    e.print();
  }

  try {
    cout << (Displacement() > Displacement()) << endl;
  }
  catch(IException &e) {
    e.print();
  }

  try {
    cout << (Displacement() < Displacement()) << endl;
  }
  catch(IException &e) {
    e.print();
  }

  try {
    cout << (Displacement() < Displacement()) << endl;
  }
  catch(IException &e) {
    e.print();
  }
}
+202 −0
Original line number Diff line number Diff line
#include <gtest/gtest.h>
#include "Displacement.h"
#include "IException.h"

TEST(Displacement, DefaultConstructor)
{
  Isis::Displacement disp;
  EXPECT_FALSE(disp.isValid());
}

TEST(Displacement, MeterConstructor)
{
  Isis::Displacement disp(1200.2, Isis::Displacement::Meters);
  EXPECT_TRUE(disp.isValid());
  EXPECT_DOUBLE_EQ(disp.meters(), 1200.2);
  EXPECT_DOUBLE_EQ(disp.kilometers(), 1.2002);
  EXPECT_DOUBLE_EQ(disp.pixels(100), 120020);
}

TEST(Displacement, KilometerConstructor)
{
  Isis::Displacement disp(12.805, Isis::Displacement::Kilometers);
  EXPECT_TRUE(disp.isValid());
  EXPECT_DOUBLE_EQ(disp.kilometers(), 12.805);
  EXPECT_DOUBLE_EQ(disp.meters(), 12805);
  EXPECT_DOUBLE_EQ(disp.pixels(15.5), 198477.5);
}

TEST(Displacement, PixelConstructor)
{
  Isis::Displacement disp(14, Isis::Displacement::Pixels);
  EXPECT_TRUE(disp.isValid());
  EXPECT_DOUBLE_EQ(disp.pixels(), 14);
  EXPECT_DOUBLE_EQ(disp.meters(), 14);
  EXPECT_DOUBLE_EQ(disp.kilometers(), 0.014);
}

TEST(Displacement, pixelsPerMeterConstructor)
{
  Isis::Displacement disp(100, 10);
  EXPECT_TRUE(disp.isValid());
  EXPECT_DOUBLE_EQ(disp.pixels(10), 100);
  EXPECT_DOUBLE_EQ(disp.meters(), 10);
  EXPECT_DOUBLE_EQ(disp.kilometers(), 0.01);
}

TEST(Displacement, CopyConstructor)
{
  Isis::Displacement disp1(1, Isis::Displacement::Meters);
  Isis::Displacement disp2(disp1);
  EXPECT_TRUE(disp2.isValid());
  EXPECT_DOUBLE_EQ(disp1.meters(), disp2.meters());
  EXPECT_DOUBLE_EQ(disp1.kilometers(), disp2.kilometers());
  EXPECT_DOUBLE_EQ(disp1.pixels(50), disp2.pixels(50));
}

TEST(Displacement, Setters)
{
  Isis::Displacement disp(100, Isis::Displacement::Meters);
  disp.setKilometers(100);
  EXPECT_DOUBLE_EQ(disp.kilometers(), 100);
  EXPECT_DOUBLE_EQ(disp.meters(), 100000);
  EXPECT_DOUBLE_EQ(disp.pixels(), 100000);
  disp.setPixels(100);
  EXPECT_DOUBLE_EQ(disp.kilometers(), 0.1);
  EXPECT_DOUBLE_EQ(disp.meters(), 100);
  EXPECT_DOUBLE_EQ(disp.pixels(), 100);
  disp.setMeters(100);
  EXPECT_DOUBLE_EQ(disp.kilometers(), 0.1);
  EXPECT_DOUBLE_EQ(disp.meters(), 100);
  EXPECT_DOUBLE_EQ(disp.pixels(), 100);
}

TEST(Displacement, ArithmeticOperators)
{
  Isis::Displacement disp1(150.3, Isis::Displacement::Meters);
  Isis::Displacement disp2(49.7, Isis::Displacement::Meters);
  Isis::Displacement result;
  result = disp1 + disp2;
  EXPECT_DOUBLE_EQ(result.meters(), 200);
  result = disp1 - disp2;
  EXPECT_DOUBLE_EQ(result.meters(), 100.6);
  result = disp2 - disp1;
  EXPECT_DOUBLE_EQ(result.meters(), -100.6);
  result = disp1 * 5;
  EXPECT_DOUBLE_EQ(result.meters(), 751.5);
  result = disp1 / 50.1;
  EXPECT_DOUBLE_EQ(result.meters(), 3);
  result += disp1;
  EXPECT_DOUBLE_EQ(result.meters(), 153.3);
  result -= disp2;
  EXPECT_DOUBLE_EQ(result.meters(), 103.6);
  result *= 2;
  EXPECT_DOUBLE_EQ(result.meters(), 207.2);
  result /= 2;
  EXPECT_DOUBLE_EQ(result.meters(), 103.6);
}


TEST(Displacement, UninitializedArithmetic)
{
  Isis::Displacement disp1;
  Isis::Displacement disp2;
  Isis::Displacement result = disp1 + disp2;
  EXPECT_FALSE(result.isValid());
  result = disp1 - disp2;
  EXPECT_FALSE(result.isValid());
  result = disp1 * 5;
  EXPECT_FALSE(result.isValid());
  result = disp1 / 3;
  EXPECT_FALSE(result.isValid());
  result += disp1;
  EXPECT_FALSE(result.isValid());
  result -= disp1;
  EXPECT_FALSE(result.isValid());
  result *= 2;
  EXPECT_FALSE(result.isValid());
  result /= 4;
  EXPECT_FALSE(result.isValid());
  disp2.setMeters(100);
  result = disp1 + disp2;
  EXPECT_FALSE(result.isValid());
  result = disp2 + disp1;
  EXPECT_FALSE(result.isValid());
  result = disp1 - disp2;
  EXPECT_FALSE(result.isValid());
  result += disp2;
  EXPECT_FALSE(result.isValid());
  result -= disp2;
  EXPECT_FALSE(result.isValid());
}

TEST(Displacement, EqualValuesComparisonOperators)
{
  Isis::Displacement disp1(100, Isis::Displacement::Meters);
  Isis::Displacement disp2(0.1, Isis::Displacement::Kilometers);
  EXPECT_TRUE(disp1 == disp2);
  EXPECT_FALSE(disp1 != disp2);
  EXPECT_TRUE(disp1 >= disp2);
  EXPECT_TRUE(disp1 <= disp2);
  EXPECT_FALSE(disp1 > disp2);
  EXPECT_FALSE(disp1 < disp2);
}

TEST(Displacement, InequalValuesComparisonOperators)
{
  Isis::Displacement disp1(10, Isis::Displacement::Meters);
  Isis::Displacement disp2(100, Isis::Displacement::Meters);
  EXPECT_FALSE(disp1 == disp2);
  EXPECT_TRUE(disp1 != disp2);
  EXPECT_FALSE(disp1 >= disp2);
  EXPECT_TRUE(disp1 <= disp2);
  EXPECT_FALSE(disp1 > disp2);
  EXPECT_TRUE(disp1 < disp2);
}

TEST(Displacement, InequalPixelsComparisonOperators)
{
  Isis::Displacement disp1(100, 10);
  Isis::Displacement disp2(10, Isis::Displacement::Meters);
  EXPECT_TRUE(disp1 == disp2);
  EXPECT_FALSE(disp1 != disp2);
  EXPECT_TRUE(disp1 >= disp2);
  EXPECT_TRUE(disp1 <= disp2);
  EXPECT_FALSE(disp1 > disp2);
  EXPECT_FALSE(disp1 < disp2);
}

TEST(Displacement, UninitializedComparison)
{
  try
  {
    Isis::Displacement() > Isis::Displacement();
  }
  catch(Isis::IException &e)
  {
    EXPECT_TRUE(e.toString().toLatin1().contains("Displacement has not been"
     " initialized")) << e.toString().toStdString();
  }
  catch(...)
  {
      FAIL() << "Expected an IExcpetion with message \""
      " Displacement has not been initialized, you must initialize it first"
      " before comparing with another displacement using [>].\"";
  }

  try
  {
    Isis::Displacement() < Isis::Displacement();
  }
  catch(Isis::IException &e)
  {
    EXPECT_TRUE(e.toString().toLatin1().contains("Displacement has not been"
     " initialized")) << e.toString().toStdString();
  }
  catch(...)
  {
      FAIL() << "Expected an IException with message \""
      " Displacement has not been initialized, you must initialize it first"
      " before comparing with another displacement using [<].\"";
  }
}