diff options
author | roubert@google.com <roubert@google.com@38ededc0-08b8-5190-f2ac-b31f878777ad> | 2014-06-03 17:34:34 +0000 |
---|---|---|
committer | roubert@google.com <roubert@google.com@38ededc0-08b8-5190-f2ac-b31f878777ad> | 2014-06-03 17:34:34 +0000 |
commit | b1b5b1fcaaaa95129f1f351641dd20d14bc667e3 (patch) | |
tree | 9cc8da6d2100a2fe7e41ad9a6bab654e3c5da8cf /cpp/test | |
parent | 17471f7b69a94f92480650b06721e698204be3c0 (diff) | |
download | src-b1b5b1fcaaaa95129f1f351641dd20d14bc667e3.tar.gz |
Change the methods in validation_task.cc to use the required and used fields information from statically linked region_data_constants.
git-svn-id: http://libaddressinput.googlecode.com/svn/trunk@261 38ededc0-08b8-5190-f2ac-b31f878777ad
Diffstat (limited to 'cpp/test')
-rw-r--r-- | cpp/test/validation_task_test.cc | 81 |
1 files changed, 66 insertions, 15 deletions
diff --git a/cpp/test/validation_task_test.cc b/cpp/test/validation_task_test.cc index 94ae621..076309e 100644 --- a/cpp/test/validation_task_test.cc +++ b/cpp/test/validation_task_test.cc @@ -48,7 +48,42 @@ class ValidationTaskTest : public testing::Test { problems_(), expected_(), called_(false), - validated_(BuildCallback(this, &ValidationTaskTest::Validated)) {} + validated_(BuildCallback(this, &ValidationTaskTest::Validated)) { + // Add all problems to the filter except those affected by the metadata + // in region_data_constants.cc. + static const AddressField kFields[] = { + COUNTRY, + ADMIN_AREA, + LOCALITY, + DEPENDENT_LOCALITY, + SORTING_CODE, + POSTAL_CODE, + STREET_ADDRESS, + RECIPIENT + }; + + static const AddressProblem kProblems[] = { + // UNEXPECTED_FIELD is validated using IsFieldUsed(). + // MISSING_REQUIRED_FIELD is validated using IsFieldRequired(). + UNKNOWN_VALUE, + INVALID_FORMAT, + MISMATCHING_VALUE, + USES_P_O_BOX + }; + + for (size_t i = 0; i < arraysize(kFields); ++i) { + AddressField field = kFields[i]; + for (size_t j = 0; j < arraysize(kProblems); ++j) { + AddressProblem problem = kProblems[j]; + filter_.insert(std::make_pair(field, problem)); + } + } + + filter_.insert(std::make_pair(COUNTRY, UNEXPECTED_FIELD)); + filter_.insert(std::make_pair(COUNTRY, MISSING_REQUIRED_FIELD)); + filter_.insert(std::make_pair(RECIPIENT, UNEXPECTED_FIELD)); + filter_.insert(std::make_pair(RECIPIENT, MISSING_REQUIRED_FIELD)); + } virtual ~ValidationTaskTest() {} @@ -155,39 +190,54 @@ TEST_F(ValidationTaskTest, SuccessCountryRuleEmptyNameNotEmpty) { EXPECT_EQ(expected_, problems_); } -TEST_F(ValidationTaskTest, MissingRequiredFieldAll) { - json_[0] = "{\"require\":\"RSCDXZAON\"}"; +TEST_F(ValidationTaskTest, MissingRequiredFieldsUS) { + json_[0] = "{}"; - address_.region_code = "rrr"; + address_.region_code = "US"; + filter_.insert(std::make_pair(ADMIN_AREA, MISSING_REQUIRED_FIELD)); + filter_.insert(std::make_pair(LOCALITY, MISSING_REQUIRED_FIELD)); + filter_.insert(std::make_pair(POSTAL_CODE, MISSING_REQUIRED_FIELD)); + filter_.insert(std::make_pair(STREET_ADDRESS, MISSING_REQUIRED_FIELD)); expected_.insert(std::make_pair(ADMIN_AREA, MISSING_REQUIRED_FIELD)); expected_.insert(std::make_pair(LOCALITY, MISSING_REQUIRED_FIELD)); - expected_.insert(std::make_pair(DEPENDENT_LOCALITY, MISSING_REQUIRED_FIELD)); - expected_.insert(std::make_pair(SORTING_CODE, MISSING_REQUIRED_FIELD)); expected_.insert(std::make_pair(POSTAL_CODE, MISSING_REQUIRED_FIELD)); expected_.insert(std::make_pair(STREET_ADDRESS, MISSING_REQUIRED_FIELD)); - // With "N" in the require string, RECIPIENT will be required regardless of - // the value of |require_name_|. - expected_.insert(std::make_pair(RECIPIENT, MISSING_REQUIRED_FIELD)); - ASSERT_NO_FATAL_FAILURE(Validate()); ASSERT_TRUE(called_); EXPECT_EQ(expected_, problems_); } -TEST_F(ValidationTaskTest, MissingRequiredFieldNone) { - json_[0] = "{\"require\":\"RSCDXZAON\",\"fmt\":\"%R%S%C%D%X%Z%A%O%N\"}"; +TEST_F(ValidationTaskTest, MissingNoRequiredFieldsUS) { + json_[0] = "{}"; - address_.region_code = "rrr"; + address_.region_code = "US"; address_.administrative_area = "sss"; address_.locality = "ccc"; - address_.dependent_locality = "ddd"; - address_.sorting_code = "xxx"; address_.postal_code = "zzz"; address_.address_line.push_back("aaa"); address_.recipient = "nnn"; + filter_.insert(std::make_pair(ADMIN_AREA, MISSING_REQUIRED_FIELD)); + filter_.insert(std::make_pair(LOCALITY, MISSING_REQUIRED_FIELD)); + filter_.insert(std::make_pair(POSTAL_CODE, MISSING_REQUIRED_FIELD)); + filter_.insert(std::make_pair(STREET_ADDRESS, MISSING_REQUIRED_FIELD)); + + ASSERT_NO_FATAL_FAILURE(Validate()); + ASSERT_TRUE(called_); + EXPECT_EQ(expected_, problems_); +} + +TEST_F(ValidationTaskTest, UnexpectedFieldUS) { + json_[0] = "{}"; + + address_.region_code = "US"; + address_.dependent_locality = "ddd"; + + filter_.insert(std::make_pair(DEPENDENT_LOCALITY, UNEXPECTED_FIELD)); + expected_.insert(std::make_pair(DEPENDENT_LOCALITY, UNEXPECTED_FIELD)); + ASSERT_NO_FATAL_FAILURE(Validate()); ASSERT_TRUE(called_); EXPECT_EQ(expected_, problems_); @@ -335,6 +385,7 @@ TEST_F(ValidationTaskTest, PostalCodeFilterIgnoresMismatching) { address_.region_code = "rrr"; address_.postal_code = "000"; + filter_.erase(POSTAL_CODE); filter_.insert(std::make_pair(POSTAL_CODE, INVALID_FORMAT)); // (POSTAL_CODE, MISMATCHING_VALUE) should not be reported. |