Chromium Code Reviews| Index: content/browser/service_worker/service_worker_database_unittest.cc |
| diff --git a/content/browser/service_worker/service_worker_database_unittest.cc b/content/browser/service_worker/service_worker_database_unittest.cc |
| index 2f01fa610feefff871a33d2fa81dba96a6d07384..2c2a4a76044e84723e674cf4483e7838a4eb3bf4 100644 |
| --- a/content/browser/service_worker/service_worker_database_unittest.cc |
| +++ b/content/browser/service_worker/service_worker_database_unittest.cc |
| @@ -29,16 +29,17 @@ struct AvailableIds { |
| GURL URL(const GURL& origin, const std::string& path) { |
| EXPECT_TRUE(origin.is_valid()); |
| - GURL out(origin.GetOrigin().spec() + path); |
| + EXPECT_EQ(origin, origin.GetOrigin()); |
| + GURL out(origin.spec() + path); |
| EXPECT_TRUE(out.is_valid()); |
| return out; |
| } |
| Resource CreateResource(int64 resource_id, const GURL& url) { |
| + EXPECT_TRUE(url.is_valid()); |
| Resource resource; |
| resource.resource_id = resource_id; |
| resource.url = url; |
| - EXPECT_TRUE(resource.url.is_valid()); |
| return resource; |
| } |
| @@ -63,9 +64,7 @@ void VerifyRegistrationData(const RegistrationData& expected, |
| void VerifyResourceRecords(const std::vector<Resource>& expected, |
| const std::vector<Resource>& actual) { |
| - EXPECT_EQ(expected.size(), actual.size()); |
| - if (expected.size() != actual.size()) |
| - return; |
| + ASSERT_EQ(expected.size(), actual.size()); |
| for (size_t i = 0; i < expected.size(); ++i) { |
| EXPECT_EQ(expected[i].resource_id, actual[i].resource_id); |
| EXPECT_EQ(expected[i].url, actual[i].url); |
| @@ -218,7 +217,6 @@ TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) { |
| data4.scope = URL(origin3, "/fuga"); |
| data4.script = URL(origin3, "/script4.js"); |
| data4.version_id = 789; |
| - ASSERT_EQ(origin3, data4.scope.GetOrigin()); |
| ASSERT_TRUE(database->WriteRegistration(data4, resources)); |
| origins.clear(); |
| @@ -348,9 +346,6 @@ TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) { |
| VerifyRegistrationData(data4, registrations[3]); |
| } |
| -// TODO(nhiroki): Record read/write operations using gtest fixture to avoid |
| -// building expectations by hand. For example, expected purgeable resource ids |
| -// should be calculated automatically. |
|
nhiroki
2014/05/12 15:14:24
I found this makes test purposes/expectations uncl
|
| TEST(ServiceWorkerDatabaseTest, Registration_Basic) { |
| scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| @@ -361,23 +356,20 @@ TEST(ServiceWorkerDatabaseTest, Registration_Basic) { |
| data.script = URL(origin, "/script.js"); |
| data.version_id = 200; |
| - Resource resource1 = CreateResource(1, URL(origin, "/resource1")); |
| - Resource resource2 = CreateResource(2, URL(origin, "/resource2")); |
| - |
| std::vector<Resource> resources; |
| - resources.push_back(resource1); |
| - resources.push_back(resource2); |
| + resources.push_back(CreateResource(1, URL(origin, "/resource1"))); |
| + resources.push_back(CreateResource(2, URL(origin, "/resource2"))); |
| - // Write |resource1| to the uncommitted list to make sure that writing |
| + // Write a resource to the uncommitted list to make sure that writing |
| // registration removes resource ids associated with the registration from |
| // the uncommitted list. |
| std::set<int64> uncommitted_ids; |
| - uncommitted_ids.insert(resource1.resource_id); |
| + uncommitted_ids.insert(resources[0].resource_id); |
| EXPECT_TRUE(database->WriteUncommittedResourceIds(uncommitted_ids)); |
| std::set<int64> uncommitted_ids_out; |
| EXPECT_TRUE(database->GetUncommittedResourceIds(&uncommitted_ids_out)); |
| - EXPECT_EQ(1u, uncommitted_ids_out.size()); |
| - EXPECT_TRUE(ContainsKey(uncommitted_ids_out, resource1.resource_id)); |
| + EXPECT_EQ(uncommitted_ids.size(), uncommitted_ids_out.size()); |
| + EXPECT_TRUE(ContainsKey(uncommitted_ids_out, resources[0].resource_id)); |
| EXPECT_TRUE(database->WriteRegistration(data, resources)); |
| @@ -389,13 +381,12 @@ TEST(ServiceWorkerDatabaseTest, Registration_Basic) { |
| VerifyRegistrationData(data, data_out); |
| VerifyResourceRecords(resources, resources_out); |
| - // Make sure that |resource1| is removed from the uncommitted list. |
| + // Make sure that the resource is removed from the uncommitted list. |
| uncommitted_ids_out.clear(); |
| EXPECT_TRUE(database->GetUncommittedResourceIds(&uncommitted_ids_out)); |
| EXPECT_TRUE(uncommitted_ids_out.empty()); |
| - EXPECT_TRUE(database->DeleteRegistration( |
| - data.registration_id, data.scope.GetOrigin())); |
| + EXPECT_TRUE(database->DeleteRegistration(data.registration_id, origin)); |
| // Make sure that the registration and resource records are gone. |
| resources_out.clear(); |
| @@ -404,11 +395,11 @@ TEST(ServiceWorkerDatabaseTest, Registration_Basic) { |
| EXPECT_TRUE(resources_out.empty()); |
| // Resources should be purgeable because these are no longer referred. |
| - std::set<int64> purgeable_resource_ids; |
| - EXPECT_TRUE(database->GetPurgeableResourceIds(&purgeable_resource_ids)); |
| - EXPECT_EQ(2u, purgeable_resource_ids.size()); |
| - EXPECT_TRUE(ContainsKey(purgeable_resource_ids, resource1.resource_id)); |
| - EXPECT_TRUE(ContainsKey(purgeable_resource_ids, resource2.resource_id)); |
| + std::set<int64> purgeable_ids_out; |
| + EXPECT_TRUE(database->GetPurgeableResourceIds(&purgeable_ids_out)); |
| + EXPECT_EQ(2u, purgeable_ids_out.size()); |
| + EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources[0].resource_id)); |
| + EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources[1].resource_id)); |
| } |
| TEST(ServiceWorkerDatabaseTest, Registration_Overwrite) { |
| @@ -421,12 +412,9 @@ TEST(ServiceWorkerDatabaseTest, Registration_Overwrite) { |
| data.script = URL(origin, "/script.js"); |
| data.version_id = 200; |
| - Resource resource1 = CreateResource(1, URL(origin, "/resource1")); |
| - Resource resource2 = CreateResource(2, URL(origin, "/resource2")); |
| - |
| std::vector<Resource> resources1; |
| - resources1.push_back(resource1); |
| - resources1.push_back(resource2); |
| + resources1.push_back(CreateResource(1, URL(origin, "/resource1"))); |
| + resources1.push_back(CreateResource(2, URL(origin, "/resource2"))); |
| EXPECT_TRUE(database->WriteRegistration(data, resources1)); |
| @@ -441,11 +429,9 @@ TEST(ServiceWorkerDatabaseTest, Registration_Overwrite) { |
| // Update the registration. |
| RegistrationData updated_data = data; |
| updated_data.version_id = data.version_id + 1; |
| - Resource resource3 = CreateResource(3, URL(origin, "/resource3")); |
| - Resource resource4 = CreateResource(4, URL(origin, "/resource4")); |
| std::vector<Resource> resources2; |
| - resources2.push_back(resource3); |
| - resources2.push_back(resource4); |
| + resources2.push_back(CreateResource(3, URL(origin, "/resource3"))); |
| + resources2.push_back(CreateResource(4, URL(origin, "/resource4"))); |
| EXPECT_TRUE(database->WriteRegistration(updated_data, resources2)); |
| @@ -457,16 +443,15 @@ TEST(ServiceWorkerDatabaseTest, Registration_Overwrite) { |
| VerifyRegistrationData(updated_data, data_out); |
| VerifyResourceRecords(resources2, resources_out); |
| - std::set<int64> purgeable_resource_ids; |
| - EXPECT_TRUE(database->GetPurgeableResourceIds(&purgeable_resource_ids)); |
| - EXPECT_EQ(2u, purgeable_resource_ids.size()); |
| - EXPECT_TRUE(ContainsKey(purgeable_resource_ids, resource1.resource_id)); |
| - EXPECT_TRUE(ContainsKey(purgeable_resource_ids, resource2.resource_id)); |
| + std::set<int64> purgeable_ids_out; |
| + EXPECT_TRUE(database->GetPurgeableResourceIds(&purgeable_ids_out)); |
| + EXPECT_EQ(2u, purgeable_ids_out.size()); |
| + EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources1[0].resource_id)); |
| + EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources1[1].resource_id)); |
| } |
| TEST(ServiceWorkerDatabaseTest, Registration_Multiple) { |
| scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| - |
| GURL origin("http://example.com"); |
| // Add registration1. |
| @@ -475,14 +460,10 @@ TEST(ServiceWorkerDatabaseTest, Registration_Multiple) { |
| data1.scope = URL(origin, "/foo"); |
| data1.script = URL(origin, "/script1.js"); |
| data1.version_id = 200; |
| - GURL origin1 = data1.scope.GetOrigin(); |
| - |
| - Resource resource1 = CreateResource(1, URL(origin, "/resource1")); |
| - Resource resource2 = CreateResource(2, URL(origin, "/resource2")); |
| std::vector<Resource> resources1; |
| - resources1.push_back(resource1); |
| - resources1.push_back(resource2); |
| + resources1.push_back(CreateResource(1, URL(origin, "/resource1"))); |
| + resources1.push_back(CreateResource(2, URL(origin, "/resource2"))); |
| EXPECT_TRUE(database->WriteRegistration(data1, resources1)); |
| // Add registration2. |
| @@ -491,14 +472,10 @@ TEST(ServiceWorkerDatabaseTest, Registration_Multiple) { |
| data2.scope = URL(origin, "/bar"); |
| data2.script = URL(origin, "/script2.js"); |
| data2.version_id = 201; |
| - GURL origin2 = data2.scope.GetOrigin(); |
| - |
| - Resource resource3 = CreateResource(3, URL(origin, "/resource3")); |
| - Resource resource4 = CreateResource(4, URL(origin, "/resource4")); |
| std::vector<Resource> resources2; |
| - resources2.push_back(resource3); |
| - resources2.push_back(resource4); |
| + resources2.push_back(CreateResource(3, URL(origin, "/resource3"))); |
| + resources2.push_back(CreateResource(4, URL(origin, "/resource4"))); |
| EXPECT_TRUE(database->WriteRegistration(data2, resources2)); |
| // Make sure that registration1 is stored. |
| @@ -516,9 +493,9 @@ TEST(ServiceWorkerDatabaseTest, Registration_Multiple) { |
| VerifyRegistrationData(data2, data_out); |
| VerifyResourceRecords(resources2, resources_out); |
| - std::set<int64> purgeable_resource_ids; |
| - EXPECT_TRUE(database->GetPurgeableResourceIds(&purgeable_resource_ids)); |
| - EXPECT_TRUE(purgeable_resource_ids.empty()); |
| + std::set<int64> purgeable_ids_out; |
| + EXPECT_TRUE(database->GetPurgeableResourceIds(&purgeable_ids_out)); |
| + EXPECT_TRUE(purgeable_ids_out.empty()); |
| // Delete registration1. |
| EXPECT_TRUE(database->DeleteRegistration(data1.registration_id, origin)); |
| @@ -529,11 +506,11 @@ TEST(ServiceWorkerDatabaseTest, Registration_Multiple) { |
| data1.registration_id, origin, &data_out, &resources_out)); |
| EXPECT_TRUE(resources_out.empty()); |
| - purgeable_resource_ids.clear(); |
| - EXPECT_TRUE(database->GetPurgeableResourceIds(&purgeable_resource_ids)); |
| - EXPECT_EQ(2u, purgeable_resource_ids.size()); |
| - EXPECT_TRUE(ContainsKey(purgeable_resource_ids, resource1.resource_id)); |
| - EXPECT_TRUE(ContainsKey(purgeable_resource_ids, resource2.resource_id)); |
| + purgeable_ids_out.clear(); |
| + EXPECT_TRUE(database->GetPurgeableResourceIds(&purgeable_ids_out)); |
| + EXPECT_EQ(2u, purgeable_ids_out.size()); |
| + EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources1[0].resource_id)); |
| + EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources1[1].resource_id)); |
| // Make sure that registration2 is still alive. |
| resources_out.clear(); |
| @@ -555,8 +532,7 @@ TEST(ServiceWorkerDatabaseTest, UncommittedResourceIds) { |
| std::set<int64> ids_out; |
| EXPECT_TRUE(database->GetUncommittedResourceIds(&ids_out)); |
| - EXPECT_EQ(ids1.size(), ids_out.size()); |
| - EXPECT_TRUE(base::STLIncludes(ids1, ids_out)); |
| + EXPECT_EQ(ids1, ids_out); |
| // Write {2, 4}. |
| std::set<int64> ids2; |
| @@ -566,11 +542,8 @@ TEST(ServiceWorkerDatabaseTest, UncommittedResourceIds) { |
| ids_out.clear(); |
| EXPECT_TRUE(database->GetUncommittedResourceIds(&ids_out)); |
| - EXPECT_EQ(4U, ids_out.size()); |
| - EXPECT_TRUE(ContainsKey(ids_out, 1)); |
| - EXPECT_TRUE(ContainsKey(ids_out, 2)); |
| - EXPECT_TRUE(ContainsKey(ids_out, 3)); |
| - EXPECT_TRUE(ContainsKey(ids_out, 4)); |
| + std::set<int64> expected = base::STLSetUnion<std::set<int64> >(ids1, ids2); |
| + EXPECT_EQ(expected, ids_out); |
| // Delete {2, 3}. |
| std::set<int64> ids3; |
| @@ -580,9 +553,8 @@ TEST(ServiceWorkerDatabaseTest, UncommittedResourceIds) { |
| ids_out.clear(); |
| EXPECT_TRUE(database->GetUncommittedResourceIds(&ids_out)); |
| - EXPECT_EQ(2U, ids_out.size()); |
| - EXPECT_TRUE(ContainsKey(ids_out, 1)); |
| - EXPECT_TRUE(ContainsKey(ids_out, 4)); |
| + expected = base::STLSetDifference<std::set<int64> >(expected, ids3); |
| + EXPECT_EQ(expected, ids_out); |
| } |
| TEST(ServiceWorkerDatabaseTest, PurgeableResourceIds) { |
| @@ -597,8 +569,7 @@ TEST(ServiceWorkerDatabaseTest, PurgeableResourceIds) { |
| std::set<int64> ids_out; |
| EXPECT_TRUE(database->GetPurgeableResourceIds(&ids_out)); |
| - EXPECT_EQ(ids1.size(), ids_out.size()); |
| - EXPECT_TRUE(base::STLIncludes(ids1, ids_out)); |
| + EXPECT_EQ(ids1, ids_out); |
| // Write {2, 4}. |
| std::set<int64> ids2; |
| @@ -608,11 +579,8 @@ TEST(ServiceWorkerDatabaseTest, PurgeableResourceIds) { |
| ids_out.clear(); |
| EXPECT_TRUE(database->GetPurgeableResourceIds(&ids_out)); |
| - EXPECT_EQ(4U, ids_out.size()); |
| - EXPECT_TRUE(ContainsKey(ids_out, 1)); |
| - EXPECT_TRUE(ContainsKey(ids_out, 2)); |
| - EXPECT_TRUE(ContainsKey(ids_out, 3)); |
| - EXPECT_TRUE(ContainsKey(ids_out, 4)); |
| + std::set<int64> expected = base::STLSetUnion<std::set<int64> >(ids1, ids2); |
| + EXPECT_EQ(expected, ids_out); |
| // Delete {2, 3}. |
| std::set<int64> ids3; |
| @@ -622,9 +590,8 @@ TEST(ServiceWorkerDatabaseTest, PurgeableResourceIds) { |
| ids_out.clear(); |
| EXPECT_TRUE(database->GetPurgeableResourceIds(&ids_out)); |
| - EXPECT_EQ(2U, ids_out.size()); |
| - EXPECT_TRUE(ContainsKey(ids_out, 1)); |
| - EXPECT_TRUE(ContainsKey(ids_out, 4)); |
| + expected = base::STLSetDifference<std::set<int64> >(expected, ids3); |
| + EXPECT_EQ(expected, ids_out); |
| } |
| TEST(ServiceWorkerDatabaseTest, DeleteAllDataForOrigin) { |