summaryrefslogtreecommitdiff
path: root/test/storage/offline.cpp
blob: e8f78425f50258c8515373b305b1ce83f18d8ef6 (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
#include <mbgl/storage/offline.hpp>
#include <mbgl/source/source_info.hpp>
#include <mbgl/map/tile_id.hpp>

#include <gtest/gtest.h>

using namespace mbgl;

static const LatLngBounds sanFrancisco = LatLngBounds::hull(
    { 37.6609, -122.5744 },
    { 37.8271, -122.3204 });

static const LatLngBounds sanFranciscoWrapped = LatLngBounds::hull(
    { 37.6609, 238.5744 },
    { 37.8271, 238.3204 });

TEST(OfflineTilePyramidRegionDefinition, TileCoverEmpty) {
    OfflineTilePyramidRegionDefinition region("", LatLngBounds::empty(), 0, 20, 1.0);
    SourceInfo info;

    auto result = region.tileCover(SourceType::Vector, 512, info);
    ASSERT_TRUE(result.empty());
}

TEST(OfflineTilePyramidRegionDefinition, TileCoverZoomIntersection) {
    OfflineTilePyramidRegionDefinition region("", sanFrancisco, 2, 2, 1.0);
    SourceInfo info;

    info.minZoom = 0;
    auto resultIntersection = region.tileCover(SourceType::Vector, 512, info);
    ASSERT_EQ(1, resultIntersection.size());

    info.minZoom = 3;
    auto resultNoIntersection = region.tileCover(SourceType::Vector, 512, info);
    ASSERT_TRUE(resultNoIntersection.empty());
}

TEST(OfflineTilePyramidRegionDefinition, TileCoverTileSize) {
    OfflineTilePyramidRegionDefinition region("", LatLngBounds::world(), 0, 0, 1.0);
    SourceInfo info;

    auto result512 = region.tileCover(SourceType::Vector, 512, info);
    ASSERT_EQ(1, result512.size());
    ASSERT_EQ(0, result512[0].z);

    auto result256 = region.tileCover(SourceType::Vector, 256, info);
    ASSERT_EQ(4, result256.size());
    ASSERT_EQ(1, result256[0].z);
}

TEST(OfflineTilePyramidRegionDefinition, TileCoverZoomRounding) {
    OfflineTilePyramidRegionDefinition region("", sanFrancisco, 0.6, 0.7, 1.0);
    SourceInfo info;

    auto resultVector = region.tileCover(SourceType::Vector, 512, info);
    ASSERT_EQ(1, resultVector.size());
    ASSERT_EQ(0, resultVector[0].z);

    auto resultRaster = region.tileCover(SourceType::Raster, 512, info);
    ASSERT_EQ(1, resultRaster.size());
    ASSERT_EQ(1, resultRaster[0].z);
}

TEST(OfflineTilePyramidRegionDefinition, TileCoverWrapped) {
    OfflineTilePyramidRegionDefinition region("", sanFranciscoWrapped, 0, 0, 1.0);
    SourceInfo info;

    auto result = region.tileCover(SourceType::Vector, 512, info);
    ASSERT_EQ(1, result.size());
    ASSERT_EQ(0, result[0].z);
    ASSERT_EQ(0, result[0].x);
    ASSERT_EQ(0, result[0].y);
}