diff options
Diffstat (limited to 'chromium/components/variations/caching_permuted_entropy_provider_unittest.cc')
-rw-r--r-- | chromium/components/variations/caching_permuted_entropy_provider_unittest.cc | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/chromium/components/variations/caching_permuted_entropy_provider_unittest.cc b/chromium/components/variations/caching_permuted_entropy_provider_unittest.cc new file mode 100644 index 00000000000..c7139d8e1e2 --- /dev/null +++ b/chromium/components/variations/caching_permuted_entropy_provider_unittest.cc @@ -0,0 +1,54 @@ +// Copyright 2014 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 "components/variations/caching_permuted_entropy_provider.h" + +#include <stddef.h> + +#include <string> + +#include "base/macros.h" +#include "components/prefs/testing_pref_service.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace metrics { + +// Size of the low entropy source to use for the permuted entropy provider +// in tests. +const size_t kMaxLowEntropySize = 8000; + +// Field trial names used in unit tests. +const char* const kTestTrialNames[] = {"TestTrial", "AnotherTestTrial", + "NewTabButton"}; + +TEST(CachingPermutedEntropyProviderTest, HasConsistentResults) { + TestingPrefServiceSimple prefs; + CachingPermutedEntropyProvider::RegisterPrefs(prefs.registry()); + const int kEntropyValue = 1234; + + // Check that the caching provider returns the same results as the non caching + // one. Loop over the trial names twice, to test that caching returns the + // expected results. + PermutedEntropyProvider provider(kEntropyValue, kMaxLowEntropySize); + for (size_t i = 0; i < 2 * arraysize(kTestTrialNames); ++i) { + CachingPermutedEntropyProvider cached_provider( + &prefs, kEntropyValue, kMaxLowEntropySize); + const std::string trial_name = + kTestTrialNames[i % arraysize(kTestTrialNames)]; + EXPECT_DOUBLE_EQ(provider.GetEntropyForTrial(trial_name, 0), + cached_provider.GetEntropyForTrial(trial_name, 0)); + } + + // Now, do the same test re-using the same caching provider. + CachingPermutedEntropyProvider cached_provider( + &prefs, kEntropyValue, kMaxLowEntropySize); + for (size_t i = 0; i < 2 * arraysize(kTestTrialNames); ++i) { + const std::string trial_name = + kTestTrialNames[i % arraysize(kTestTrialNames)]; + EXPECT_DOUBLE_EQ(provider.GetEntropyForTrial(trial_name, 0), + cached_provider.GetEntropyForTrial(trial_name, 0)); + } +} + +} // namespace metrics |