OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/ntp_snippets/user_classifier.h" | 5 #include "components/ntp_snippets/user_classifier.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <string> | 8 #include <string> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 user_classifier->OnEvent(UserClassifier::Metric::SUGGESTIONS_USED); | 83 user_classifier->OnEvent(UserClassifier::Metric::SUGGESTIONS_USED); |
84 } | 84 } |
85 EXPECT_THAT(user_classifier->GetUserClass(), | 85 EXPECT_THAT(user_classifier->GetUserClass(), |
86 Eq(UserClassifier::UserClass::ACTIVE_SUGGESTIONS_CONSUMER)); | 86 Eq(UserClassifier::UserClass::ACTIVE_SUGGESTIONS_CONSUMER)); |
87 } | 87 } |
88 | 88 |
89 TEST_F(UserClassifierTest, | 89 TEST_F(UserClassifierTest, |
90 ShouldBecomeActiveSuggestionsConsumerByClickingOftenWithDecreasedParam) { | 90 ShouldBecomeActiveSuggestionsConsumerByClickingOftenWithDecreasedParam) { |
91 // Increase the param to one half. | 91 // Increase the param to one half. |
92 variations::testing::VariationParamsManager variation_params( | 92 variations::testing::VariationParamsManager variation_params( |
93 kStudyName, | 93 kArticleSuggestionsFeature.name, |
94 {{"user_classifier_active_consumer_clicks_at_least_once_per_hours", | 94 {{"user_classifier_active_consumer_clicks_at_least_once_per_hours", |
95 "36"}}, | 95 "36"}}, |
96 {kArticleSuggestionsFeature.name}); | 96 {kArticleSuggestionsFeature.name}); |
97 UserClassifier* user_classifier = CreateUserClassifier(); | 97 UserClassifier* user_classifier = CreateUserClassifier(); |
98 | 98 |
99 // After two clicks still only an active user. | 99 // After two clicks still only an active user. |
100 user_classifier->OnEvent(UserClassifier::Metric::SUGGESTIONS_USED); | 100 user_classifier->OnEvent(UserClassifier::Metric::SUGGESTIONS_USED); |
101 test_clock()->Advance(base::TimeDelta::FromHours(1)); | 101 test_clock()->Advance(base::TimeDelta::FromHours(1)); |
102 user_classifier->OnEvent(UserClassifier::Metric::SUGGESTIONS_USED); | 102 user_classifier->OnEvent(UserClassifier::Metric::SUGGESTIONS_USED); |
103 EXPECT_THAT(user_classifier->GetUserClass(), | 103 EXPECT_THAT(user_classifier->GetUserClass(), |
(...skipping 17 matching lines...) Expand all Loading... |
121 // Two more days to become a rare user. | 121 // Two more days to become a rare user. |
122 test_clock()->Advance(base::TimeDelta::FromDays(2)); | 122 test_clock()->Advance(base::TimeDelta::FromDays(2)); |
123 EXPECT_THAT(user_classifier->GetUserClass(), | 123 EXPECT_THAT(user_classifier->GetUserClass(), |
124 Eq(UserClassifier::UserClass::RARE_NTP_USER)); | 124 Eq(UserClassifier::UserClass::RARE_NTP_USER)); |
125 } | 125 } |
126 | 126 |
127 TEST_F(UserClassifierTest, | 127 TEST_F(UserClassifierTest, |
128 ShouldBecomeRareNtpUserByNoActivityWithDecreasedParam) { | 128 ShouldBecomeRareNtpUserByNoActivityWithDecreasedParam) { |
129 // Decrease the param to one half. | 129 // Decrease the param to one half. |
130 variations::testing::VariationParamsManager variation_params( | 130 variations::testing::VariationParamsManager variation_params( |
131 kStudyName, | 131 kArticleSuggestionsFeature.name, |
132 {{"user_classifier_rare_user_opens_ntp_at_most_once_per_hours", "48"}}, | 132 {{"user_classifier_rare_user_opens_ntp_at_most_once_per_hours", "48"}}, |
133 {kArticleSuggestionsFeature.name}); | 133 {kArticleSuggestionsFeature.name}); |
134 UserClassifier* user_classifier = CreateUserClassifier(); | 134 UserClassifier* user_classifier = CreateUserClassifier(); |
135 | 135 |
136 // After one days of waiting still an active user. | 136 // After one days of waiting still an active user. |
137 test_clock()->Advance(base::TimeDelta::FromDays(1)); | 137 test_clock()->Advance(base::TimeDelta::FromDays(1)); |
138 EXPECT_THAT(user_classifier->GetUserClass(), | 138 EXPECT_THAT(user_classifier->GetUserClass(), |
139 Eq(UserClassifier::UserClass::ACTIVE_NTP_USER)); | 139 Eq(UserClassifier::UserClass::ACTIVE_NTP_USER)); |
140 | 140 |
141 // One more day to become a rare user. | 141 // One more day to become a rare user. |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 double old_metric = user_classifier->GetEstimatedAvgTime(metric); | 223 double old_metric = user_classifier->GetEstimatedAvgTime(metric); |
224 user_classifier->OnEvent(metric); | 224 user_classifier->OnEvent(metric); |
225 EXPECT_THAT(user_classifier->GetEstimatedAvgTime(metric), Lt(old_metric)); | 225 EXPECT_THAT(user_classifier->GetEstimatedAvgTime(metric), Lt(old_metric)); |
226 } | 226 } |
227 | 227 |
228 TEST_P(UserClassifierMetricTest, | 228 TEST_P(UserClassifierMetricTest, |
229 ShouldIgnoreSubsequentEventsWithIncreasedLimit) { | 229 ShouldIgnoreSubsequentEventsWithIncreasedLimit) { |
230 UserClassifier::Metric metric = GetParam().first; | 230 UserClassifier::Metric metric = GetParam().first; |
231 // Increase the min_hours to 1.0, i.e. 60 minutes. | 231 // Increase the min_hours to 1.0, i.e. 60 minutes. |
232 variations::testing::VariationParamsManager variation_params( | 232 variations::testing::VariationParamsManager variation_params( |
233 kStudyName, {{"user_classifier_min_hours", "1.0"}}, | 233 kArticleSuggestionsFeature.name, {{"user_classifier_min_hours", "1.0"}}, |
234 {kArticleSuggestionsFeature.name}); | 234 {kArticleSuggestionsFeature.name}); |
235 UserClassifier* user_classifier = CreateUserClassifier(); | 235 UserClassifier* user_classifier = CreateUserClassifier(); |
236 | 236 |
237 // The initial event | 237 // The initial event |
238 user_classifier->OnEvent(metric); | 238 user_classifier->OnEvent(metric); |
239 // Subsequent events get ignored for the next 60 minutes. | 239 // Subsequent events get ignored for the next 60 minutes. |
240 for (int i = 0; i < 11; i++) { | 240 for (int i = 0; i < 11; i++) { |
241 test_clock()->Advance(base::TimeDelta::FromMinutes(5)); | 241 test_clock()->Advance(base::TimeDelta::FromMinutes(5)); |
242 double old_metric = user_classifier->GetEstimatedAvgTime(metric); | 242 double old_metric = user_classifier->GetEstimatedAvgTime(metric); |
243 user_classifier->OnEvent(metric); | 243 user_classifier->OnEvent(metric); |
(...skipping 26 matching lines...) Expand all Loading... |
270 // The results should be the same. | 270 // The results should be the same. |
271 EXPECT_THAT(user_classifier->GetEstimatedAvgTime(metric), | 271 EXPECT_THAT(user_classifier->GetEstimatedAvgTime(metric), |
272 Eq(metric_after_a_year)); | 272 Eq(metric_after_a_year)); |
273 } | 273 } |
274 | 274 |
275 TEST_P(UserClassifierMetricTest, | 275 TEST_P(UserClassifierMetricTest, |
276 ShouldCapDelayBetweenEventsWithDecreasedLimit) { | 276 ShouldCapDelayBetweenEventsWithDecreasedLimit) { |
277 UserClassifier::Metric metric = GetParam().first; | 277 UserClassifier::Metric metric = GetParam().first; |
278 // Decrease the max_hours to 72, i.e. 3 days. | 278 // Decrease the max_hours to 72, i.e. 3 days. |
279 variations::testing::VariationParamsManager variation_params( | 279 variations::testing::VariationParamsManager variation_params( |
280 kStudyName, {{"user_classifier_max_hours", "72"}}, | 280 kArticleSuggestionsFeature.name, {{"user_classifier_max_hours", "72"}}, |
281 {kArticleSuggestionsFeature.name}); | 281 {kArticleSuggestionsFeature.name}); |
282 UserClassifier* user_classifier = CreateUserClassifier(); | 282 UserClassifier* user_classifier = CreateUserClassifier(); |
283 | 283 |
284 // The initial event | 284 // The initial event |
285 user_classifier->OnEvent(metric); | 285 user_classifier->OnEvent(metric); |
286 // Wait for an insane amount of time | 286 // Wait for an insane amount of time |
287 test_clock()->Advance(base::TimeDelta::FromDays(365)); | 287 test_clock()->Advance(base::TimeDelta::FromDays(365)); |
288 user_classifier->OnEvent(metric); | 288 user_classifier->OnEvent(metric); |
289 double metric_after_a_year = user_classifier->GetEstimatedAvgTime(metric); | 289 double metric_after_a_year = user_classifier->GetEstimatedAvgTime(metric); |
290 | 290 |
(...skipping 17 matching lines...) Expand all Loading... |
308 "NewTabPage.UserClassifier.AverageHoursToOpenNTP"), | 308 "NewTabPage.UserClassifier.AverageHoursToOpenNTP"), |
309 std::make_pair( | 309 std::make_pair( |
310 UserClassifier::Metric::SUGGESTIONS_SHOWN, | 310 UserClassifier::Metric::SUGGESTIONS_SHOWN, |
311 "NewTabPage.UserClassifier.AverageHoursToShowSuggestions"), | 311 "NewTabPage.UserClassifier.AverageHoursToShowSuggestions"), |
312 std::make_pair( | 312 std::make_pair( |
313 UserClassifier::Metric::SUGGESTIONS_USED, | 313 UserClassifier::Metric::SUGGESTIONS_USED, |
314 "NewTabPage.UserClassifier.AverageHoursToUseSuggestions"))); | 314 "NewTabPage.UserClassifier.AverageHoursToUseSuggestions"))); |
315 | 315 |
316 } // namespace | 316 } // namespace |
317 } // namespace ntp_snippets | 317 } // namespace ntp_snippets |
OLD | NEW |