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, KKJ> > testData;
15 CoordinateSystemTransformerTest() {
16 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.2528, 25.02051), KKJ(6682815, 2556686));
17 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.18713, 24.832), KKJ(6675352, 2546340));
18 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.27414, 25.04465), KKJ(6685213, 2557985));
19 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.2507, 25.01767), KKJ(6682578, 2556532));
20 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.2902, 24.44804), KKJ(6686629, 2524959));
21 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.35033, 25.06718), KKJ(6693721, 2559094));
22 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.25471, 25.02373), KKJ(6683030, 2556861));
23 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.25417, 25.0242), KKJ(6682971, 2556888));
24 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.39737, 25.08981), KKJ(6698983, 2560257));
25 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.28923, 25.12709), KKJ(6686969, 2562518));
26 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.1727, 24.65643), KKJ(6673635, 2536615));
27 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.35133, 25.06764), KKJ(6693833, 2559118));
28 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.34949, 25.06874), KKJ(6693629, 2559182));
29 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.25119, 25.02518), KKJ(6682640, 2556947));
30 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.25196, 25.02294), KKJ(6682723, 2556822));
31 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.34929, 25.06705), KKJ(6693605, 2559089));
32 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.18855, 24.83393), KKJ(6675512, 2546445));
33 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.25091, 25.02547), KKJ(6682609, 2556964));
34 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.25321, 25.0215), KKJ(6682861, 2556740));
35 testData << qMakePair(QTM_NAMESPACE::QGeoCoordinate(60.35291, 25.06559), KKJ(6694007, 2559002));
39 TEST_F(CoordinateSystemTransformerTest, WGS84CoordinatesToKKJCoordinates)
41 QListIterator<QPair<QTM_NAMESPACE::QGeoCoordinate, KKJ> > it(testData);
42 while (it.hasNext()) {
43 const QPair<QTM_NAMESPACE::QGeoCoordinate, KKJ> &datum = it.next();
44 KKJ result = CoordinateSystemTransformer::transformToKKJ(datum.first);
45 KKJ 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, KKJ> > it(testData);
57 while (it.hasNext()) {
58 const QPair<QTM_NAMESPACE::QGeoCoordinate, KKJ> &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();