| 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 { now, true }, | 231 // Note, the proto start_date is truncated to seconds, but the reference |
| 232 { now + delta, false }, | 232 // date isn't. |
| 233 {now, true}, |
| 234 {now + delta, false}, |
| 233 }; | 235 }; |
| 234 | 236 |
| 235 Study_Filter filter; | 237 Study_Filter filter; |
| 236 | 238 |
| 237 // Start date not set should result in true. | 239 // Start date not set should result in true. |
| 238 EXPECT_TRUE(internal::CheckStudyStartDate(filter, now)); | 240 EXPECT_TRUE(internal::CheckStudyStartDate(filter, now)); |
| 239 | 241 |
| 240 for (size_t i = 0; i < arraysize(start_test_cases); ++i) { | 242 for (size_t i = 0; i < arraysize(start_test_cases); ++i) { |
| 241 filter.set_start_date(TimeToProtoTime(start_test_cases[i].start_date)); | 243 filter.set_start_date(TimeToProtoTime(start_test_cases[i].start_date)); |
| 242 const bool result = internal::CheckStudyStartDate(filter, now); | 244 const bool result = internal::CheckStudyStartDate(filter, now); |
| 243 EXPECT_EQ(start_test_cases[i].expected_result, result) | 245 EXPECT_EQ(start_test_cases[i].expected_result, result) |
| 244 << "Case " << i << " failed!"; | 246 << "Case " << i << " failed!"; |
| 245 } | 247 } |
| 246 } | 248 } |
| 247 | 249 |
| 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 |
| 248 TEST(VariationsStudyFilteringTest, CheckStudyVersion) { | 273 TEST(VariationsStudyFilteringTest, CheckStudyVersion) { |
| 249 const struct { | 274 const struct { |
| 250 const char* min_version; | 275 const char* min_version; |
| 251 const char* version; | 276 const char* version; |
| 252 bool expected_result; | 277 bool expected_result; |
| 253 } min_test_cases[] = { | 278 } min_test_cases[] = { |
| 254 { "1.2.2", "1.2.3", true }, | 279 { "1.2.2", "1.2.3", true }, |
| 255 { "1.2.3", "1.2.3", true }, | 280 { "1.2.3", "1.2.3", true }, |
| 256 { "1.2.4", "1.2.3", false }, | 281 { "1.2.4", "1.2.3", false }, |
| 257 { "1.3.2", "1.2.3", false }, | 282 { "1.3.2", "1.2.3", false }, |
| (...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 566 EXPECT_TRUE(processed_study.Init(&study, false)); | 591 EXPECT_TRUE(processed_study.Init(&study, false)); |
| 567 | 592 |
| 568 // Max version checks. | 593 // Max version checks. |
| 569 study.mutable_filter()->set_max_version("2.3.4.*"); | 594 study.mutable_filter()->set_max_version("2.3.4.*"); |
| 570 EXPECT_TRUE(processed_study.Init(&study, false)); | 595 EXPECT_TRUE(processed_study.Init(&study, false)); |
| 571 study.mutable_filter()->set_max_version("*.3"); | 596 study.mutable_filter()->set_max_version("*.3"); |
| 572 EXPECT_FALSE(processed_study.Init(&study, false)); | 597 EXPECT_FALSE(processed_study.Init(&study, false)); |
| 573 study.mutable_filter()->set_max_version("2.3.4"); | 598 study.mutable_filter()->set_max_version("2.3.4"); |
| 574 EXPECT_TRUE(processed_study.Init(&study, false)); | 599 EXPECT_TRUE(processed_study.Init(&study, false)); |
| 575 | 600 |
| 601 // A blank default study is allowed. |
| 576 study.clear_default_experiment_name(); | 602 study.clear_default_experiment_name(); |
| 577 EXPECT_FALSE(processed_study.Init(&study, false)); | 603 EXPECT_TRUE(processed_study.Init(&study, false)); |
| 578 | 604 |
| 579 study.set_default_experiment_name("xyz"); | 605 study.set_default_experiment_name("xyz"); |
| 580 EXPECT_FALSE(processed_study.Init(&study, false)); | 606 EXPECT_FALSE(processed_study.Init(&study, false)); |
| 581 | 607 |
| 582 study.set_default_experiment_name("def"); | 608 study.set_default_experiment_name("def"); |
| 583 default_group->clear_name(); | 609 default_group->clear_name(); |
| 584 EXPECT_FALSE(processed_study.Init(&study, false)); | 610 EXPECT_FALSE(processed_study.Init(&study, false)); |
| 585 | 611 |
| 586 default_group->set_name("def"); | 612 default_group->set_name("def"); |
| 587 EXPECT_TRUE(processed_study.Init(&study, false)); | 613 EXPECT_TRUE(processed_study.Init(&study, false)); |
| 588 Study_Experiment* repeated_group = study.add_experiment(); | 614 Study_Experiment* repeated_group = study.add_experiment(); |
| 589 repeated_group->set_name("abc"); | 615 repeated_group->set_name("abc"); |
| 590 repeated_group->set_probability_weight(1); | 616 repeated_group->set_probability_weight(1); |
| 591 EXPECT_FALSE(processed_study.Init(&study, false)); | 617 EXPECT_FALSE(processed_study.Init(&study, false)); |
| 592 } | 618 } |
| 593 | 619 |
| 594 } // namespace variations | 620 } // namespace variations |
| OLD | NEW |