• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 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 "components/variations/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 
TEST(CachingPermutedEntropyProviderTest,HasConsistentResults)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(
34         &prefs, kEntropyValue, 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(
43       &prefs, kEntropyValue, 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
53