void constructors();
void conversion();
void conversion_data();
+ void distanceTo();
+ void distanceTo_data();
void isNullAndIsValid();
void isValid();
void isValid_data();
void settersAndGetters();
void streamOperators();
+ void subtractOperator();
};
// for formatting the output of double valuest into the test log
- ONE_SCENE_PIXEL_WIDTH_IN_DEGREES;
QTest::newRow("bottom right") << SceneCoordinate(OSM_MAP_MAX_PIXEL_X, OSM_MAP_MAX_PIXEL_Y)
- << GeoCoordinate(OSM_MIN_LATITUDE, LAST_SCENE_HORIZONTAL_PIXEL_LONGITUDE);
+ << GeoCoordinate(OSM_MIN_LATITUDE,
+ LAST_SCENE_HORIZONTAL_PIXEL_LONGITUDE);
}
+void TestGeoCoordinate::distanceTo()
+{
+ QFETCH(GeoCoordinate, from);
+ QFETCH(GeoCoordinate, to);
+ QFETCH(qreal, expectedDistance);
+
+ QCOMPARE(from.distanceTo(to), expectedDistance);
+}
+
+void TestGeoCoordinate::distanceTo_data()
+{
+ const qreal EARTH_RADIUS = 6371010; // in meters
+
+ QTest::addColumn<GeoCoordinate>("from");
+ QTest::addColumn<GeoCoordinate>("to");
+ QTest::addColumn<qreal>("expectedDistance");
+
+ QTest::newRow("longitude") << GeoCoordinate(0, -90)
+ << GeoCoordinate(0, 90)
+ << M_PI * 2 * EARTH_RADIUS / 2;
+
+ QTest::newRow("latitude") << GeoCoordinate(-45, 0)
+ << GeoCoordinate(45, 0)
+ << M_PI * 2 * EARTH_RADIUS / 4;
+
+ QTest::newRow("both") << GeoCoordinate(-25, -135)
+ << GeoCoordinate(25, 45)
+ << M_PI * 2 * EARTH_RADIUS / 2;
+}
+
+
void TestGeoCoordinate::isNullAndIsValid()
{
// coordinate created with default constructor
QCOMPARE(anotherInverted.longitude(), originalInverted.longitude());
}
+void TestGeoCoordinate::subtractOperator()
+{
+ // test operator-
+ GeoCoordinate first(100, 50);
+ GeoCoordinate second(45, 15);
+
+ GeoCoordinate result = first - second;
+
+ QCOMPARE(result.latitude(), 55.0);
+ QCOMPARE(result.longitude(), 35.0);
+}
+
QTEST_APPLESS_MAIN(TestGeoCoordinate);
#include "testgeocoordinate.moc"