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