diff options
Diffstat (limited to 'test/storage')
-rw-r--r-- | test/storage/main_resource_loader.test.cpp | 36 | ||||
-rw-r--r-- | test/storage/offline_database.test.cpp | 8 |
2 files changed, 40 insertions, 4 deletions
diff --git a/test/storage/main_resource_loader.test.cpp b/test/storage/main_resource_loader.test.cpp index ee9211b064..b5245dbad8 100644 --- a/test/storage/main_resource_loader.test.cpp +++ b/test/storage/main_resource_loader.test.cpp @@ -8,6 +8,7 @@ #include <mbgl/storage/resource_transform.hpp> #include <mbgl/test/util.hpp> #include <mbgl/util/run_loop.hpp> +#include <mbgl/util/timer.hpp> using namespace mbgl; @@ -749,3 +750,38 @@ TEST(MainResourceLoader, TEST_REQUIRES_SERVER(CachedResourceLowPriority)) { loop.run(); } + +TEST(MainResourceLoader, TEST_REQUIRES_SERVER(NoDoubleDispatch)) { + util::RunLoop loop; + MainResourceLoader fs(ResourceOptions{}); + + const Resource resource{Resource::Unknown, "http://127.0.0.1:3000/revalidate-same"}; + Response response; + response.data = std::make_shared<std::string>("data"); + response.etag.emplace("snowfall"); + + std::unique_ptr<AsyncRequest> req; + unsigned responseCount = 0u; + auto dbfs = FileSourceManager::get()->getFileSource(FileSourceType::Database, ResourceOptions{}); + dbfs->forward(resource, response, [&] { + req = fs.request(resource, [&](Response res) { + EXPECT_EQ(nullptr, res.error); + EXPECT_FALSE(bool(res.modified)); + EXPECT_TRUE(bool(res.etag)); + EXPECT_EQ("snowfall", *res.etag); + if (!res.notModified) { + ASSERT_TRUE(res.data.get()); + EXPECT_EQ("data", *res.data); + ++responseCount; + } + }); + }); + + util::Timer timer; + timer.start(Milliseconds(100), Duration::zero(), [&loop, &responseCount] { + EXPECT_EQ(1u, responseCount); + loop.stop(); + }); + + loop.run(); +} diff --git a/test/storage/offline_database.test.cpp b/test/storage/offline_database.test.cpp index f988457dac..f344151297 100644 --- a/test/storage/offline_database.test.cpp +++ b/test/storage/offline_database.test.cpp @@ -779,7 +779,7 @@ TEST(OfflineDatabase, MapboxTileLimitExceeded) { db.put(ambientTile, response); }; - auto insertRegionTile = [&](int64_t regionID, unsigned i) { + auto insertRegionTile = [&](int64_t regionID, uint64_t i) { const Resource tile = Resource::tile("mapbox://region_tile_" + std::to_string(i), 1, 0, 0, 0, Tileset::Scheme::XYZ); db.putRegionResource(regionID, tile, response); }; @@ -801,14 +801,14 @@ TEST(OfflineDatabase, MapboxTileLimitExceeded) { ASSERT_EQ(db.getOfflineMapboxTileCount(), 0); // Fine because this region is under the tile limit. - for (unsigned i = 0; i < limit - 10; ++i) { + for (uint64_t i = 0; i < limit - 10; ++i) { insertRegionTile(region1->getID(), i); } ASSERT_EQ(db.getOfflineMapboxTileCount(), limit - 10); // Fine because this region + the previous is at the limit. - for (unsigned i = limit; i < limit + 10; ++i) { + for (uint64_t i = limit; i < limit + 10; ++i) { insertRegionTile(region2->getID(), i); } @@ -848,7 +848,7 @@ TEST(OfflineDatabase, MapboxTileLimitExceeded) { // 10, which would blow up the limit if it wasn't // for the fact that tile 60 is already on the // database and will not count. - for (unsigned i = limit; i < limit + 10; ++i) { + for (uint64_t i = limit; i < limit + 10; ++i) { insertRegionTile(region1->getID(), i); } |