summaryrefslogtreecommitdiff
path: root/platform/qt/test/qmapboxgl.test.cpp
blob: c6ae3ed4039cf4ef26c45bf7653c145807e771d5 (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
#include "qmapboxgl.test.hpp"

#include <mbgl/util/io.hpp>

#include <QMapbox>

// We're using QGLFramebufferObject, which is only available in Qt 5 and up.
#if QT_VERSION >= 0x050000

QMapboxGLTest::QMapboxGLTest() : size(512, 512), fbo((assert(widget.context()->isValid()), widget.makeCurrent(), size)), map(nullptr, settings, size) {
    connect(&map, SIGNAL(mapChanged(QMapboxGL::MapChange)),
            this, SLOT(onMapChanged(QMapboxGL::MapChange)));
    connect(&map, SIGNAL(needsRendering()),
            this, SLOT(onNeedsRendering()));
    map.resize(fbo.size(), fbo.size());
    map.setFramebufferObject(fbo.handle());
    map.setCoordinateZoom(QMapbox::Coordinate(60.170448, 24.942046), 14);
}

void QMapboxGLTest::runUntil(QMapboxGL::MapChange status) {
    changeCallback = [&](QMapboxGL::MapChange change) {
        if (change == status) {
            qApp->exit();
            changeCallback = nullptr;
        }
    };

    qApp->exec();
}

void QMapboxGLTest::onMapChanged(QMapboxGL::MapChange change) {
    if (changeCallback) {
        changeCallback(change);
    }
}

void QMapboxGLTest::onNeedsRendering() {
    widget.makeCurrent();
    fbo.bind();
    glViewport(0, 0, fbo.width(), fbo.height());
    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(QMapboxGL::MapChangeDidFinishLoadingMap);

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

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

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

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

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

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

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

#endif