// Copyright 2024 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/test/metrics/action_suffix_reader.h" #include #include #include "base/containers/contains.h" #include "testing/gtest/include/gtest/gtest.h" namespace base { constexpr char kTestActionXml[] = R"( notarealuser@google.com This is an action )"; // Forward declare the private entry point for testing. This prevents having to // import XmlReader, which is visible from base::test_support, but not // base_unittests. extern std::vector ReadActionSuffixesForActionForTesting( const std::string& xml_string, const std::string& affected_action); TEST(ActionSuffixReaderTest, NoSuffixesFound) { const auto results = ReadActionSuffixesForActionForTesting( kTestActionXml, "Action.DoesNotExist"); EXPECT_TRUE(results.empty()); } TEST(ActionSuffixReaderTest, OneResult) { const auto results = ReadActionSuffixesForActionForTesting( kTestActionXml, "Action.WithSuffix3"); EXPECT_EQ(1U, results.size()); EXPECT_EQ(1U, results[0].size()); EXPECT_TRUE(Contains(results[0], "Suffix3")); } TEST(ActionSuffixReaderTest, OneResultFromBlockWithOtherActions) { const auto results = ReadActionSuffixesForActionForTesting( kTestActionXml, "Action.WithSuffix2"); EXPECT_EQ(1U, results.size()); EXPECT_EQ(2U, results[0].size()); EXPECT_TRUE(Contains(results[0], "Suffix1")); EXPECT_TRUE(Contains(results[0], "Suffix2")); } TEST(ActionSuffixReaderTest, MultipleResults) { const auto results = ReadActionSuffixesForActionForTesting( kTestActionXml, "Action.WithSuffix1"); EXPECT_EQ(2U, results.size()); EXPECT_EQ(2U, results[0].size()); EXPECT_TRUE(Contains(results[0], "Suffix1")); EXPECT_TRUE(Contains(results[0], "Suffix2")); EXPECT_EQ(1U, results[1].size()); EXPECT_TRUE(Contains(results[1], "Suffix4")); } TEST(ActionSuffixReaderTest, CallActualMethod) { const auto results = ReadActionSuffixesForAction("Action.DoesNotExist"); EXPECT_TRUE(results.empty()); } } // namespace base