1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// found in the LICENSE file. 44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/invalidation/object_id_invalidation_map.h" 64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "google/cacheinvalidation/types.pb.h" 84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace syncer { 124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace { 144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class ObjectIdInvalidationMapTest : public testing::Test { 164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public: 174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ObjectIdInvalidationMapTest() 184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) : kIdOne(ipc::invalidation::ObjectSource::TEST, "one"), 194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) kIdTwo(ipc::invalidation::ObjectSource::TEST, "two"), 204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) kInv1(Invalidation::Init(kIdOne, 10, "ten")) { 214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) set1.insert(kIdOne); 224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) set2.insert(kIdTwo); 234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) all_set.insert(kIdOne); 244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) all_set.insert(kIdTwo); 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) one_invalidation.Insert(kInv1); 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) invalidate_all = ObjectIdInvalidationMap::InvalidateAll(all_set); 284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) protected: 314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) const invalidation::ObjectId kIdOne; 324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) const invalidation::ObjectId kIdTwo; 334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) const Invalidation kInv1; 344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ObjectIdSet set1; 364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ObjectIdSet set2; 374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ObjectIdSet all_set; 384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ObjectIdInvalidationMap empty; 394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ObjectIdInvalidationMap one_invalidation; 404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ObjectIdInvalidationMap invalidate_all; 414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}; 424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(ObjectIdInvalidationMapTest, Empty) { 444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_TRUE(empty.Empty()); 454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_FALSE(one_invalidation.Empty()); 464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_FALSE(invalidate_all.Empty()); 474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(ObjectIdInvalidationMapTest, Equality) { 504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ObjectIdInvalidationMap empty2; 514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_TRUE(empty == empty2); 524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ObjectIdInvalidationMap one_invalidation2; 544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) one_invalidation2.Insert(kInv1); 554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_TRUE(one_invalidation == one_invalidation2); 564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_FALSE(empty == invalidate_all); 584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(ObjectIdInvalidationMapTest, GetObjectIds) { 614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(ObjectIdSet(), empty.GetObjectIds()); 624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(set1, one_invalidation.GetObjectIds()); 634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(all_set, invalidate_all.GetObjectIds()); 644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(ObjectIdInvalidationMapTest, GetSubsetWithObjectIds) { 674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_TRUE(empty.GetSubsetWithObjectIds(set1).Empty()); 684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_TRUE(one_invalidation.GetSubsetWithObjectIds(set1) == 704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) one_invalidation); 714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_TRUE(one_invalidation.GetSubsetWithObjectIds(all_set) == 724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) one_invalidation); 734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_TRUE(one_invalidation.GetSubsetWithObjectIds(set2).Empty()); 744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_TRUE(invalidate_all.GetSubsetWithObjectIds(ObjectIdSet()).Empty()); 764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(ObjectIdInvalidationMapTest, SerializeEmpty) { 794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) scoped_ptr<base::ListValue> value = empty.ToValue(); 804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(value.get()); 814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ObjectIdInvalidationMap deserialized; 824e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) deserialized.ResetFromValue(*value.get()); 834e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_TRUE(empty == deserialized); 844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(ObjectIdInvalidationMapTest, SerializeOneInvalidation) { 874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) scoped_ptr<base::ListValue> value = one_invalidation.ToValue(); 884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(value.get()); 894e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ObjectIdInvalidationMap deserialized; 904e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) deserialized.ResetFromValue(*value.get()); 914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_TRUE(one_invalidation == deserialized); 924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(ObjectIdInvalidationMapTest, SerializeInvalidateAll) { 954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) scoped_ptr<base::ListValue> value = invalidate_all.ToValue(); 964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(value.get()); 974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ObjectIdInvalidationMap deserialized; 984e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) deserialized.ResetFromValue(*value.get()); 994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_TRUE(invalidate_all == deserialized); 1004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 1014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} // namespace 1034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} // namespace syncer 105