summaryrefslogtreecommitdiff
path: root/test/style/conversion/source.test.cpp
blob: e889e01d1d02ec73ffaddf9b530edee912d6b24a (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
#include <mbgl/test/util.hpp>

#include <mbgl/style/conversion/json.hpp>
#include <mbgl/style/conversion/source.hpp>

using namespace mbgl;
using namespace mbgl::style;
using namespace mbgl::style::conversion;
namespace {

std::unique_ptr<Source> parseSource(const std::string& src, const std::string& sourceName) {
    Error error;
    auto source = convertJSON<std::unique_ptr<mbgl::style::Source>>(src, error, sourceName);
    if (source) return std::move(*source);
    return nullptr;
}

void checkConstProperty(std::unique_ptr<Source>& source, const std::string& propertyName, const mbgl::Value& expected) {
    Value value = source->getProperty(propertyName);
    EXPECT_EQ(expected, value) << propertyName;
}

void checkSetProperty(std::unique_ptr<Source>& source, const std::string& propertyName, const JSValue& value) {
    auto error = source->setProperty(propertyName, Convertible(&value));
    EXPECT_EQ(nullopt, error) << error->message;
}

} // namespace

TEST(StyleConversion, SetSourceGenericProperties) {
    auto source = parseSource(R"JSON({
        "type": "vector",
        "tiles": ["http://example.com/{z}-{x}-{y}.vector.pbf"],
        "scheme": "xyz",
        "minzoom": 11,
        "maxzoom": 16,
        "attribution": "mapbox",
        "bounds": [-180, -73, -120, 73]
    })JSON",
                              "vector_source");

    ASSERT_NE(nullptr, source);
    checkConstProperty(source, "volatile", false);
    checkSetProperty(source, "volatile", JSValue(true));
    checkConstProperty(source, "volatile", true);

    checkConstProperty(source, "minimum-tile-update-interval", 0.0);
    checkSetProperty(source, "minimum-tile-update-interval", JSValue(10.5));
    checkConstProperty(source, "minimum-tile-update-interval", 10.5);

    checkConstProperty(source, "prefetch-zoom-delta", NullValue());
    checkSetProperty(source, "prefetch-zoom-delta", JSValue(0));
    checkConstProperty(source, "prefetch-zoom-delta", 0u);

    checkConstProperty(source, "max-overscale-factor-for-parent-tiles", NullValue());
    checkSetProperty(source, "max-overscale-factor-for-parent-tiles", JSValue(2));
    checkConstProperty(source, "max-overscale-factor-for-parent-tiles", 2u);
}