1 // Copyright 2022 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "components/browsing_topics/topic_and_domains.h"
7 #include "testing/gtest/include/gtest/gtest.h"
9 namespace browsing_topics {
11 class TopicAndDomainsTest : public testing::Test {};
13 TEST_F(TopicAndDomainsTest, FromEmptyDictionaryValue) {
14 TopicAndDomains read_topic_and_domains =
15 TopicAndDomains::FromDictValue(base::Value::Dict());
17 EXPECT_FALSE(read_topic_and_domains.IsValid());
18 EXPECT_EQ(read_topic_and_domains.topic(), Topic(0));
19 EXPECT_TRUE(read_topic_and_domains.hashed_domains().empty());
22 TEST_F(TopicAndDomainsTest, EmptyTopicAndDomains_ToAndFromDictValue) {
23 TopicAndDomains topic_and_domains;
25 base::Value::Dict dict_value = topic_and_domains.ToDictValue();
26 TopicAndDomains read_topic_and_domains =
27 TopicAndDomains::FromDictValue(dict_value);
29 EXPECT_FALSE(read_topic_and_domains.IsValid());
30 EXPECT_EQ(read_topic_and_domains.topic(), Topic(0));
31 EXPECT_TRUE(read_topic_and_domains.hashed_domains().empty());
34 TEST_F(TopicAndDomainsTest, PopulatedTopicAndDomains_ToAndFromValue) {
35 TopicAndDomains topic_and_domains(
37 /*hashed_domains=*/{HashedDomain(123), HashedDomain(456)});
39 base::Value::Dict dict_value = topic_and_domains.ToDictValue();
40 TopicAndDomains read_topic_and_domains =
41 TopicAndDomains::FromDictValue(dict_value);
43 EXPECT_TRUE(read_topic_and_domains.IsValid());
44 EXPECT_EQ(read_topic_and_domains.topic(), Topic(2));
45 EXPECT_EQ(read_topic_and_domains.hashed_domains(),
46 std::set({HashedDomain(123), HashedDomain(456)}));
49 TEST_F(TopicAndDomainsTest, ClearDomain) {
50 TopicAndDomains topic_and_domains(
52 /*hashed_domains=*/{HashedDomain(123), HashedDomain(456)});
54 topic_and_domains.ClearDomain(HashedDomain(123));
56 EXPECT_EQ(topic_and_domains.topic(), Topic(2));
57 EXPECT_EQ(topic_and_domains.hashed_domains().size(), 1u);
58 EXPECT_EQ(*topic_and_domains.hashed_domains().begin(), HashedDomain(456));
61 } // namespace browsing_topics