summaryrefslogtreecommitdiffstats
path: root/webkit/appcache/appcache_group_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/appcache/appcache_group_unittest.cc')
-rw-r--r--webkit/appcache/appcache_group_unittest.cc96
1 files changed, 96 insertions, 0 deletions
diff --git a/webkit/appcache/appcache_group_unittest.cc b/webkit/appcache/appcache_group_unittest.cc
new file mode 100644
index 0000000..c4e0cd1
--- /dev/null
+++ b/webkit/appcache/appcache_group_unittest.cc
@@ -0,0 +1,96 @@
+// Copyright (c) 2009 The Chromium Authos. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "testing/gtest/include/gtest/gtest.h"
+#include "webkit/appcache/appcache.h"
+#include "webkit/appcache/appcache_host.h"
+#include "webkit/appcache/appcache_group.h"
+#include "webkit/appcache/appcache_service.h"
+
+using appcache::AppCache;
+using appcache::AppCacheHost;
+using appcache::AppCacheGroup;
+using appcache::AppCacheService;
+
+namespace {
+
+class AppCacheGroupTest : public testing::Test {
+};
+
+} // namespace
+
+TEST(AppCacheGroupTest, AddRemoveCache) {
+ AppCacheService service;
+ scoped_refptr<AppCacheGroup> group =
+ new AppCacheGroup(&service, GURL::EmptyGURL());
+
+ base::TimeTicks ticks = base::TimeTicks::Now();
+
+ AppCache* cache1 = new AppCache(&service, 111);
+ cache1->set_complete(true);
+ cache1->set_update_time(ticks);
+ cache1->set_owning_group(group);
+ group->AddCache(cache1);
+ EXPECT_EQ(cache1, group->newest_complete_cache());
+
+ // Adding older cache does not change newest complete cache.
+ AppCache* cache2 = new AppCache(&service, 222);
+ cache2->set_complete(true);
+ cache2->set_update_time(ticks - base::TimeDelta::FromDays(1));
+ cache2->set_owning_group(group);
+ group->AddCache(cache2);
+ EXPECT_EQ(cache1, group->newest_complete_cache());
+
+ // Adding newer cache does change newest complete cache.
+ AppCache* cache3 = new AppCache(&service, 333);
+ cache3->set_complete(true);
+ cache3->set_update_time(ticks + base::TimeDelta::FromDays(1));
+ cache3->set_owning_group(group);
+ group->AddCache(cache3);
+ EXPECT_EQ(cache3, group->newest_complete_cache());
+
+ // Old caches can always be removed.
+ EXPECT_TRUE(group->RemoveCache(cache1));
+ EXPECT_EQ(cache3, group->newest_complete_cache()); // newest unchanged
+
+ // Cannot remove newest cache if there are older caches.
+ EXPECT_FALSE(group->RemoveCache(cache3));
+ EXPECT_EQ(cache3, group->newest_complete_cache()); // newest unchanged
+
+ // Can remove newest cache after all older caches are removed.
+ EXPECT_TRUE(group->RemoveCache(cache2));
+ EXPECT_EQ(cache3, group->newest_complete_cache()); // newest unchanged
+ EXPECT_TRUE(group->RemoveCache(cache3));
+}
+
+TEST(AppCacheGroupTest, CleanupUnusedGroup) {
+ AppCacheService service;
+ AppCacheGroup* group = new AppCacheGroup(&service, GURL::EmptyGURL());
+
+ AppCacheHost host1(1, NULL);
+ AppCacheHost host2(2, NULL);
+
+ base::TimeTicks ticks = base::TimeTicks::Now();
+
+ AppCache* cache1 = new AppCache(&service, 111);
+ cache1->set_complete(true);
+ cache1->set_update_time(ticks);
+ cache1->set_owning_group(group);
+ group->AddCache(cache1);
+ EXPECT_EQ(cache1, group->newest_complete_cache());
+
+ host1.set_selected_cache(cache1);
+ host2.set_selected_cache(cache1);
+
+ AppCache* cache2 = new AppCache(&service, 222);
+ cache2->set_complete(true);
+ cache2->set_update_time(ticks + base::TimeDelta::FromDays(1));
+ cache2->set_owning_group(group);
+ group->AddCache(cache2);
+ EXPECT_EQ(cache2, group->newest_complete_cache());
+
+ // Unassociate all hosts from older cache.
+ host1.set_selected_cache(NULL);
+ host2.set_selected_cache(NULL);
+}