Chromium Code Reviews| Index: chrome/browser/profiles/profile_statistics_unittest.cc |
| diff --git a/chrome/browser/profiles/profile_statistics_unittest.cc b/chrome/browser/profiles/profile_statistics_unittest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..018363d8ee43cdf9f7068394e113bbe16c45d920 |
| --- /dev/null |
| +++ b/chrome/browser/profiles/profile_statistics_unittest.cc |
| @@ -0,0 +1,86 @@ |
| +// Copyright 2015 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 <map> |
| +#include <set> |
| +#include <vector> |
| + |
| +#include "chrome/browser/profiles/profile_statistics.h" |
| +#include "chrome/test/base/testing_browser_process.h" |
| +#include "chrome/test/base/testing_profile.h" |
| +#include "chrome/test/base/testing_profile_manager.h" |
| +#include "content/public/test/test_browser_thread_bundle.h" |
| +#include "testing/gtest/include/gtest/gtest.h" |
| + |
| +namespace { |
| +void VerifyStatisticsCache(Profile* profile, |
| + const std::map<std::string, int>& expected, |
|
lwchkg
2015/11/18 17:34:53
Wrong indent here. Done.
|
| + const std::vector<std::string>& categories_to_check) { |
| + ASSERT_TRUE(profile); |
| + |
| + const profiles::ProfileCategoryStats actual = |
| + profiles::GetProfileStatisticsFromCache(profile); |
| + |
| + EXPECT_EQ(categories_to_check.size(), actual.size()); |
| + |
| + std::set<std::string> checked; |
| + for (const auto& stat : actual) { |
| + bool has_category = expected.count(stat.category); |
| + EXPECT_EQ(has_category, stat.success); |
| + EXPECT_EQ(has_category ? expected.at(stat.category) : 0, stat.count); |
| + EXPECT_TRUE(checked.insert(stat.category).second); |
| + } |
| +} |
| +} // namespace |
| + |
| +class ProfileStatisticsTest : public testing::Test { |
| + public: |
| + ProfileStatisticsTest() : manager_(TestingBrowserProcess::GetGlobal()) {} |
| + ~ProfileStatisticsTest() override {} |
| + |
| + protected: |
| + void SetUp() override { |
| + ASSERT_TRUE(manager_.SetUp()); |
| + } |
| + |
| + void TearDown() override { |
| + } |
| + |
| + TestingProfileManager* manager() { return &manager_; } |
| + |
| + private: |
| + TestingProfileManager manager_; |
| + content::TestBrowserThreadBundle thread_bundle_; |
| +}; |
| + |
| +TEST_F(ProfileStatisticsTest, ProfileInfoCacheStorage) { |
| + TestingProfile* profile = manager()->CreateTestingProfile("Test 1"); |
| + ASSERT_TRUE(profile); |
| + |
| + std::vector<std::string> categories_to_check{ |
| + profiles::kProfileStatisticsBrowsingHistory, |
| + profiles::kProfileStatisticsPasswords, |
| + profiles::kProfileStatisticsBookmarks, |
| + profiles::kProfileStatisticsSettings |
| + }; |
| + |
| + std::vector<std::pair<std::string, int>> insertions; |
| + int num = 3; |
| + // Insert for the first round, overwrite for the second round. |
| + for (int i = 0; i < 2; i++) { |
| + for (const auto& category : categories_to_check) { |
| + insertions.push_back(std::make_pair(category, num++)); |
| + } |
| + } |
| + |
| + std::map<std::string, int> expected; |
| + // Now no keys are set. |
| + VerifyStatisticsCache(profile, expected, categories_to_check); |
| + // Insert items and test after each insert. |
| + for (const auto& item : insertions) { |
| + profiles::StoreProfileStatisticsToCache(profile, item.first, item.second); |
| + expected[item.first] = item.second; |
| + VerifyStatisticsCache(profile, expected, categories_to_check); |
| + } |
| +} |