File: TileIdTest.cpp

package info (click to toggle)
marble 4%3A25.08.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 159,996 kB
  • sloc: cpp: 191,890; xml: 39,908; ansic: 7,204; python: 2,190; sh: 1,187; makefile: 235; perl: 218; ruby: 97; java: 66
file content (86 lines) | stat: -rw-r--r-- 3,073 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
// SPDX-License-Identifier: LGPL-2.1-or-later
//
// SPDX-FileCopyrightText: 2012 Thibaut Gridel <tgridel@free.fr>

#include "TileId.h"
#include "GeoDataCoordinates.h"
#include "TestUtils.h"
#include <QMetaType>

namespace Marble
{

class TileIdTest : public QObject
{
    Q_OBJECT

private Q_SLOTS:
    void testFromCoordinates_data();
    void testFromCoordinates();
};

void TileIdTest::testFromCoordinates_data()
{
    QTest::addColumn<qreal>("lon");
    QTest::addColumn<qreal>("lat");
    QTest::addColumn<int>("zoom");
    QTest::addColumn<int>("x");
    QTest::addColumn<int>("y");

    for (int zoom = 1; zoom < 19; ++zoom) {
        int last = (2 << (zoom - 1)) - 1;
        int quarter = qRound(last / 4.0);
        int mid = qRound(last / 2.0);
        int three = mid + quarter;

        addRow() << qreal(-180.0) << qreal(0.0) << zoom << 0 << mid;
        addRow() << qreal(-90.0) << qreal(0.0) << zoom << quarter << mid;
        addRow() << qreal(0.0) << qreal(0.0) << zoom << mid << mid;
        addRow() << qreal(90.0) << qreal(0.0) << zoom << three << mid;
        addRow() << qreal(180.0) << qreal(0.0) << zoom << last << mid;

        addRow() << qreal(-180.0) << qreal(-89.9999) << zoom << 0 << last;
        addRow() << qreal(-90.0) << qreal(-89.9999) << zoom << quarter << last;
        addRow() << qreal(0.0) << qreal(-89.9999) << zoom << mid << last;
        addRow() << qreal(90.0) << qreal(-89.9999) << zoom << three << last;
        addRow() << qreal(180.0) << qreal(-89.9999) << zoom << last << last;

        addRow() << qreal(-180.0) << qreal(89.9999) << zoom << 0 << 0;
        addRow() << qreal(-90.0) << qreal(89.9999) << zoom << quarter << 0;
        addRow() << qreal(0.0) << qreal(89.9999) << zoom << mid << 0;
        addRow() << qreal(90.0) << qreal(89.9999) << zoom << three << 0;
        addRow() << qreal(180.0) << qreal(89.9999) << zoom << last << 0;

        addRow() << qreal(-180.0) << qreal(-179.9999) << zoom << 0 << mid;
        addRow() << qreal(-90.0) << qreal(-179.9999) << zoom << quarter << mid;
        addRow() << qreal(0.0) << qreal(-179.9999) << zoom << mid << mid;
        addRow() << qreal(90.0) << qreal(-179.9999) << zoom << three << mid;
        addRow() << qreal(180.0) << qreal(-179.9999) << zoom << last << mid;

        addRow() << qreal(-180.0) << qreal(179.9999) << zoom << 0 << mid - 1;
        addRow() << qreal(-90.0) << qreal(179.9999) << zoom << quarter << mid - 1;
        addRow() << qreal(0.0) << qreal(179.9999) << zoom << mid << mid - 1;
        addRow() << qreal(90.0) << qreal(179.9999) << zoom << three << mid - 1;
        addRow() << qreal(180.0) << qreal(179.9999) << zoom << last << mid - 1;
    }
}

void TileIdTest::testFromCoordinates()
{
    QFETCH(qreal, lon);
    QFETCH(qreal, lat);
    QFETCH(int, zoom);
    QFETCH(int, x);
    QFETCH(int, y);

    const TileId tile = TileId::fromCoordinates(GeoDataCoordinates(lon, lat, 0, GeoDataCoordinates::Degree), zoom);

    QCOMPARE(tile.x(), x);
    QCOMPARE(tile.y(), y);
}

}

QTEST_MAIN(Marble::TileIdTest)

#include "TileIdTest.moc"