summaryrefslogtreecommitdiff
path: root/platform/qt/test/qmapboxgl.cpp
blob: 597aef5df35d6fd7c90fbf58bf0e4a7d9e5198cb (plain)
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
87
88
89
90
91
92
93
94
#include <mbgl/test/util.hpp>
#include <mbgl/util/io.hpp>

#include <QApplication>
#include <QGLWidget>
#include <QMapbox>
#include <QMapboxGL>

class QMapboxGLTest : public QObject, public ::testing::Test {
    Q_OBJECT

public:
    QMapboxGLTest() : app(argc, const_cast<char**>(&argv)), map(nullptr, settings) {
        connect(&map, SIGNAL(mapChanged(QMapbox::MapChange)),
                this, SLOT(onMapChanged(QMapbox::MapChange)));
        connect(&map, SIGNAL(needsRendering()),
                this, SLOT(onNeedsRendering()));

        widget.makeCurrent();
        QMapbox::initializeGLExtensions();

        map.resize(QSize(512, 512), QSize(512, 512));
        map.setCoordinateZoom(QMapbox::Coordinate(60.170448, 24.942046), 14);
    }

    void runUntil(QMapbox::MapChange status) {
        changeCallback = [&](QMapbox::MapChange change) {
            if (change == status) {
                app.exit();
                changeCallback = nullptr;
            }
        };

        app.exec();
    }

private:
    int argc = 1;
    const char* argv = "mbgl-test";

    QApplication app;
    QGLWidget widget;

protected:
    QMapboxGLSettings settings;
    QMapboxGL map;

    std::function<void(QMapbox::MapChange)> changeCallback;

private slots:
    void onMapChanged(QMapbox::MapChange change) {
        if (changeCallback) {
            changeCallback(change);
        }
    };

    void onNeedsRendering() {
        map.render();
    };
};

TEST_F(QMapboxGLTest, TEST_DISABLED_ON_CI(styleJson)) {
    QString json = QString::fromStdString(
        mbgl::util::read_file("test/fixtures/resources/style_vector.json"));

    map.setStyleJson(json);
    ASSERT_EQ(map.styleJson(), json);
    runUntil(QMapbox::MapChangeDidFinishLoadingMap);

    map.setStyleJson("invalid json");
    runUntil(QMapbox::MapChangeDidFailLoadingMap);

    map.setStyleJson("\"\"");
    runUntil(QMapbox::MapChangeDidFailLoadingMap);

    map.setStyleJson(QString());
    runUntil(QMapbox::MapChangeDidFailLoadingMap);
}

TEST_F(QMapboxGLTest, TEST_DISABLED_ON_CI(styleUrl)) {
    QString url(QMapbox::defaultStyles()[0].first);

    map.setStyleUrl(url);
    ASSERT_EQ(map.styleUrl(), url);
    runUntil(QMapbox::MapChangeDidFinishLoadingMap);

    map.setStyleUrl("invalid://url");
    runUntil(QMapbox::MapChangeDidFailLoadingMap);

    map.setStyleUrl(QString());
    runUntil(QMapbox::MapChangeDidFailLoadingMap);
}

#include "qmapboxgl.moc"