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.
5 #include "components/variations/caching_permuted_entropy_provider.h"
9 #include "base/basictypes.h"
10 #include "base/prefs/testing_pref_service.h"
11 #include "testing/gtest/include/gtest/gtest.h"
15 // Size of the low entropy source to use for the permuted entropy provider
17 const size_t kMaxLowEntropySize
= 8000;
19 // Field trial names used in unit tests.
20 const char* const kTestTrialNames
[] = {"TestTrial", "AnotherTestTrial",
23 TEST(CachingPermutedEntropyProviderTest
, HasConsistentResults
) {
24 TestingPrefServiceSimple prefs
;
25 CachingPermutedEntropyProvider::RegisterPrefs(prefs
.registry());
26 const int kEntropyValue
= 1234;
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
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));
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));
52 } // namespace metrics