aboutsummaryrefslogtreecommitdiff
path: root/cpp/test/post_box_matchers_test.cc
diff options
context:
space:
mode:
authorroubert@google.com <roubert@google.com@38ededc0-08b8-5190-f2ac-b31f878777ad>2014-03-21 12:22:07 +0000
committerroubert@google.com <roubert@google.com@38ededc0-08b8-5190-f2ac-b31f878777ad>2014-03-21 12:22:07 +0000
commitc3c546166647eeda301711d0ee83d4f7187f3a9c (patch)
treec6612d70ea8bdf37d083c1a8bd6c60961a4eceac /cpp/test/post_box_matchers_test.cc
parentaa04d02df8665c81b05c057ddfd22d6ef8606405 (diff)
downloadsrc-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.cc87
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