summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2016-01-14 15:25:56 +0100
committerKonstantin Käfer <mail@kkaefer.com>2016-01-15 10:44:16 +0100
commit957415823a003111f6efecd1a1552a30f999235a (patch)
treeef767f1e3557c8d9a8964087f32beda0b39e0f26 /test
parent8939a7b7069124adac44ef822bfe6d97adcc14d6 (diff)
downloadqtlocation-mapboxgl-957415823a003111f6efecd1a1552a30f999235a.tar.gz
[core] Support multiple paths in SQLiteCache::getShared()
If you use many different caches, expired weak_ptrs will pile up in the unordered_map, but that is an edge case, and you probably shouldn't do that anyway.
Diffstat (limited to 'test')
-rw-r--r--test/storage/cache_shared.cpp34
-rw-r--r--test/test.gypi1
2 files changed, 35 insertions, 0 deletions
diff --git a/test/storage/cache_shared.cpp b/test/storage/cache_shared.cpp
new file mode 100644
index 0000000000..89ef3bfb84
--- /dev/null
+++ b/test/storage/cache_shared.cpp
@@ -0,0 +1,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();
+}
diff --git a/test/test.gypi b/test/test.gypi
index 21b2038876..607dd2b76c 100644
--- a/test/test.gypi
+++ b/test/test.gypi
@@ -70,6 +70,7 @@
'storage/storage.cpp',
'storage/cache_response.cpp',
'storage/cache_revalidate.cpp',
+ 'storage/cache_shared.cpp',
'storage/cache_size.cpp',
'storage/database.cpp',
'storage/asset_file_source.cpp',