| Index: chrome/installer/util/l10n_string_util_unittest.cc
|
| diff --git a/chrome/installer/util/l10n_string_util_unittest.cc b/chrome/installer/util/l10n_string_util_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ffa560303a15bdf5cd1c1046ca7d3c0e6007985a
|
| --- /dev/null
|
| +++ b/chrome/installer/util/l10n_string_util_unittest.cc
|
| @@ -0,0 +1,79 @@
|
| +// Copyright 2017 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 "chrome/installer/util/l10n_string_util.h"
|
| +
|
| +#include "base/macros.h"
|
| +#include "chrome/install_static/install_modes.h"
|
| +#include "chrome/install_static/test/scoped_install_details.h"
|
| +#include "chrome/installer/util/installer_util_strings.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +namespace installer {
|
| +
|
| +// Test that each mode-specific string has a distinct value among the brand's
|
| +// install modes.
|
| +TEST(GetLocalizedStringTest, DistinctStrings) {
|
| + static constexpr int kStringIds[] = {
|
| +// Generate the list of mode-specific string IDs.
|
| +#define HANDLE_MODE_STRING(id, ...) id,
|
| + DO_MODE_STRINGS
|
| +#undef HANDLE_MODE_STRING
|
| + };
|
| + for (int string_id : kStringIds) {
|
| + SCOPED_TRACE(testing::Message() << "message id: " << string_id);
|
| + std::set<base::string16> the_strings;
|
| + for (int mode_index = 0; mode_index < install_static::NUM_INSTALL_MODES;
|
| + ++mode_index) {
|
| + SCOPED_TRACE(testing::Message() << "install mode index: " << mode_index);
|
| + install_static::ScopedInstallDetails install_details(false, mode_index);
|
| + base::string16 the_string = GetLocalizedString(string_id);
|
| + ASSERT_FALSE(the_string.empty());
|
| + EXPECT_TRUE(the_strings.insert(the_string).second)
|
| + << the_string << " is found in more than one install mode.";
|
| + }
|
| + }
|
| +}
|
| +
|
| +#if defined(GOOGLE_CHROME_BUILD)
|
| +// Test that the mode-specific string mappings are correct for Google Chrome
|
| +// builds.
|
| +TEST(GetBaseMessageIdForMode, GoogleStringIds) {
|
| + // The list of string ids that are mapped based on the install mode. This
|
| + // matches the top-level identifiers in create_string_rc.py's
|
| + // MODE_SPECIFIC_STRINGS data structure.
|
| + std::vector<int> input_ids({IDS_APP_SHORTCUTS_SUBDIR_NAME_BASE,
|
| + IDS_INBOUND_MDNS_RULE_DESCRIPTION_BASE,
|
| + IDS_INBOUND_MDNS_RULE_NAME_BASE,
|
| + IDS_PRODUCT_NAME_BASE});
|
| +
|
| + // A map from an install mode index to its mode-specific string identifiers.
|
| + std::map<int, std::vector<int>> mode_to_strings;
|
| + mode_to_strings[install_static::STABLE_INDEX] = std::vector<int>(
|
| + {IDS_APP_SHORTCUTS_SUBDIR_NAME_BASE,
|
| + IDS_INBOUND_MDNS_RULE_DESCRIPTION_BASE, IDS_INBOUND_MDNS_RULE_NAME_BASE,
|
| + IDS_PRODUCT_NAME_BASE});
|
| + mode_to_strings[install_static::CANARY_INDEX] = std::vector<int>(
|
| + {IDS_APP_SHORTCUTS_SUBDIR_NAME_CANARY_BASE,
|
| + IDS_INBOUND_MDNS_RULE_DESCRIPTION_CANARY_BASE,
|
| + IDS_INBOUND_MDNS_RULE_NAME_CANARY_BASE, IDS_SXS_SHORTCUT_NAME_BASE});
|
| +
|
| + // Run through all install modes, checking that the mode-specific strings are
|
| + // mapped properly by GetBaseMessageIdForMode.
|
| + ASSERT_EQ(install_static::NUM_INSTALL_MODES, mode_to_strings.size());
|
| + for (int mode_index = 0; mode_index < install_static::NUM_INSTALL_MODES;
|
| + ++mode_index) {
|
| + SCOPED_TRACE(testing::Message() << "install mode index: " << mode_index);
|
| + ASSERT_EQ(1, mode_to_strings.count(mode_index));
|
| + const auto& mode_strings = mode_to_strings[mode_index];
|
| + ASSERT_EQ(mode_strings.size(), input_ids.size());
|
| +
|
| + install_static::ScopedInstallDetails install_details(false, mode_index);
|
| + for (size_t i = 0; i < input_ids.size(); ++i)
|
| + EXPECT_EQ(mode_strings[i], GetBaseMessageIdForMode(input_ids[i]));
|
| + }
|
| +}
|
| +#endif // defined(GOOGLE_CHROME_BUILD)
|
| +
|
| +} // namespace installer
|
|
|