OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 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/variations/study_filtering.h" | 5 #include "components/variations/study_filtering.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 #include <string.h> | 9 #include <string.h> |
10 | 10 |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 } | 220 } |
221 } | 221 } |
222 | 222 |
223 TEST(VariationsStudyFilteringTest, CheckStudyStartDate) { | 223 TEST(VariationsStudyFilteringTest, CheckStudyStartDate) { |
224 const base::Time now = base::Time::Now(); | 224 const base::Time now = base::Time::Now(); |
225 const base::TimeDelta delta = base::TimeDelta::FromHours(1); | 225 const base::TimeDelta delta = base::TimeDelta::FromHours(1); |
226 const struct { | 226 const struct { |
227 const base::Time start_date; | 227 const base::Time start_date; |
228 bool expected_result; | 228 bool expected_result; |
229 } start_test_cases[] = { | 229 } start_test_cases[] = { |
230 {now - delta, true}, | 230 { now - delta, true }, |
231 // Note, the proto start_date is truncated to seconds, but the reference | 231 { now, true }, |
232 // date isn't. | 232 { now + delta, false }, |
233 {now, true}, | |
234 {now + delta, false}, | |
235 }; | 233 }; |
236 | 234 |
237 Study_Filter filter; | 235 Study_Filter filter; |
238 | 236 |
239 // Start date not set should result in true. | 237 // Start date not set should result in true. |
240 EXPECT_TRUE(internal::CheckStudyStartDate(filter, now)); | 238 EXPECT_TRUE(internal::CheckStudyStartDate(filter, now)); |
241 | 239 |
242 for (size_t i = 0; i < arraysize(start_test_cases); ++i) { | 240 for (size_t i = 0; i < arraysize(start_test_cases); ++i) { |
243 filter.set_start_date(TimeToProtoTime(start_test_cases[i].start_date)); | 241 filter.set_start_date(TimeToProtoTime(start_test_cases[i].start_date)); |
244 const bool result = internal::CheckStudyStartDate(filter, now); | 242 const bool result = internal::CheckStudyStartDate(filter, now); |
245 EXPECT_EQ(start_test_cases[i].expected_result, result) | 243 EXPECT_EQ(start_test_cases[i].expected_result, result) |
246 << "Case " << i << " failed!"; | 244 << "Case " << i << " failed!"; |
247 } | 245 } |
248 } | 246 } |
249 | 247 |
250 TEST(VariationsStudyFilteringTest, CheckStudyEndDate) { | |
251 const base::Time now = base::Time::Now(); | |
252 const base::TimeDelta delta = base::TimeDelta::FromHours(1); | |
253 const struct { | |
254 const base::Time end_date; | |
255 bool expected_result; | |
256 } start_test_cases[] = { | |
257 {now - delta, false}, {now + delta, true}, | |
258 }; | |
259 | |
260 Study_Filter filter; | |
261 | |
262 // End date not set should result in true. | |
263 EXPECT_TRUE(internal::CheckStudyEndDate(filter, now)); | |
264 | |
265 for (size_t i = 0; i < arraysize(start_test_cases); ++i) { | |
266 filter.set_end_date(TimeToProtoTime(start_test_cases[i].end_date)); | |
267 const bool result = internal::CheckStudyEndDate(filter, now); | |
268 EXPECT_EQ(start_test_cases[i].expected_result, result) << "Case " << i | |
269 << " failed!"; | |
270 } | |
271 } | |
272 | |
273 TEST(VariationsStudyFilteringTest, CheckStudyVersion) { | 248 TEST(VariationsStudyFilteringTest, CheckStudyVersion) { |
274 const struct { | 249 const struct { |
275 const char* min_version; | 250 const char* min_version; |
276 const char* version; | 251 const char* version; |
277 bool expected_result; | 252 bool expected_result; |
278 } min_test_cases[] = { | 253 } min_test_cases[] = { |
279 { "1.2.2", "1.2.3", true }, | 254 { "1.2.2", "1.2.3", true }, |
280 { "1.2.3", "1.2.3", true }, | 255 { "1.2.3", "1.2.3", true }, |
281 { "1.2.4", "1.2.3", false }, | 256 { "1.2.4", "1.2.3", false }, |
282 { "1.3.2", "1.2.3", false }, | 257 { "1.3.2", "1.2.3", false }, |
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
591 EXPECT_TRUE(processed_study.Init(&study, false)); | 566 EXPECT_TRUE(processed_study.Init(&study, false)); |
592 | 567 |
593 // Max version checks. | 568 // Max version checks. |
594 study.mutable_filter()->set_max_version("2.3.4.*"); | 569 study.mutable_filter()->set_max_version("2.3.4.*"); |
595 EXPECT_TRUE(processed_study.Init(&study, false)); | 570 EXPECT_TRUE(processed_study.Init(&study, false)); |
596 study.mutable_filter()->set_max_version("*.3"); | 571 study.mutable_filter()->set_max_version("*.3"); |
597 EXPECT_FALSE(processed_study.Init(&study, false)); | 572 EXPECT_FALSE(processed_study.Init(&study, false)); |
598 study.mutable_filter()->set_max_version("2.3.4"); | 573 study.mutable_filter()->set_max_version("2.3.4"); |
599 EXPECT_TRUE(processed_study.Init(&study, false)); | 574 EXPECT_TRUE(processed_study.Init(&study, false)); |
600 | 575 |
601 // A blank default study is allowed. | |
602 study.clear_default_experiment_name(); | 576 study.clear_default_experiment_name(); |
603 EXPECT_TRUE(processed_study.Init(&study, false)); | 577 EXPECT_FALSE(processed_study.Init(&study, false)); |
604 | 578 |
605 study.set_default_experiment_name("xyz"); | 579 study.set_default_experiment_name("xyz"); |
606 EXPECT_FALSE(processed_study.Init(&study, false)); | 580 EXPECT_FALSE(processed_study.Init(&study, false)); |
607 | 581 |
608 study.set_default_experiment_name("def"); | 582 study.set_default_experiment_name("def"); |
609 default_group->clear_name(); | 583 default_group->clear_name(); |
610 EXPECT_FALSE(processed_study.Init(&study, false)); | 584 EXPECT_FALSE(processed_study.Init(&study, false)); |
611 | 585 |
612 default_group->set_name("def"); | 586 default_group->set_name("def"); |
613 EXPECT_TRUE(processed_study.Init(&study, false)); | 587 EXPECT_TRUE(processed_study.Init(&study, false)); |
614 Study_Experiment* repeated_group = study.add_experiment(); | 588 Study_Experiment* repeated_group = study.add_experiment(); |
615 repeated_group->set_name("abc"); | 589 repeated_group->set_name("abc"); |
616 repeated_group->set_probability_weight(1); | 590 repeated_group->set_probability_weight(1); |
617 EXPECT_FALSE(processed_study.Init(&study, false)); | 591 EXPECT_FALSE(processed_study.Init(&study, false)); |
618 } | 592 } |
619 | 593 |
620 } // namespace variations | 594 } // namespace variations |
OLD | NEW |