diff options
author | roubert@google.com <roubert@google.com@38ededc0-08b8-5190-f2ac-b31f878777ad> | 2014-03-21 12:22:07 +0000 |
---|---|---|
committer | roubert@google.com <roubert@google.com@38ededc0-08b8-5190-f2ac-b31f878777ad> | 2014-03-21 12:22:07 +0000 |
commit | c3c546166647eeda301711d0ee83d4f7187f3a9c (patch) | |
tree | c6612d70ea8bdf37d083c1a8bd6c60961a4eceac /cpp/test/post_box_matchers_test.cc | |
parent | aa04d02df8665c81b05c057ddfd22d6ef8606405 (diff) | |
download | src-c3c546166647eeda301711d0ee83d4f7187f3a9c.tar.gz |
Add the PostBoxMatchers helper class.
This class contains regular expressions to match post office boxes, and
a function to get the appropriate list of these to use for a particular
country.
git-svn-id: http://libaddressinput.googlecode.com/svn/trunk@201 38ededc0-08b8-5190-f2ac-b31f878777ad
Diffstat (limited to 'cpp/test/post_box_matchers_test.cc')
-rw-r--r-- | cpp/test/post_box_matchers_test.cc | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/cpp/test/post_box_matchers_test.cc b/cpp/test/post_box_matchers_test.cc new file mode 100644 index 0000000..d89ee0b --- /dev/null +++ b/cpp/test/post_box_matchers_test.cc @@ -0,0 +1,87 @@ +// Copyright (C) 2014 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "post_box_matchers.h" + +#include <cstddef> +#include <vector> + +#include "rule.h" + +#include <gtest/gtest.h> + +namespace i18n { +namespace addressinput { +class RE2ptr; +} // namespace addressinput +} // namespace i18n + +namespace { + +using i18n::addressinput::PostBoxMatchers; +using i18n::addressinput::RE2ptr; +using i18n::addressinput::Rule; + +TEST(PostBoxMatchersTest, AlwaysGetMatcherForLanguageUnd) { + Rule rule; + std::vector<const RE2ptr*> matchers = PostBoxMatchers::GetMatchers(rule); + EXPECT_EQ(1, matchers.size()); + EXPECT_TRUE(matchers[0] != NULL); +} + +TEST(PostBoxMatchersTest, NoMatcherForInvalidLanguage) { + Rule rule; + ASSERT_TRUE(rule.ParseSerializedRule("{\"languages\":\"xx\"}")); + std::vector<const RE2ptr*> matchers = PostBoxMatchers::GetMatchers(rule); + EXPECT_EQ(1, matchers.size()); + EXPECT_TRUE(matchers[0] != NULL); +} + +TEST(PostBoxMatchersTest, HasMatcherForValidLanguage) { + Rule rule; + ASSERT_TRUE(rule.ParseSerializedRule("{\"languages\":\"sv\"}")); + std::vector<const RE2ptr*> matchers = PostBoxMatchers::GetMatchers(rule); + EXPECT_EQ(2, matchers.size()); + EXPECT_TRUE(matchers[0] != NULL); + EXPECT_TRUE(matchers[1] != NULL); +} + +TEST(PostBoxMatchersTest, MixValidAndInvalidLanguage) { + Rule rule; + ASSERT_TRUE(rule.ParseSerializedRule("{\"languages\":\"xx~sv\"}")); + std::vector<const RE2ptr*> matchers = PostBoxMatchers::GetMatchers(rule); + EXPECT_EQ(2, matchers.size()); + EXPECT_TRUE(matchers[0] != NULL); + EXPECT_TRUE(matchers[1] != NULL); +} + +TEST(PostBoxMatchersTest, UseBaseLanguageForMatching) { + Rule rule; + ASSERT_TRUE(rule.ParseSerializedRule("{\"languages\":\"sv-SE\"}")); + std::vector<const RE2ptr*> matchers = PostBoxMatchers::GetMatchers(rule); + EXPECT_EQ(2, matchers.size()); + EXPECT_TRUE(matchers[0] != NULL); + EXPECT_TRUE(matchers[1] != NULL); +} + +TEST(PostBoxMatchersTest, LenientLanguageTagParsing) { + Rule rule; + ASSERT_TRUE(rule.ParseSerializedRule("{\"languages\":\"SV_SE\"}")); + std::vector<const RE2ptr*> matchers = PostBoxMatchers::GetMatchers(rule); + EXPECT_EQ(2, matchers.size()); + EXPECT_TRUE(matchers[0] != NULL); + EXPECT_TRUE(matchers[1] != NULL); +} + +} // namespace |