1// Copyright (C) 2014 Google Inc. 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15#include <libaddressinput/address_data.h> 16 17#include <string> 18#include <vector> 19 20#include <gtest/gtest.h> 21 22namespace { 23 24using i18n::addressinput::AddressData; 25 26TEST(AddressDataTest, FormatForDisplayEmpty) { 27 AddressData address; 28 std::vector<std::string> actual; 29 address.FormatForDisplay(&actual); 30 EXPECT_EQ(std::vector<std::string>(), actual); 31} 32 33TEST(AddressDataTest, FormatForDisplayUs) { 34 AddressData address; 35 address.country_code = "US"; 36 address.administrative_area = "Texas"; 37 address.locality = "Houston"; 38 address.postal_code = "77005"; 39 address.address_lines.push_back("123 Main St"); 40 address.address_lines.push_back("Apt 2"); 41 address.organization = "ACME Corp."; 42 address.recipient = "John Doe"; 43 44 std::vector<std::string> actual; 45 address.FormatForDisplay(&actual); 46 47 std::vector<std::string> expected; 48 expected.push_back(address.recipient); 49 expected.push_back(address.organization); 50 expected.insert(expected.end(), 51 address.address_lines.begin(), 52 address.address_lines.end()); 53 expected.push_back(address.locality + ", " + address.administrative_area + 54 " " + address.postal_code); 55 56 EXPECT_EQ(expected, actual); 57} 58 59TEST(AddressDataTest, FormatForDisplayAr) { 60 AddressData address; 61 address.country_code = "AR"; 62 address.administrative_area = "Capital Federal"; 63 address.locality = "Buenos Aires"; 64 address.postal_code = "C1001AFB"; 65 address.address_lines.push_back("Su Calle 123"); 66 address.address_lines.push_back("5° Piso"); 67 address.organization = "Empresa Ejemplo"; 68 address.recipient = "Juan Perez"; 69 70 std::vector<std::string> actual; 71 address.FormatForDisplay(&actual); 72 73 std::vector<std::string> expected; 74 expected.push_back(address.recipient); 75 expected.push_back(address.organization); 76 expected.insert(expected.end(), 77 address.address_lines.begin(), 78 address.address_lines.end()); 79 expected.push_back(address.postal_code + " " + address.locality); 80 expected.push_back(address.administrative_area); 81 82 EXPECT_EQ(expected, actual); 83} 84 85TEST(AddressDataTest, FormatForDisplayJp) { 86 AddressData address; 87 address.country_code = "JP"; 88 address.language_code = "ja"; 89 address.administrative_area = "東京都"; 90 address.locality = "渋谷区"; 91 address.postal_code = "150-8512"; 92 address.address_lines.push_back("桜丘町26-1"); 93 address.address_lines.push_back("セルリアンタワー6階"); 94 address.organization = "グーグル株式会社"; 95 address.recipient = "村上 美紀"; 96 97 std::vector<std::string> actual; 98 address.FormatForDisplay(&actual); 99 100 std::vector<std::string> expected; 101 expected.push_back("〒" + address.postal_code); 102 expected.push_back(address.administrative_area + address.locality); 103 expected.insert(expected.end(), 104 address.address_lines.begin(), 105 address.address_lines.end()); 106 expected.push_back(address.organization); 107 expected.push_back(address.recipient); 108 109 EXPECT_EQ(expected, actual); 110} 111 112TEST(AddressDataTest, FormatForDisplayJpLatn) { 113 AddressData address; 114 address.country_code = "JP"; 115 address.language_code = "ja-latn"; 116 address.administrative_area = "Tokyo"; 117 address.locality = "Shibuya-ku"; 118 address.postal_code = "150-8512"; 119 address.address_lines.push_back("26-1 Sakuragaoka-cho"); 120 address.address_lines.push_back("Cerulean Tower 6F"); 121 address.organization = "Google Japan Inc."; 122 address.recipient = "Miki Murakami"; 123 124 std::vector<std::string> actual; 125 address.FormatForDisplay(&actual); 126 127 std::vector<std::string> expected; 128 expected.push_back(address.recipient); 129 expected.push_back(address.organization); 130 expected.insert(expected.end(), 131 address.address_lines.begin(), 132 address.address_lines.end()); 133 expected.push_back(address.locality + ", "+ address.administrative_area); 134 expected.push_back(address.postal_code); 135 136 EXPECT_EQ(expected, actual); 137} 138 139TEST(AddressDataTest, FormatForDisplayJpLatnCapitalized) { 140 AddressData address; 141 address.country_code = "JP"; 142 address.language_code = "ja-Latn"; 143 address.administrative_area = "Tokyo"; 144 address.locality = "Shibuya-ku"; 145 address.postal_code = "150-8512"; 146 address.address_lines.push_back("26-1 Sakuragaoka-cho"); 147 address.address_lines.push_back("Cerulean Tower 6F"); 148 address.organization = "Google Japan Inc."; 149 address.recipient = "Miki Murakami"; 150 151 std::vector<std::string> actual; 152 address.FormatForDisplay(&actual); 153 154 std::vector<std::string> expected; 155 expected.push_back(address.recipient); 156 expected.push_back(address.organization); 157 expected.insert(expected.end(), 158 address.address_lines.begin(), 159 address.address_lines.end()); 160 expected.push_back(address.locality + ", "+ address.administrative_area); 161 expected.push_back(address.postal_code); 162 163 EXPECT_EQ(expected, actual); 164} 165 166TEST(AddressDataTest, FormatForDisplayJpLatnUs) { 167 AddressData address; 168 address.country_code = "JP"; 169 address.language_code = "ja-latn-US"; 170 address.administrative_area = "Tokyo"; 171 address.locality = "Shibuya-ku"; 172 address.postal_code = "150-8512"; 173 address.address_lines.push_back("26-1 Sakuragaoka-cho"); 174 address.address_lines.push_back("Cerulean Tower 6F"); 175 address.organization = "Google Japan Inc."; 176 address.recipient = "Miki Murakami"; 177 178 std::vector<std::string> actual; 179 address.FormatForDisplay(&actual); 180 181 std::vector<std::string> expected; 182 expected.push_back(address.recipient); 183 expected.push_back(address.organization); 184 expected.insert(expected.end(), 185 address.address_lines.begin(), 186 address.address_lines.end()); 187 expected.push_back(address.locality + ", "+ address.administrative_area); 188 expected.push_back(address.postal_code); 189 190 EXPECT_EQ(expected, actual); 191} 192 193TEST(AddressDataTest, FormatForDisplayWithStreetCi) { 194 AddressData address; 195 address.country_code = "CI"; 196 address.address_lines.push_back("Street Line 1"); 197 address.locality = "City Name"; 198 address.sorting_code = "123CEDEX"; 199 200 std::vector<std::string> actual; 201 address.FormatForDisplay(&actual); 202 203 std::vector<std::string> expected( 204 1, 205 address.sorting_code + " " + 206 address.address_lines[0] + " " + 207 address.locality + " " + 208 address.sorting_code); 209 210 EXPECT_EQ(expected, actual); 211} 212 213TEST(AddressDataTest, FormatForDisplayWithoutStreetCi) { 214 AddressData address; 215 address.country_code = "CI"; 216 address.locality = "City Name"; 217 address.sorting_code = "123CEDEX"; 218 219 std::vector<std::string> actual; 220 address.FormatForDisplay(&actual); 221 222 std::vector<std::string> expected( 223 1, 224 address.sorting_code + " " + 225 address.locality + " " + 226 address.sorting_code); 227 228 EXPECT_EQ(expected, actual); 229} 230 231} // namespace 232