Home | History | Annotate | Download | only in notifier
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "sync/notifier/object_id_invalidation_map.h"
      6 
      7 #include "google/cacheinvalidation/types.pb.h"
      8 
      9 #include "testing/gtest/include/gtest/gtest.h"
     10 
     11 namespace syncer {
     12 
     13 namespace {
     14 
     15 class ObjectIdInvalidationMapTest : public testing::Test {
     16  public:
     17   ObjectIdInvalidationMapTest()
     18       : kIdOne(ipc::invalidation::ObjectSource::TEST, "one"),
     19         kIdTwo(ipc::invalidation::ObjectSource::TEST, "two"),
     20         kInv1(Invalidation::Init(kIdOne, 10, "ten")) {
     21     set1.insert(kIdOne);
     22     set2.insert(kIdTwo);
     23     all_set.insert(kIdOne);
     24     all_set.insert(kIdTwo);
     25 
     26     one_invalidation.Insert(kInv1);
     27     invalidate_all = ObjectIdInvalidationMap::InvalidateAll(all_set);
     28   }
     29 
     30  protected:
     31   const invalidation::ObjectId kIdOne;
     32   const invalidation::ObjectId kIdTwo;
     33   const Invalidation kInv1;
     34 
     35   ObjectIdSet set1;
     36   ObjectIdSet set2;
     37   ObjectIdSet all_set;
     38   ObjectIdInvalidationMap empty;
     39   ObjectIdInvalidationMap one_invalidation;
     40   ObjectIdInvalidationMap invalidate_all;
     41 };
     42 
     43 TEST_F(ObjectIdInvalidationMapTest, Empty) {
     44   EXPECT_TRUE(empty.Empty());
     45   EXPECT_FALSE(one_invalidation.Empty());
     46   EXPECT_FALSE(invalidate_all.Empty());
     47 }
     48 
     49 TEST_F(ObjectIdInvalidationMapTest, Equality) {
     50   ObjectIdInvalidationMap empty2;
     51   EXPECT_TRUE(empty == empty2);
     52 
     53   ObjectIdInvalidationMap one_invalidation2;
     54   one_invalidation2.Insert(kInv1);
     55   EXPECT_TRUE(one_invalidation == one_invalidation2);
     56 
     57   EXPECT_FALSE(empty == invalidate_all);
     58 }
     59 
     60 TEST_F(ObjectIdInvalidationMapTest, GetObjectIds) {
     61   EXPECT_EQ(ObjectIdSet(), empty.GetObjectIds());
     62   EXPECT_EQ(set1, one_invalidation.GetObjectIds());
     63   EXPECT_EQ(all_set, invalidate_all.GetObjectIds());
     64 }
     65 
     66 TEST_F(ObjectIdInvalidationMapTest, GetSubsetWithObjectIds) {
     67   EXPECT_TRUE(empty.GetSubsetWithObjectIds(set1).Empty());
     68 
     69   EXPECT_TRUE(one_invalidation.GetSubsetWithObjectIds(set1) ==
     70               one_invalidation);
     71   EXPECT_TRUE(one_invalidation.GetSubsetWithObjectIds(all_set) ==
     72               one_invalidation);
     73   EXPECT_TRUE(one_invalidation.GetSubsetWithObjectIds(set2).Empty());
     74 
     75   EXPECT_TRUE(invalidate_all.GetSubsetWithObjectIds(ObjectIdSet()).Empty());
     76 }
     77 
     78 TEST_F(ObjectIdInvalidationMapTest, SerializeEmpty) {
     79   scoped_ptr<base::ListValue> value = empty.ToValue();
     80   ASSERT_TRUE(value.get());
     81   ObjectIdInvalidationMap deserialized;
     82   deserialized.ResetFromValue(*value.get());
     83   EXPECT_TRUE(empty == deserialized);
     84 }
     85 
     86 TEST_F(ObjectIdInvalidationMapTest, SerializeOneInvalidation) {
     87   scoped_ptr<base::ListValue> value = one_invalidation.ToValue();
     88   ASSERT_TRUE(value.get());
     89   ObjectIdInvalidationMap deserialized;
     90   deserialized.ResetFromValue(*value.get());
     91   EXPECT_TRUE(one_invalidation == deserialized);
     92 }
     93 
     94 TEST_F(ObjectIdInvalidationMapTest, SerializeInvalidateAll) {
     95   scoped_ptr<base::ListValue> value = invalidate_all.ToValue();
     96   ASSERT_TRUE(value.get());
     97   ObjectIdInvalidationMap deserialized;
     98   deserialized.ResetFromValue(*value.get());
     99   EXPECT_TRUE(invalidate_all == deserialized);
    100 }
    101 
    102 }  // namespace
    103 
    104 }  // namespace syncer
    105