1 #include "coordinatesystemtransformer.h"
3 #include <gmock/gmock.h>
4 #include <gtest/gtest.h>
6 #include "stlhelpers.h"
10 class CoordinateSystemTransformerTest : public ::testing::Test
13 QList<QPair<QTM_NAMESPACE::QGeoCoordinate, KKJGridCoordinate> > testData;
15 CoordinateSystemTransformerTest() {
16 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.2528, 25.02051), KKJGridCoordinate(6682815, 2556686));
17 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.18713, 24.832), KKJGridCoordinate(6675352, 2546340));
18 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.27414, 25.04465), KKJGridCoordinate(6685213, 2557985));
19 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.2507, 25.01767), KKJGridCoordinate(6682578, 2556532));
20 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.2902, 24.44804), KKJGridCoordinate(6686629, 2524959));
21 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.35033, 25.06718), KKJGridCoordinate(6693721, 2559094));
22 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.25471, 25.02373), KKJGridCoordinate(6683030, 2556861));
23 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.25417, 25.0242), KKJGridCoordinate(6682971, 2556888));
24 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.39737, 25.08981), KKJGridCoordinate(6698983, 2560257));
25 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.28923, 25.12709), KKJGridCoordinate(6686969, 2562518));
26 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.1727, 24.65643), KKJGridCoordinate(6673635, 2536615));
27 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.35133, 25.06764), KKJGridCoordinate(6693833, 2559118));
28 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.34949, 25.06874), KKJGridCoordinate(6693629, 2559182));
29 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.25119, 25.02518), KKJGridCoordinate(6682640, 2556947));
30 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.25196, 25.02294), KKJGridCoordinate(6682723, 2556822));
31 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.34929, 25.06705), KKJGridCoordinate(6693605, 2559089));
32 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.18855, 24.83393), KKJGridCoordinate(6675512, 2546445));
33 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.25091, 25.02547), KKJGridCoordinate(6682609, 2556964));
34 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.25321, 25.0215), KKJGridCoordinate(6682861, 2556740));
35 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.35291, 25.06559), KKJGridCoordinate(6694007, 2559002));
39 TEST_F(CoordinateSystemTransformerTest, WGS84CoordinatesToKKJCoordinates)
41 QListIterator<QPair<QTM_NAMESPACE::QGeoCoordinate, KKJGridCoordinate> > it(testData);
42 while (it.hasNext()) {
43 const QPair<QTM_NAMESPACE::QGeoCoordinate, KKJGridCoordinate> &datum = it.next();
44 KKJGridCoordinate result = CoordinateSystemTransformer::transformToKKJ(datum.first);
45 KKJGridCoordinate expected = datum.second;
46 // Allow one unit difference from the expected
47 int northDiff = abs((long)expected.northing() - (long)result.northing());
48 int eastDiff = abs((long)expected.easting() - (long)result.easting());
49 EXPECT_LE(northDiff, 1);
50 EXPECT_LE(eastDiff, 1);
54 TEST_F(CoordinateSystemTransformerTest, KKJCoordinatesToWGS84Coordinates)
56 QListIterator<QPair<QTM_NAMESPACE::QGeoCoordinate, KKJGridCoordinate> > it(testData);
57 while (it.hasNext()) {
58 const QPair<QTM_NAMESPACE::QGeoCoordinate, KKJGridCoordinate> &datum = it.next();
59 QTM_NAMESPACE::QGeoCoordinate result = CoordinateSystemTransformer::transformToWGS84(datum.second);
60 QTM_NAMESPACE::QGeoCoordinate expected = datum.first;
61 // Allow small difference from the expected
62 double latitudeDiff = fabs(expected.latitude() - result.latitude());
63 double longitudeDiff = fabs(expected.longitude() - result.longitude());
64 EXPECT_LE(latitudeDiff, 0.00001);
65 EXPECT_LE(longitudeDiff, 0.00001);
69 int main(int argc, char *argv[])
71 ::testing::InitGoogleMock(&argc, argv);
72 return RUN_ALL_TESTS();