blob: da38b3963b66b19db43f3c13ad84c7be825656bd [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/invalidation/public/topic_invalidation_map.h"
#include <memory>
#include "testing/gtest/include/gtest/gtest.h"
namespace invalidation {
namespace {
// TODO(crbug.com/1056651): some methods aren't covered by tests, it's likely
// worth adding them (especially for ToValue(), which is passed to js code).
class TopicInvalidationMapTest : public testing::Test {
public:
TopicInvalidationMapTest()
: kTopicOne("one"),
kTopicTwo("two"),
kInv1(Invalidation::Init(kTopicOne, 10, "ten")) {
set1_.insert(kTopicOne);
set2_.insert(kTopicTwo);
all_set_.insert(kTopicOne);
all_set_.insert(kTopicTwo);
one_invalidation_.Insert(kInv1);
invalidate_all_.Insert(Invalidation::InitUnknownVersion(kTopicOne));
invalidate_all_.Insert(Invalidation::InitUnknownVersion(kTopicTwo));
}
~TopicInvalidationMapTest() override = default;
protected:
const Topic kTopicOne;
const Topic kTopicTwo;
const Invalidation kInv1;
TopicSet set1_;
TopicSet set2_;
TopicSet all_set_;
TopicInvalidationMap empty_;
TopicInvalidationMap one_invalidation_;
TopicInvalidationMap invalidate_all_;
};
TEST_F(TopicInvalidationMapTest, Empty) {
EXPECT_TRUE(empty_.Empty());
EXPECT_FALSE(one_invalidation_.Empty());
EXPECT_FALSE(invalidate_all_.Empty());
}
TEST_F(TopicInvalidationMapTest, Equality) {
// TODO(crbug.com/1056651): equality operator is only used in tests, so maybe
// factor it away from the TopicInvalidationMap.
TopicInvalidationMap empty2;
EXPECT_EQ(empty_, empty2);
TopicInvalidationMap one_invalidation_2;
one_invalidation_2.Insert(kInv1);
EXPECT_EQ(one_invalidation_, one_invalidation_2);
EXPECT_FALSE(empty_ == invalidate_all_);
}
TEST_F(TopicInvalidationMapTest, GetTopics) {
EXPECT_EQ(TopicSet(), empty_.GetTopics());
EXPECT_EQ(set1_, one_invalidation_.GetTopics());
EXPECT_EQ(all_set_, invalidate_all_.GetTopics());
}
TEST_F(TopicInvalidationMapTest, GetSubsetWithTopics) {
EXPECT_TRUE(empty_.GetSubsetWithTopics(set1_).Empty());
EXPECT_EQ(one_invalidation_.GetSubsetWithTopics(set1_), one_invalidation_);
EXPECT_EQ(one_invalidation_.GetSubsetWithTopics(all_set_), one_invalidation_);
EXPECT_TRUE(one_invalidation_.GetSubsetWithTopics(set2_).Empty());
EXPECT_TRUE(invalidate_all_.GetSubsetWithTopics(TopicSet()).Empty());
}
} // namespace
} // namespace invalidation