blob: 8094feef14901d14a31be4507038e457bfa6824f [file] [log] [blame]
// Copyright 2022 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/browsing_topics/topic_and_domains.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace browsing_topics {
class TopicAndDomainsTest : public testing::Test {};
TEST_F(TopicAndDomainsTest, FromEmptyDictionaryValue) {
TopicAndDomains read_topic_and_domains =
TopicAndDomains::FromDictValue(base::Value::Dict());
EXPECT_FALSE(read_topic_and_domains.IsValid());
EXPECT_EQ(read_topic_and_domains.topic(), Topic(0));
EXPECT_TRUE(read_topic_and_domains.hashed_domains().empty());
}
TEST_F(TopicAndDomainsTest, EmptyTopicAndDomains_ToAndFromDictValue) {
TopicAndDomains topic_and_domains;
base::Value::Dict dict_value = topic_and_domains.ToDictValue();
TopicAndDomains read_topic_and_domains =
TopicAndDomains::FromDictValue(dict_value);
EXPECT_FALSE(read_topic_and_domains.IsValid());
EXPECT_EQ(read_topic_and_domains.topic(), Topic(0));
EXPECT_TRUE(read_topic_and_domains.hashed_domains().empty());
}
TEST_F(TopicAndDomainsTest, PopulatedTopicAndDomains_ToAndFromValue) {
TopicAndDomains topic_and_domains(
Topic(2),
/*hashed_domains=*/{HashedDomain(123), HashedDomain(456)});
base::Value::Dict dict_value = topic_and_domains.ToDictValue();
TopicAndDomains read_topic_and_domains =
TopicAndDomains::FromDictValue(dict_value);
EXPECT_TRUE(read_topic_and_domains.IsValid());
EXPECT_EQ(read_topic_and_domains.topic(), Topic(2));
EXPECT_EQ(read_topic_and_domains.hashed_domains(),
std::set({HashedDomain(123), HashedDomain(456)}));
}
TEST_F(TopicAndDomainsTest, ClearDomain) {
TopicAndDomains topic_and_domains(
Topic(2),
/*hashed_domains=*/{HashedDomain(123), HashedDomain(456)});
topic_and_domains.ClearDomain(HashedDomain(123));
EXPECT_EQ(topic_and_domains.topic(), Topic(2));
EXPECT_EQ(topic_and_domains.hashed_domains().size(), 1u);
EXPECT_EQ(*topic_and_domains.hashed_domains().begin(), HashedDomain(456));
}
} // namespace browsing_topics