From c3c546166647eeda301711d0ee83d4f7187f3a9c Mon Sep 17 00:00:00 2001 From: "roubert@google.com" Date: Fri, 21 Mar 2014 12:22:07 +0000 Subject: 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 --- cpp/test/post_box_matchers_test.cc | 87 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 cpp/test/post_box_matchers_test.cc (limited to 'cpp/test/post_box_matchers_test.cc') 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 +#include + +#include "rule.h" + +#include + +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 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 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 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 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 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 matchers = PostBoxMatchers::GetMatchers(rule); + EXPECT_EQ(2, matchers.size()); + EXPECT_TRUE(matchers[0] != NULL); + EXPECT_TRUE(matchers[1] != NULL); +} + +} // namespace -- cgit v1.2.3