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

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

#include <mbgl/util/logging.hpp>

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

TEST(GeoJSONOptions, Basic) {
    Error error;
    mbgl::optional<GeoJSONOptions> converted = convertJSON<GeoJSONOptions>("{}", error);
    ASSERT_TRUE((bool) converted);
}

TEST(GeoJSONOptions, ErrorHandling) {
    Error error;
    mbgl::optional<GeoJSONOptions> converted = convertJSON<GeoJSONOptions>(R"JSON({
        "maxzoom": "should not be a string"
    })JSON", error);
    ASSERT_FALSE((bool) converted);
}

TEST(GeoJSONOptions, RetainsDefaults) {
    Error error;
    GeoJSONOptions converted = *convertJSON<GeoJSONOptions>("{}", error);
    GeoJSONOptions defaults;

    // GeoJSON-VT
    ASSERT_EQ(converted.minzoom, defaults.minzoom);
    ASSERT_EQ(converted.maxzoom, defaults.maxzoom);
    ASSERT_EQ(converted.buffer, defaults.buffer);
    ASSERT_EQ(converted.tolerance, defaults.tolerance);

    // Supercluster
    ASSERT_EQ(converted.cluster, defaults.cluster);
    ASSERT_EQ(converted.clusterRadius, defaults.clusterRadius);
    ASSERT_EQ(converted.clusterMaxZoom, defaults.clusterMaxZoom);
}

TEST(GeoJSONOptions, FullConversion) {
    Error error;
    GeoJSONOptions converted = *convertJSON<GeoJSONOptions>(R"JSON({
        "maxzoom": 1,
        "buffer": 2,
        "tolerance": 3,
        "cluster": true,
        "clusterRadius": 4,
        "clusterMaxZoom": 5
    })JSON", error);

    // GeoJSON-VT
    ASSERT_EQ(converted.minzoom, 0);
    ASSERT_EQ(converted.maxzoom, 1);
    ASSERT_EQ(converted.buffer, 2);
    ASSERT_EQ(converted.tolerance, 3);

    // Supercluster
    ASSERT_EQ(converted.cluster, true);
    ASSERT_EQ(converted.clusterRadius, 4);
    ASSERT_EQ(converted.clusterMaxZoom, 5);
}