blob: 76ae22bb9f5f15d435530c9422afdbd33a90526c [file]
// Copyright 2022 The Chromium Authors
// 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::DictValue());
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::DictValue 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::DictValue 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