[tests] Add unit test for clearing the ambient cache

This commit is contained in:
Thiago Marcos P. Santos
2019-06-10 19:20:57 +03:00
parent bf0be56946
commit 4b1f9a3b3f

View File

@@ -29,6 +29,17 @@ static void deleteDatabaseFiles() {
util::deleteFile(filename + "-journal"s);
}
static std::shared_ptr<std::string> randomString(size_t size) {
auto result = std::make_shared<std::string>(size, 0);
std::mt19937 random;
for (size_t i = 0; i < size; i++) {
(*result)[i] = random();
}
return result;
}
static FixtureLog::Message error(ResultCode code, const char* message) {
return { EventSeverity::Error, Event::Database, static_cast<int64_t>(code), message };
}
@@ -593,6 +604,34 @@ TEST(OfflineDatabase, Invalidate) {
EXPECT_EQ(0u, log.uncheckedCount());
}
TEST(OfflineDatabase, ClearTileCache) {
FixtureLog log;
deleteDatabaseFiles();
{
OfflineDatabase dbCreate(filename);
}
size_t initialSize = util::read_file(filename).size();
{
Response response;
response.data = randomString(.5 * 1024 * 1024);
OfflineDatabase db(filename);
for (unsigned i = 0; i < 100; ++i) {
const Resource tile = Resource::tile("mapbox://tile_" + std::to_string(i), 1, 0, 0, 0, Tileset::Scheme::XYZ);
db.put(tile, response);
}
db.clearTileCache();
}
EXPECT_EQ(initialSize, util::read_file(filename).size());
EXPECT_EQ(0u, log.uncheckedCount());
}
TEST(OfflineDatabase, CreateRegionInfiniteMaxZoom) {
FixtureLog log;
OfflineDatabase db(":memory:");
@@ -638,17 +677,6 @@ TEST(OfflineDatabase, TEST_REQUIRES_WRITE(ConcurrentUse)) {
EXPECT_EQ(0u, log.uncheckedCount());
}
static std::shared_ptr<std::string> randomString(size_t size) {
auto result = std::make_shared<std::string>(size, 0);
std::mt19937 random;
for (size_t i = 0; i < size; i++) {
(*result)[i] = random();
}
return result;
}
TEST(OfflineDatabase, PutReturnsSize) {
FixtureLog log;
OfflineDatabase db(":memory:");