Chromium Code Reviews| Index: services/url_response_disk_cache/url_response_disk_cache_db_unittests.cc |
| diff --git a/services/url_response_disk_cache/url_response_disk_cache_db_unittests.cc b/services/url_response_disk_cache/url_response_disk_cache_db_unittests.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..19db14a4708bf85989b0122a8870e4387db3ba03 |
| --- /dev/null |
| +++ b/services/url_response_disk_cache/url_response_disk_cache_db_unittests.cc |
| @@ -0,0 +1,137 @@ |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "base/files/scoped_temp_dir.h" |
| +#include "base/threading/platform_thread.h" |
| +#include "services/url_response_disk_cache/url_response_disk_cache_db.h" |
| +#include "testing/gtest/include/gtest/gtest.h" |
| + |
| +namespace mojo { |
| + |
| +namespace { |
| + |
| +class URLResponseDiskCacheDBTest : public ::testing::Test { |
| + protected: |
| + void SetUp() override { |
| + ASSERT_TRUE(tmp_dir_.CreateUniqueTempDir()); |
| + Open(); |
| + } |
| + |
| + void Open() { |
| + db_ = nullptr; |
| + base::FilePath db_path = tmp_dir_.path().Append("db"); |
| + db_ = new URLResponseDiskCacheDB(db_path); |
| + } |
| + |
| + CacheEntryPtr NewEntry() { |
| + CacheEntryPtr entry = CacheEntry::New(); |
| + entry->response = URLResponse::New(); |
| + entry->cache_directory = "/cache"; |
| + entry->content_path = "/cache/content"; |
| + return entry.Pass(); |
| + } |
| + |
| + base::ScopedTempDir tmp_dir_; |
| + scoped_refptr<URLResponseDiskCacheDB> db_; |
| +}; |
| + |
| +TEST_F(URLResponseDiskCacheDBTest, Create) {} |
| + |
| +TEST_F(URLResponseDiskCacheDBTest, Version) { |
| + EXPECT_EQ(0lu, db_->GetVersion()); |
| + db_->SetVersion(15); |
| + EXPECT_EQ(15lu, db_->GetVersion()); |
| +} |
| + |
| +TEST_F(URLResponseDiskCacheDBTest, Persist) { |
| + db_->SetVersion(15); |
| + EXPECT_EQ(15lu, db_->GetVersion()); |
| + Open(); |
| + EXPECT_EQ(15lu, db_->GetVersion()); |
| +} |
| + |
| +TEST_F(URLResponseDiskCacheDBTest, Entry) { |
| + std::string origin = "origin"; |
| + std::string url = "url"; |
| + db_->PutNewest(origin, url, NewEntry()); |
| + CacheEntryPtr entry = db_->GetNewest(origin, url); |
| + EXPECT_TRUE(entry); |
| + Open(); |
| + entry = db_->GetNewest(origin, url); |
| + EXPECT_TRUE(entry); |
| +} |
| + |
| +TEST_F(URLResponseDiskCacheDBTest, Newest) { |
| + std::string origin = "origin"; |
| + std::string url = "url"; |
| + std::string new_cache_directory = "/newcache/"; |
| + db_->PutNewest(origin, url, NewEntry()); |
| + base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(5)); |
| + CacheEntryPtr entry = NewEntry(); |
| + entry->cache_directory = new_cache_directory; |
| + db_->PutNewest(origin, url, entry.Pass()); |
| + entry = db_->GetNewest(origin, url); |
| + EXPECT_TRUE(entry); |
| + EXPECT_EQ(new_cache_directory, entry->cache_directory); |
| +} |
| + |
| +TEST_F(URLResponseDiskCacheDBTest, Iterator) { |
|
ppi
2015/09/15 15:21:22
here we are putting the entries in the same order
qsr
2015/09/16 11:46:38
Done.
|
| + std::string origin = "origin"; |
| + std::string url = "url"; |
| + std::string url2 = "url2"; |
| + db_->PutNewest(origin, url, NewEntry()); |
| + CacheEntryPtr entry = db_->GetNewest(origin, url); |
| + EXPECT_TRUE(entry); |
| + db_->PutNewest(origin, url2, NewEntry()); |
| + entry = CacheEntry::New(); |
| + scoped_ptr<URLResponseDiskCacheDB::Iterator> iterator = db_->Iterate(); |
| + EXPECT_TRUE(iterator->HasNext()); |
| + CacheKeyPtr key; |
| + iterator->GetNext(&key, &entry); |
| + EXPECT_TRUE(iterator->HasNext()); |
| + EXPECT_TRUE(key); |
| + EXPECT_EQ(url, key->url); |
| + EXPECT_TRUE(entry); |
| + iterator->GetNext(&key, &entry); |
| + EXPECT_FALSE(iterator->HasNext()); |
| + EXPECT_TRUE(key); |
| + EXPECT_EQ(url2, key->url); |
| + EXPECT_TRUE(entry); |
| +} |
| + |
| +TEST_F(URLResponseDiskCacheDBTest, Delete) { |
| + std::string origin = "origin"; |
| + std::string url = "url"; |
| + db_->PutNewest(origin, url, NewEntry()); |
| + CacheEntryPtr entry = db_->GetNewest(origin, url); |
| + EXPECT_TRUE(entry); |
| + entry = CacheEntry::New(); |
| + scoped_ptr<URLResponseDiskCacheDB::Iterator> iterator = db_->Iterate(); |
| + EXPECT_TRUE(iterator->HasNext()); |
| + CacheKeyPtr key; |
| + iterator->GetNext(&key, &entry); |
| + EXPECT_FALSE(iterator->HasNext()); |
| + EXPECT_TRUE(key); |
| + EXPECT_TRUE(entry); |
| + db_->Delete(key.Pass()); |
| + entry = db_->GetNewest(origin, url); |
| + EXPECT_FALSE(entry); |
| +} |
| + |
| +TEST_F(URLResponseDiskCacheDBTest, IteratorFrozen) { |
| + std::string origin = "origin"; |
| + std::string url = "url"; |
| + db_->PutNewest(origin, url, NewEntry()); |
| + scoped_ptr<URLResponseDiskCacheDB::Iterator> iterator = db_->Iterate(); |
| + std::string url2 = "url2"; |
| + db_->PutNewest(origin, url2, NewEntry()); |
| + |
| + EXPECT_TRUE(iterator->HasNext()); |
| + iterator->GetNext(nullptr, nullptr); |
| + EXPECT_FALSE(iterator->HasNext()); |
| +} |
| + |
| +} // namespace |
| + |
| +} // namespace mojo |