Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / chrome / common / metrics / caching_permuted_entropy_provider_unittest.cc
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/common/metrics/caching_permuted_entropy_provider.h"
6
7 #include <string>
8
9 #include "base/basictypes.h"
10 #include "base/prefs/testing_pref_service.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 namespace metrics {
14
15 // Size of the low entropy source to use for the permuted entropy provider
16 // in tests.
17 const size_t kMaxLowEntropySize = 8000;
18
19 // Field trial names used in unit tests.
20 const char* const kTestTrialNames[] = { "TestTrial", "AnotherTestTrial",
21                                         "NewTabButton" };
22
23 TEST(CachingPermutedEntropyProviderTest, HasConsistentResults) {
24   TestingPrefServiceSimple prefs;
25   CachingPermutedEntropyProvider::RegisterPrefs(prefs.registry());
26   const int kEntropyValue = 1234;
27
28   // Check that the caching provider returns the same results as the non caching
29   // one. Loop over the trial names twice, to test that caching returns the
30   // expected results.
31   PermutedEntropyProvider provider(kEntropyValue, kMaxLowEntropySize);
32   for (size_t i = 0; i < 2 * arraysize(kTestTrialNames); ++i) {
33     CachingPermutedEntropyProvider cached_provider(&prefs, kEntropyValue,
34                                                    kMaxLowEntropySize);
35     const std::string trial_name =
36         kTestTrialNames[i % arraysize(kTestTrialNames)];
37     EXPECT_DOUBLE_EQ(provider.GetEntropyForTrial(trial_name, 0),
38                      cached_provider.GetEntropyForTrial(trial_name, 0));
39   }
40
41   // Now, do the same test re-using the same caching provider.
42   CachingPermutedEntropyProvider cached_provider(&prefs, kEntropyValue,
43                                                  kMaxLowEntropySize);
44   for (size_t i = 0; i < 2 * arraysize(kTestTrialNames); ++i) {
45     const std::string trial_name =
46         kTestTrialNames[i % arraysize(kTestTrialNames)];
47     EXPECT_DOUBLE_EQ(provider.GetEntropyForTrial(trial_name, 0),
48                      cached_provider.GetEntropyForTrial(trial_name, 0));
49   }
50 }
51
52 }  // namespace metrics