summaryrefslogtreecommitdiff
path: root/test/storage/cache_shared.cpp
blob: 89ef3bfb84b45d8b49d46a4bc1d78a729c45cd57 (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
#include "storage.hpp"

#include <mbgl/storage/sqlite_cache.hpp>
#include <mbgl/storage/resource.hpp>
#include <mbgl/util/run_loop.hpp>

TEST_F(Storage, CacheShared) {
    SCOPED_TEST(CacheShared)
    using namespace mbgl;

    util::RunLoop loop;

    // Check that we're getting two different caches when we request different paths.
    auto memory = SQLiteCache::getShared();
    auto file = SQLiteCache::getShared("test/fixtures/database/cache.db");
    EXPECT_NE(memory.get(), file.get());
    EXPECT_EQ(memory.get(), SQLiteCache::getShared().get());

    // Store a response into the memory file cache, then delete the last reference.
    const Resource resource { Resource::Kind::Unknown, "http://example.com" };
    memory->put(resource, Response());
    memory.reset();

    // Now check that the original memory file cache has been destructed and that it doesn't contain
    // the information we put into it.
    memory = SQLiteCache::getShared();
    auto req = memory->get(resource, [&](std::unique_ptr<Response> res) {
        EXPECT_FALSE(res.get());
        CacheShared.finish();
        loop.stop();
    });

    loop.run();
}