Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3898)

Unified Diff: chrome/browser/metrics/perf/random_selector_unittest.cc

Issue 1392153003: PerfProvider: Get collection parameters from Finch (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@perf_commands
Patch Set: Address comments on PS1 Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/metrics/perf/random_selector_unittest.cc
diff --git a/chrome/browser/metrics/perf/random_selector_unittest.cc b/chrome/browser/metrics/perf/random_selector_unittest.cc
index d88a03251c25c07bdf3cc3e8a743426ba7a3995a..d6eb0087dcb8ba0a742733625dce19e3f9f1cea6 100644
--- a/chrome/browser/metrics/perf/random_selector_unittest.cc
+++ b/chrome/browser/metrics/perf/random_selector_unittest.cc
@@ -84,8 +84,9 @@ TEST(RandomSelector, SimpleAccessors) {
odds.push_back(WeightAndValue(107, "c bar"));
EXPECT_EQ(111.0L, RandomSelector::SumWeights(odds));
RandomSelector random_selector;
- random_selector.SetOdds(odds);
+ EXPECT_TRUE(random_selector.SetOdds(odds));
EXPECT_EQ(3UL, random_selector.num_values());
+ EXPECT_EQ(odds, random_selector.odds());
}
// Ensure RandomSelector is able to generate results from given odds.
@@ -97,10 +98,47 @@ TEST(RandomSelector, GenerateTest) {
odds.push_back(WeightAndValue(2, "b --help"));
odds.push_back(WeightAndValue(3, "c bar"));
RandomSelectorWithCustomRNG random_selector(kLargeNumber);
- random_selector.SetOdds(odds);
+ EXPECT_TRUE(random_selector.SetOdds(odds));
// Generate a lot of values.
std::map<std::string, int> results;
GenerateResults(kLargeNumber, &random_selector, &results);
// Ensure the values and odds are related.
CheckResultsAgainstOdds(odds, results);
}
+
+TEST(RandomSelector, InvalidWeights) {
+ using WeightAndValue = RandomSelector::WeightAndValue;
+ std::vector<RandomSelector::WeightAndValue> good_odds;
+ good_odds.push_back(WeightAndValue(1, "a 1"));
+ good_odds.push_back(WeightAndValue(2, "b --help"));
+ good_odds.push_back(WeightAndValue(3, "c bar"));
+ RandomSelector random_selector;
+ EXPECT_TRUE(random_selector.SetOdds(good_odds));
+ EXPECT_EQ(good_odds, random_selector.odds());
+
+ std::vector<RandomSelector::WeightAndValue> bad_odds;
+ bad_odds.push_back(WeightAndValue(1, "a 1"));
+ bad_odds.push_back(WeightAndValue(2, "b --help"));
+ bad_odds.push_back(WeightAndValue(-3.5, "c bar"));
+ EXPECT_FALSE(random_selector.SetOdds(bad_odds));
+ EXPECT_EQ(good_odds, random_selector.odds());
+
+ bad_odds[2].weight = 0.0;
+ EXPECT_FALSE(random_selector.SetOdds(bad_odds));
+ EXPECT_EQ(good_odds, random_selector.odds());
+}
+
+TEST(RandomSelector, EmptyWeights) {
+ using WeightAndValue = RandomSelector::WeightAndValue;
+ std::vector<RandomSelector::WeightAndValue> good_odds;
+ good_odds.push_back(WeightAndValue(1, "a 1"));
+ good_odds.push_back(WeightAndValue(2, "b --help"));
+ good_odds.push_back(WeightAndValue(3, "c bar"));
+ RandomSelector random_selector;
+ EXPECT_TRUE(random_selector.SetOdds(good_odds));
+ EXPECT_EQ(good_odds, random_selector.odds());
+
+ std::vector<RandomSelector::WeightAndValue> empty_odds;
+ EXPECT_FALSE(random_selector.SetOdds(empty_odds));
+ EXPECT_EQ(good_odds, random_selector.odds());
+}

Powered by Google App Engine
This is Rietveld 408576698