1 /* 2 * Copyright (C) 2009 The Libphonenumber Authors 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.i18n.phonenumbers; 18 19 /** 20 * Unit tests for AsYouTypeFormatter.java 21 * 22 * Note that these tests use the test metadata, not the normal metadata file, so should not be used 23 * for regression test purposes - these tests are illustrative only and test functionality. 24 * 25 * @author Shaopeng Jia 26 */ 27 public class AsYouTypeFormatterTest extends TestMetadataTestCase { 28 29 public void testInvalidRegion() { 30 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.ZZ); 31 assertEquals("+", formatter.inputDigit('+')); 32 assertEquals("+4", formatter.inputDigit('4')); 33 assertEquals("+48 ", formatter.inputDigit('8')); 34 assertEquals("+48 8", formatter.inputDigit('8')); 35 assertEquals("+48 88", formatter.inputDigit('8')); 36 assertEquals("+48 88 1", formatter.inputDigit('1')); 37 assertEquals("+48 88 12", formatter.inputDigit('2')); 38 assertEquals("+48 88 123", formatter.inputDigit('3')); 39 assertEquals("+48 88 123 1", formatter.inputDigit('1')); 40 assertEquals("+48 88 123 12", formatter.inputDigit('2')); 41 42 formatter.clear(); 43 assertEquals("6", formatter.inputDigit('6')); 44 assertEquals("65", formatter.inputDigit('5')); 45 assertEquals("650", formatter.inputDigit('0')); 46 assertEquals("6502", formatter.inputDigit('2')); 47 assertEquals("65025", formatter.inputDigit('5')); 48 assertEquals("650253", formatter.inputDigit('3')); 49 } 50 51 public void testInvalidPlusSign() { 52 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.ZZ); 53 assertEquals("+", formatter.inputDigit('+')); 54 assertEquals("+4", formatter.inputDigit('4')); 55 assertEquals("+48 ", formatter.inputDigit('8')); 56 assertEquals("+48 8", formatter.inputDigit('8')); 57 assertEquals("+48 88", formatter.inputDigit('8')); 58 assertEquals("+48 88 1", formatter.inputDigit('1')); 59 assertEquals("+48 88 12", formatter.inputDigit('2')); 60 assertEquals("+48 88 123", formatter.inputDigit('3')); 61 assertEquals("+48 88 123 1", formatter.inputDigit('1')); 62 // A plus sign can only appear at the beginning of the number; otherwise, no formatting is 63 // applied. 64 assertEquals("+48881231+", formatter.inputDigit('+')); 65 assertEquals("+48881231+2", formatter.inputDigit('2')); 66 } 67 68 public void testTooLongNumberMatchingMultipleLeadingDigits() { 69 // See http://code.google.com/p/libphonenumber/issues/detail?id=36 70 // The bug occurred last time for countries which have two formatting rules with exactly the 71 // same leading digits pattern but differ in length. 72 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.ZZ); 73 assertEquals("+", formatter.inputDigit('+')); 74 assertEquals("+8", formatter.inputDigit('8')); 75 assertEquals("+81 ", formatter.inputDigit('1')); 76 assertEquals("+81 9", formatter.inputDigit('9')); 77 assertEquals("+81 90", formatter.inputDigit('0')); 78 assertEquals("+81 90 1", formatter.inputDigit('1')); 79 assertEquals("+81 90 12", formatter.inputDigit('2')); 80 assertEquals("+81 90 123", formatter.inputDigit('3')); 81 assertEquals("+81 90 1234", formatter.inputDigit('4')); 82 assertEquals("+81 90 1234 5", formatter.inputDigit('5')); 83 assertEquals("+81 90 1234 56", formatter.inputDigit('6')); 84 assertEquals("+81 90 1234 567", formatter.inputDigit('7')); 85 assertEquals("+81 90 1234 5678", formatter.inputDigit('8')); 86 assertEquals("+81 90 12 345 6789", formatter.inputDigit('9')); 87 assertEquals("+81901234567890", formatter.inputDigit('0')); 88 assertEquals("+819012345678901", formatter.inputDigit('1')); 89 } 90 91 public void testAYTFUS() { 92 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.US); 93 assertEquals("6", formatter.inputDigit('6')); 94 assertEquals("65", formatter.inputDigit('5')); 95 assertEquals("650", formatter.inputDigit('0')); 96 assertEquals("650 2", formatter.inputDigit('2')); 97 assertEquals("650 25", formatter.inputDigit('5')); 98 assertEquals("650 253", formatter.inputDigit('3')); 99 // Note this is how a US local number (without area code) should be formatted. 100 assertEquals("650 2532", formatter.inputDigit('2')); 101 assertEquals("650 253 22", formatter.inputDigit('2')); 102 assertEquals("650 253 222", formatter.inputDigit('2')); 103 assertEquals("650 253 2222", formatter.inputDigit('2')); 104 105 formatter.clear(); 106 assertEquals("1", formatter.inputDigit('1')); 107 assertEquals("16", formatter.inputDigit('6')); 108 assertEquals("1 65", formatter.inputDigit('5')); 109 assertEquals("1 650", formatter.inputDigit('0')); 110 assertEquals("1 650 2", formatter.inputDigit('2')); 111 assertEquals("1 650 25", formatter.inputDigit('5')); 112 assertEquals("1 650 253", formatter.inputDigit('3')); 113 assertEquals("1 650 253 2", formatter.inputDigit('2')); 114 assertEquals("1 650 253 22", formatter.inputDigit('2')); 115 assertEquals("1 650 253 222", formatter.inputDigit('2')); 116 assertEquals("1 650 253 2222", formatter.inputDigit('2')); 117 118 formatter.clear(); 119 assertEquals("0", formatter.inputDigit('0')); 120 assertEquals("01", formatter.inputDigit('1')); 121 assertEquals("011 ", formatter.inputDigit('1')); 122 assertEquals("011 4", formatter.inputDigit('4')); 123 assertEquals("011 44 ", formatter.inputDigit('4')); 124 assertEquals("011 44 6", formatter.inputDigit('6')); 125 assertEquals("011 44 61", formatter.inputDigit('1')); 126 assertEquals("011 44 6 12", formatter.inputDigit('2')); 127 assertEquals("011 44 6 123", formatter.inputDigit('3')); 128 assertEquals("011 44 6 123 1", formatter.inputDigit('1')); 129 assertEquals("011 44 6 123 12", formatter.inputDigit('2')); 130 assertEquals("011 44 6 123 123", formatter.inputDigit('3')); 131 assertEquals("011 44 6 123 123 1", formatter.inputDigit('1')); 132 assertEquals("011 44 6 123 123 12", formatter.inputDigit('2')); 133 assertEquals("011 44 6 123 123 123", formatter.inputDigit('3')); 134 135 formatter.clear(); 136 assertEquals("0", formatter.inputDigit('0')); 137 assertEquals("01", formatter.inputDigit('1')); 138 assertEquals("011 ", formatter.inputDigit('1')); 139 assertEquals("011 5", formatter.inputDigit('5')); 140 assertEquals("011 54 ", formatter.inputDigit('4')); 141 assertEquals("011 54 9", formatter.inputDigit('9')); 142 assertEquals("011 54 91", formatter.inputDigit('1')); 143 assertEquals("011 54 9 11", formatter.inputDigit('1')); 144 assertEquals("011 54 9 11 2", formatter.inputDigit('2')); 145 assertEquals("011 54 9 11 23", formatter.inputDigit('3')); 146 assertEquals("011 54 9 11 231", formatter.inputDigit('1')); 147 assertEquals("011 54 9 11 2312", formatter.inputDigit('2')); 148 assertEquals("011 54 9 11 2312 1", formatter.inputDigit('1')); 149 assertEquals("011 54 9 11 2312 12", formatter.inputDigit('2')); 150 assertEquals("011 54 9 11 2312 123", formatter.inputDigit('3')); 151 assertEquals("011 54 9 11 2312 1234", formatter.inputDigit('4')); 152 153 formatter.clear(); 154 assertEquals("0", formatter.inputDigit('0')); 155 assertEquals("01", formatter.inputDigit('1')); 156 assertEquals("011 ", formatter.inputDigit('1')); 157 assertEquals("011 2", formatter.inputDigit('2')); 158 assertEquals("011 24", formatter.inputDigit('4')); 159 assertEquals("011 244 ", formatter.inputDigit('4')); 160 assertEquals("011 244 2", formatter.inputDigit('2')); 161 assertEquals("011 244 28", formatter.inputDigit('8')); 162 assertEquals("011 244 280", formatter.inputDigit('0')); 163 assertEquals("011 244 280 0", formatter.inputDigit('0')); 164 assertEquals("011 244 280 00", formatter.inputDigit('0')); 165 assertEquals("011 244 280 000", formatter.inputDigit('0')); 166 assertEquals("011 244 280 000 0", formatter.inputDigit('0')); 167 assertEquals("011 244 280 000 00", formatter.inputDigit('0')); 168 assertEquals("011 244 280 000 000", formatter.inputDigit('0')); 169 170 formatter.clear(); 171 assertEquals("+", formatter.inputDigit('+')); 172 assertEquals("+4", formatter.inputDigit('4')); 173 assertEquals("+48 ", formatter.inputDigit('8')); 174 assertEquals("+48 8", formatter.inputDigit('8')); 175 assertEquals("+48 88", formatter.inputDigit('8')); 176 assertEquals("+48 88 1", formatter.inputDigit('1')); 177 assertEquals("+48 88 12", formatter.inputDigit('2')); 178 assertEquals("+48 88 123", formatter.inputDigit('3')); 179 assertEquals("+48 88 123 1", formatter.inputDigit('1')); 180 assertEquals("+48 88 123 12", formatter.inputDigit('2')); 181 assertEquals("+48 88 123 12 1", formatter.inputDigit('1')); 182 assertEquals("+48 88 123 12 12", formatter.inputDigit('2')); 183 } 184 185 public void testAYTFUSFullWidthCharacters() { 186 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.US); 187 assertEquals("\uFF16", formatter.inputDigit('\uFF16')); 188 assertEquals("\uFF16\uFF15", formatter.inputDigit('\uFF15')); 189 assertEquals("650", formatter.inputDigit('\uFF10')); 190 assertEquals("650 2", formatter.inputDigit('\uFF12')); 191 assertEquals("650 25", formatter.inputDigit('\uFF15')); 192 assertEquals("650 253", formatter.inputDigit('\uFF13')); 193 assertEquals("650 2532", formatter.inputDigit('\uFF12')); 194 assertEquals("650 253 22", formatter.inputDigit('\uFF12')); 195 assertEquals("650 253 222", formatter.inputDigit('\uFF12')); 196 assertEquals("650 253 2222", formatter.inputDigit('\uFF12')); 197 } 198 199 public void testAYTFUSMobileShortCode() { 200 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.US); 201 assertEquals("*", formatter.inputDigit('*')); 202 assertEquals("*1", formatter.inputDigit('1')); 203 assertEquals("*12", formatter.inputDigit('2')); 204 assertEquals("*121", formatter.inputDigit('1')); 205 assertEquals("*121#", formatter.inputDigit('#')); 206 } 207 208 public void testAYTFUSVanityNumber() { 209 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.US); 210 assertEquals("8", formatter.inputDigit('8')); 211 assertEquals("80", formatter.inputDigit('0')); 212 assertEquals("800", formatter.inputDigit('0')); 213 assertEquals("800 ", formatter.inputDigit(' ')); 214 assertEquals("800 M", formatter.inputDigit('M')); 215 assertEquals("800 MY", formatter.inputDigit('Y')); 216 assertEquals("800 MY ", formatter.inputDigit(' ')); 217 assertEquals("800 MY A", formatter.inputDigit('A')); 218 assertEquals("800 MY AP", formatter.inputDigit('P')); 219 assertEquals("800 MY APP", formatter.inputDigit('P')); 220 assertEquals("800 MY APPL", formatter.inputDigit('L')); 221 assertEquals("800 MY APPLE", formatter.inputDigit('E')); 222 } 223 224 public void testAYTFAndRememberPositionUS() { 225 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.US); 226 assertEquals("1", formatter.inputDigitAndRememberPosition('1')); 227 assertEquals(1, formatter.getRememberedPosition()); 228 assertEquals("16", formatter.inputDigit('6')); 229 assertEquals("1 65", formatter.inputDigit('5')); 230 assertEquals(1, formatter.getRememberedPosition()); 231 assertEquals("1 650", formatter.inputDigitAndRememberPosition('0')); 232 assertEquals(5, formatter.getRememberedPosition()); 233 assertEquals("1 650 2", formatter.inputDigit('2')); 234 assertEquals("1 650 25", formatter.inputDigit('5')); 235 // Note the remembered position for digit "0" changes from 4 to 5, because a space is now 236 // inserted in the front. 237 assertEquals(5, formatter.getRememberedPosition()); 238 assertEquals("1 650 253", formatter.inputDigit('3')); 239 assertEquals("1 650 253 2", formatter.inputDigit('2')); 240 assertEquals("1 650 253 22", formatter.inputDigit('2')); 241 assertEquals(5, formatter.getRememberedPosition()); 242 assertEquals("1 650 253 222", formatter.inputDigitAndRememberPosition('2')); 243 assertEquals(13, formatter.getRememberedPosition()); 244 assertEquals("1 650 253 2222", formatter.inputDigit('2')); 245 assertEquals(13, formatter.getRememberedPosition()); 246 assertEquals("165025322222", formatter.inputDigit('2')); 247 assertEquals(10, formatter.getRememberedPosition()); 248 assertEquals("1650253222222", formatter.inputDigit('2')); 249 assertEquals(10, formatter.getRememberedPosition()); 250 251 formatter.clear(); 252 assertEquals("1", formatter.inputDigit('1')); 253 assertEquals("16", formatter.inputDigitAndRememberPosition('6')); 254 assertEquals(2, formatter.getRememberedPosition()); 255 assertEquals("1 65", formatter.inputDigit('5')); 256 assertEquals("1 650", formatter.inputDigit('0')); 257 assertEquals(3, formatter.getRememberedPosition()); 258 assertEquals("1 650 2", formatter.inputDigit('2')); 259 assertEquals("1 650 25", formatter.inputDigit('5')); 260 assertEquals(3, formatter.getRememberedPosition()); 261 assertEquals("1 650 253", formatter.inputDigit('3')); 262 assertEquals("1 650 253 2", formatter.inputDigit('2')); 263 assertEquals("1 650 253 22", formatter.inputDigit('2')); 264 assertEquals(3, formatter.getRememberedPosition()); 265 assertEquals("1 650 253 222", formatter.inputDigit('2')); 266 assertEquals("1 650 253 2222", formatter.inputDigit('2')); 267 assertEquals("165025322222", formatter.inputDigit('2')); 268 assertEquals(2, formatter.getRememberedPosition()); 269 assertEquals("1650253222222", formatter.inputDigit('2')); 270 assertEquals(2, formatter.getRememberedPosition()); 271 272 formatter.clear(); 273 assertEquals("6", formatter.inputDigit('6')); 274 assertEquals("65", formatter.inputDigit('5')); 275 assertEquals("650", formatter.inputDigit('0')); 276 assertEquals("650 2", formatter.inputDigit('2')); 277 assertEquals("650 25", formatter.inputDigit('5')); 278 assertEquals("650 253", formatter.inputDigit('3')); 279 assertEquals("650 2532", formatter.inputDigitAndRememberPosition('2')); 280 assertEquals(8, formatter.getRememberedPosition()); 281 assertEquals("650 253 22", formatter.inputDigit('2')); 282 assertEquals(9, formatter.getRememberedPosition()); 283 assertEquals("650 253 222", formatter.inputDigit('2')); 284 // No more formatting when semicolon is entered. 285 assertEquals("650253222;", formatter.inputDigit(';')); 286 assertEquals(7, formatter.getRememberedPosition()); 287 assertEquals("650253222;2", formatter.inputDigit('2')); 288 289 formatter.clear(); 290 assertEquals("6", formatter.inputDigit('6')); 291 assertEquals("65", formatter.inputDigit('5')); 292 assertEquals("650", formatter.inputDigit('0')); 293 // No more formatting when users choose to do their own formatting. 294 assertEquals("650-", formatter.inputDigit('-')); 295 assertEquals("650-2", formatter.inputDigitAndRememberPosition('2')); 296 assertEquals(5, formatter.getRememberedPosition()); 297 assertEquals("650-25", formatter.inputDigit('5')); 298 assertEquals(5, formatter.getRememberedPosition()); 299 assertEquals("650-253", formatter.inputDigit('3')); 300 assertEquals(5, formatter.getRememberedPosition()); 301 assertEquals("650-253-", formatter.inputDigit('-')); 302 assertEquals("650-253-2", formatter.inputDigit('2')); 303 assertEquals("650-253-22", formatter.inputDigit('2')); 304 assertEquals("650-253-222", formatter.inputDigit('2')); 305 assertEquals("650-253-2222", formatter.inputDigit('2')); 306 307 formatter.clear(); 308 assertEquals("0", formatter.inputDigit('0')); 309 assertEquals("01", formatter.inputDigit('1')); 310 assertEquals("011 ", formatter.inputDigit('1')); 311 assertEquals("011 4", formatter.inputDigitAndRememberPosition('4')); 312 assertEquals("011 48 ", formatter.inputDigit('8')); 313 assertEquals(5, formatter.getRememberedPosition()); 314 assertEquals("011 48 8", formatter.inputDigit('8')); 315 assertEquals(5, formatter.getRememberedPosition()); 316 assertEquals("011 48 88", formatter.inputDigit('8')); 317 assertEquals("011 48 88 1", formatter.inputDigit('1')); 318 assertEquals("011 48 88 12", formatter.inputDigit('2')); 319 assertEquals(5, formatter.getRememberedPosition()); 320 assertEquals("011 48 88 123", formatter.inputDigit('3')); 321 assertEquals("011 48 88 123 1", formatter.inputDigit('1')); 322 assertEquals("011 48 88 123 12", formatter.inputDigit('2')); 323 assertEquals("011 48 88 123 12 1", formatter.inputDigit('1')); 324 assertEquals("011 48 88 123 12 12", formatter.inputDigit('2')); 325 326 formatter.clear(); 327 assertEquals("+", formatter.inputDigit('+')); 328 assertEquals("+1", formatter.inputDigit('1')); 329 assertEquals("+1 6", formatter.inputDigitAndRememberPosition('6')); 330 assertEquals("+1 65", formatter.inputDigit('5')); 331 assertEquals("+1 650", formatter.inputDigit('0')); 332 assertEquals(4, formatter.getRememberedPosition()); 333 assertEquals("+1 650 2", formatter.inputDigit('2')); 334 assertEquals(4, formatter.getRememberedPosition()); 335 assertEquals("+1 650 25", formatter.inputDigit('5')); 336 assertEquals("+1 650 253", formatter.inputDigitAndRememberPosition('3')); 337 assertEquals("+1 650 253 2", formatter.inputDigit('2')); 338 assertEquals("+1 650 253 22", formatter.inputDigit('2')); 339 assertEquals("+1 650 253 222", formatter.inputDigit('2')); 340 assertEquals(10, formatter.getRememberedPosition()); 341 342 formatter.clear(); 343 assertEquals("+", formatter.inputDigit('+')); 344 assertEquals("+1", formatter.inputDigit('1')); 345 assertEquals("+1 6", formatter.inputDigitAndRememberPosition('6')); 346 assertEquals("+1 65", formatter.inputDigit('5')); 347 assertEquals("+1 650", formatter.inputDigit('0')); 348 assertEquals(4, formatter.getRememberedPosition()); 349 assertEquals("+1 650 2", formatter.inputDigit('2')); 350 assertEquals(4, formatter.getRememberedPosition()); 351 assertEquals("+1 650 25", formatter.inputDigit('5')); 352 assertEquals("+1 650 253", formatter.inputDigit('3')); 353 assertEquals("+1 650 253 2", formatter.inputDigit('2')); 354 assertEquals("+1 650 253 22", formatter.inputDigit('2')); 355 assertEquals("+1 650 253 222", formatter.inputDigit('2')); 356 assertEquals("+1650253222;", formatter.inputDigit(';')); 357 assertEquals(3, formatter.getRememberedPosition()); 358 } 359 360 public void testAYTFGBFixedLine() { 361 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.GB); 362 assertEquals("0", formatter.inputDigit('0')); 363 assertEquals("02", formatter.inputDigit('2')); 364 assertEquals("020", formatter.inputDigit('0')); 365 assertEquals("020 7", formatter.inputDigitAndRememberPosition('7')); 366 assertEquals(5, formatter.getRememberedPosition()); 367 assertEquals("020 70", formatter.inputDigit('0')); 368 assertEquals("020 703", formatter.inputDigit('3')); 369 assertEquals(5, formatter.getRememberedPosition()); 370 assertEquals("020 7031", formatter.inputDigit('1')); 371 assertEquals("020 7031 3", formatter.inputDigit('3')); 372 assertEquals("020 7031 30", formatter.inputDigit('0')); 373 assertEquals("020 7031 300", formatter.inputDigit('0')); 374 assertEquals("020 7031 3000", formatter.inputDigit('0')); 375 } 376 377 public void testAYTFGBTollFree() { 378 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.GB); 379 assertEquals("0", formatter.inputDigit('0')); 380 assertEquals("08", formatter.inputDigit('8')); 381 assertEquals("080", formatter.inputDigit('0')); 382 assertEquals("080 7", formatter.inputDigit('7')); 383 assertEquals("080 70", formatter.inputDigit('0')); 384 assertEquals("080 703", formatter.inputDigit('3')); 385 assertEquals("080 7031", formatter.inputDigit('1')); 386 assertEquals("080 7031 3", formatter.inputDigit('3')); 387 assertEquals("080 7031 30", formatter.inputDigit('0')); 388 assertEquals("080 7031 300", formatter.inputDigit('0')); 389 assertEquals("080 7031 3000", formatter.inputDigit('0')); 390 } 391 392 public void testAYTFGBPremiumRate() { 393 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.GB); 394 assertEquals("0", formatter.inputDigit('0')); 395 assertEquals("09", formatter.inputDigit('9')); 396 assertEquals("090", formatter.inputDigit('0')); 397 assertEquals("090 7", formatter.inputDigit('7')); 398 assertEquals("090 70", formatter.inputDigit('0')); 399 assertEquals("090 703", formatter.inputDigit('3')); 400 assertEquals("090 7031", formatter.inputDigit('1')); 401 assertEquals("090 7031 3", formatter.inputDigit('3')); 402 assertEquals("090 7031 30", formatter.inputDigit('0')); 403 assertEquals("090 7031 300", formatter.inputDigit('0')); 404 assertEquals("090 7031 3000", formatter.inputDigit('0')); 405 } 406 407 public void testAYTFNZMobile() { 408 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.NZ); 409 assertEquals("0", formatter.inputDigit('0')); 410 assertEquals("02", formatter.inputDigit('2')); 411 assertEquals("021", formatter.inputDigit('1')); 412 assertEquals("02-11", formatter.inputDigit('1')); 413 assertEquals("02-112", formatter.inputDigit('2')); 414 // Note the unittest is using fake metadata which might produce non-ideal results. 415 assertEquals("02-112 3", formatter.inputDigit('3')); 416 assertEquals("02-112 34", formatter.inputDigit('4')); 417 assertEquals("02-112 345", formatter.inputDigit('5')); 418 assertEquals("02-112 3456", formatter.inputDigit('6')); 419 } 420 421 public void testAYTFDE() { 422 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.DE); 423 assertEquals("0", formatter.inputDigit('0')); 424 assertEquals("03", formatter.inputDigit('3')); 425 assertEquals("030", formatter.inputDigit('0')); 426 assertEquals("030/1", formatter.inputDigit('1')); 427 assertEquals("030/12", formatter.inputDigit('2')); 428 assertEquals("030/123", formatter.inputDigit('3')); 429 assertEquals("030/1234", formatter.inputDigit('4')); 430 431 // 04134 1234 432 formatter.clear(); 433 assertEquals("0", formatter.inputDigit('0')); 434 assertEquals("04", formatter.inputDigit('4')); 435 assertEquals("041", formatter.inputDigit('1')); 436 assertEquals("041 3", formatter.inputDigit('3')); 437 assertEquals("041 34", formatter.inputDigit('4')); 438 assertEquals("04134 1", formatter.inputDigit('1')); 439 assertEquals("04134 12", formatter.inputDigit('2')); 440 assertEquals("04134 123", formatter.inputDigit('3')); 441 assertEquals("04134 1234", formatter.inputDigit('4')); 442 443 // 08021 2345 444 formatter.clear(); 445 assertEquals("0", formatter.inputDigit('0')); 446 assertEquals("08", formatter.inputDigit('8')); 447 assertEquals("080", formatter.inputDigit('0')); 448 assertEquals("080 2", formatter.inputDigit('2')); 449 assertEquals("080 21", formatter.inputDigit('1')); 450 assertEquals("08021 2", formatter.inputDigit('2')); 451 assertEquals("08021 23", formatter.inputDigit('3')); 452 assertEquals("08021 234", formatter.inputDigit('4')); 453 assertEquals("08021 2345", formatter.inputDigit('5')); 454 455 // 00 1 650 253 2250 456 formatter.clear(); 457 assertEquals("0", formatter.inputDigit('0')); 458 assertEquals("00", formatter.inputDigit('0')); 459 assertEquals("00 1 ", formatter.inputDigit('1')); 460 assertEquals("00 1 6", formatter.inputDigit('6')); 461 assertEquals("00 1 65", formatter.inputDigit('5')); 462 assertEquals("00 1 650", formatter.inputDigit('0')); 463 assertEquals("00 1 650 2", formatter.inputDigit('2')); 464 assertEquals("00 1 650 25", formatter.inputDigit('5')); 465 assertEquals("00 1 650 253", formatter.inputDigit('3')); 466 assertEquals("00 1 650 253 2", formatter.inputDigit('2')); 467 assertEquals("00 1 650 253 22", formatter.inputDigit('2')); 468 assertEquals("00 1 650 253 222", formatter.inputDigit('2')); 469 assertEquals("00 1 650 253 2222", formatter.inputDigit('2')); 470 } 471 472 public void testAYTFAR() { 473 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.AR); 474 assertEquals("0", formatter.inputDigit('0')); 475 assertEquals("01", formatter.inputDigit('1')); 476 assertEquals("011", formatter.inputDigit('1')); 477 assertEquals("011 7", formatter.inputDigit('7')); 478 assertEquals("011 70", formatter.inputDigit('0')); 479 assertEquals("011 703", formatter.inputDigit('3')); 480 assertEquals("011 7031", formatter.inputDigit('1')); 481 assertEquals("011 7031-3", formatter.inputDigit('3')); 482 assertEquals("011 7031-30", formatter.inputDigit('0')); 483 assertEquals("011 7031-300", formatter.inputDigit('0')); 484 assertEquals("011 7031-3000", formatter.inputDigit('0')); 485 } 486 487 public void testAYTFARMobile() { 488 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.AR); 489 assertEquals("+", formatter.inputDigit('+')); 490 assertEquals("+5", formatter.inputDigit('5')); 491 assertEquals("+54 ", formatter.inputDigit('4')); 492 assertEquals("+54 9", formatter.inputDigit('9')); 493 assertEquals("+54 91", formatter.inputDigit('1')); 494 assertEquals("+54 9 11", formatter.inputDigit('1')); 495 assertEquals("+54 9 11 2", formatter.inputDigit('2')); 496 assertEquals("+54 9 11 23", formatter.inputDigit('3')); 497 assertEquals("+54 9 11 231", formatter.inputDigit('1')); 498 assertEquals("+54 9 11 2312", formatter.inputDigit('2')); 499 assertEquals("+54 9 11 2312 1", formatter.inputDigit('1')); 500 assertEquals("+54 9 11 2312 12", formatter.inputDigit('2')); 501 assertEquals("+54 9 11 2312 123", formatter.inputDigit('3')); 502 assertEquals("+54 9 11 2312 1234", formatter.inputDigit('4')); 503 } 504 505 public void testAYTFKR() { 506 // +82 51 234 5678 507 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.KR); 508 assertEquals("+", formatter.inputDigit('+')); 509 assertEquals("+8", formatter.inputDigit('8')); 510 assertEquals("+82 ", formatter.inputDigit('2')); 511 assertEquals("+82 5", formatter.inputDigit('5')); 512 assertEquals("+82 51", formatter.inputDigit('1')); 513 assertEquals("+82 51-2", formatter.inputDigit('2')); 514 assertEquals("+82 51-23", formatter.inputDigit('3')); 515 assertEquals("+82 51-234", formatter.inputDigit('4')); 516 assertEquals("+82 51-234-5", formatter.inputDigit('5')); 517 assertEquals("+82 51-234-56", formatter.inputDigit('6')); 518 assertEquals("+82 51-234-567", formatter.inputDigit('7')); 519 assertEquals("+82 51-234-5678", formatter.inputDigit('8')); 520 521 // +82 2 531 5678 522 formatter.clear(); 523 assertEquals("+", formatter.inputDigit('+')); 524 assertEquals("+8", formatter.inputDigit('8')); 525 assertEquals("+82 ", formatter.inputDigit('2')); 526 assertEquals("+82 2", formatter.inputDigit('2')); 527 assertEquals("+82 25", formatter.inputDigit('5')); 528 assertEquals("+82 2-53", formatter.inputDigit('3')); 529 assertEquals("+82 2-531", formatter.inputDigit('1')); 530 assertEquals("+82 2-531-5", formatter.inputDigit('5')); 531 assertEquals("+82 2-531-56", formatter.inputDigit('6')); 532 assertEquals("+82 2-531-567", formatter.inputDigit('7')); 533 assertEquals("+82 2-531-5678", formatter.inputDigit('8')); 534 535 // +82 2 3665 5678 536 formatter.clear(); 537 assertEquals("+", formatter.inputDigit('+')); 538 assertEquals("+8", formatter.inputDigit('8')); 539 assertEquals("+82 ", formatter.inputDigit('2')); 540 assertEquals("+82 2", formatter.inputDigit('2')); 541 assertEquals("+82 23", formatter.inputDigit('3')); 542 assertEquals("+82 2-36", formatter.inputDigit('6')); 543 assertEquals("+82 2-366", formatter.inputDigit('6')); 544 assertEquals("+82 2-3665", formatter.inputDigit('5')); 545 assertEquals("+82 2-3665-5", formatter.inputDigit('5')); 546 assertEquals("+82 2-3665-56", formatter.inputDigit('6')); 547 assertEquals("+82 2-3665-567", formatter.inputDigit('7')); 548 assertEquals("+82 2-3665-5678", formatter.inputDigit('8')); 549 550 // 02-114 551 formatter.clear(); 552 assertEquals("0", formatter.inputDigit('0')); 553 assertEquals("02", formatter.inputDigit('2')); 554 assertEquals("021", formatter.inputDigit('1')); 555 assertEquals("02-11", formatter.inputDigit('1')); 556 assertEquals("02-114", formatter.inputDigit('4')); 557 558 // 02-1300 559 formatter.clear(); 560 assertEquals("0", formatter.inputDigit('0')); 561 assertEquals("02", formatter.inputDigit('2')); 562 assertEquals("021", formatter.inputDigit('1')); 563 assertEquals("02-13", formatter.inputDigit('3')); 564 assertEquals("02-130", formatter.inputDigit('0')); 565 assertEquals("02-1300", formatter.inputDigit('0')); 566 567 // 011-456-7890 568 formatter.clear(); 569 assertEquals("0", formatter.inputDigit('0')); 570 assertEquals("01", formatter.inputDigit('1')); 571 assertEquals("011", formatter.inputDigit('1')); 572 assertEquals("011-4", formatter.inputDigit('4')); 573 assertEquals("011-45", formatter.inputDigit('5')); 574 assertEquals("011-456", formatter.inputDigit('6')); 575 assertEquals("011-456-7", formatter.inputDigit('7')); 576 assertEquals("011-456-78", formatter.inputDigit('8')); 577 assertEquals("011-456-789", formatter.inputDigit('9')); 578 assertEquals("011-456-7890", formatter.inputDigit('0')); 579 580 // 011-9876-7890 581 formatter.clear(); 582 assertEquals("0", formatter.inputDigit('0')); 583 assertEquals("01", formatter.inputDigit('1')); 584 assertEquals("011", formatter.inputDigit('1')); 585 assertEquals("011-9", formatter.inputDigit('9')); 586 assertEquals("011-98", formatter.inputDigit('8')); 587 assertEquals("011-987", formatter.inputDigit('7')); 588 assertEquals("011-9876", formatter.inputDigit('6')); 589 assertEquals("011-9876-7", formatter.inputDigit('7')); 590 assertEquals("011-9876-78", formatter.inputDigit('8')); 591 assertEquals("011-9876-789", formatter.inputDigit('9')); 592 assertEquals("011-9876-7890", formatter.inputDigit('0')); 593 } 594 595 public void testAYTF_MX() { 596 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.MX); 597 598 // +52 800 123 4567 599 assertEquals("+", formatter.inputDigit('+')); 600 assertEquals("+5", formatter.inputDigit('5')); 601 assertEquals("+52 ", formatter.inputDigit('2')); 602 assertEquals("+52 8", formatter.inputDigit('8')); 603 assertEquals("+52 80", formatter.inputDigit('0')); 604 assertEquals("+52 800", formatter.inputDigit('0')); 605 assertEquals("+52 800 1", formatter.inputDigit('1')); 606 assertEquals("+52 800 12", formatter.inputDigit('2')); 607 assertEquals("+52 800 123", formatter.inputDigit('3')); 608 assertEquals("+52 800 123 4", formatter.inputDigit('4')); 609 assertEquals("+52 800 123 45", formatter.inputDigit('5')); 610 assertEquals("+52 800 123 456", formatter.inputDigit('6')); 611 assertEquals("+52 800 123 4567", formatter.inputDigit('7')); 612 613 // +52 55 1234 5678 614 formatter.clear(); 615 assertEquals("+", formatter.inputDigit('+')); 616 assertEquals("+5", formatter.inputDigit('5')); 617 assertEquals("+52 ", formatter.inputDigit('2')); 618 assertEquals("+52 5", formatter.inputDigit('5')); 619 assertEquals("+52 55", formatter.inputDigit('5')); 620 assertEquals("+52 55 1", formatter.inputDigit('1')); 621 assertEquals("+52 55 12", formatter.inputDigit('2')); 622 assertEquals("+52 55 123", formatter.inputDigit('3')); 623 assertEquals("+52 55 1234", formatter.inputDigit('4')); 624 assertEquals("+52 55 1234 5", formatter.inputDigit('5')); 625 assertEquals("+52 55 1234 56", formatter.inputDigit('6')); 626 assertEquals("+52 55 1234 567", formatter.inputDigit('7')); 627 assertEquals("+52 55 1234 5678", formatter.inputDigit('8')); 628 629 // +52 212 345 6789 630 formatter.clear(); 631 assertEquals("+", formatter.inputDigit('+')); 632 assertEquals("+5", formatter.inputDigit('5')); 633 assertEquals("+52 ", formatter.inputDigit('2')); 634 assertEquals("+52 2", formatter.inputDigit('2')); 635 assertEquals("+52 21", formatter.inputDigit('1')); 636 assertEquals("+52 212", formatter.inputDigit('2')); 637 assertEquals("+52 212 3", formatter.inputDigit('3')); 638 assertEquals("+52 212 34", formatter.inputDigit('4')); 639 assertEquals("+52 212 345", formatter.inputDigit('5')); 640 assertEquals("+52 212 345 6", formatter.inputDigit('6')); 641 assertEquals("+52 212 345 67", formatter.inputDigit('7')); 642 assertEquals("+52 212 345 678", formatter.inputDigit('8')); 643 assertEquals("+52 212 345 6789", formatter.inputDigit('9')); 644 645 // +52 1 55 1234 5678 646 formatter.clear(); 647 assertEquals("+", formatter.inputDigit('+')); 648 assertEquals("+5", formatter.inputDigit('5')); 649 assertEquals("+52 ", formatter.inputDigit('2')); 650 assertEquals("+52 1", formatter.inputDigit('1')); 651 assertEquals("+52 15", formatter.inputDigit('5')); 652 assertEquals("+52 1 55", formatter.inputDigit('5')); 653 assertEquals("+52 1 55 1", formatter.inputDigit('1')); 654 assertEquals("+52 1 55 12", formatter.inputDigit('2')); 655 assertEquals("+52 1 55 123", formatter.inputDigit('3')); 656 assertEquals("+52 1 55 1234", formatter.inputDigit('4')); 657 assertEquals("+52 1 55 1234 5", formatter.inputDigit('5')); 658 assertEquals("+52 1 55 1234 56", formatter.inputDigit('6')); 659 assertEquals("+52 1 55 1234 567", formatter.inputDigit('7')); 660 assertEquals("+52 1 55 1234 5678", formatter.inputDigit('8')); 661 662 // +52 1 541 234 5678 663 formatter.clear(); 664 assertEquals("+", formatter.inputDigit('+')); 665 assertEquals("+5", formatter.inputDigit('5')); 666 assertEquals("+52 ", formatter.inputDigit('2')); 667 assertEquals("+52 1", formatter.inputDigit('1')); 668 assertEquals("+52 15", formatter.inputDigit('5')); 669 assertEquals("+52 1 54", formatter.inputDigit('4')); 670 assertEquals("+52 1 541", formatter.inputDigit('1')); 671 assertEquals("+52 1 541 2", formatter.inputDigit('2')); 672 assertEquals("+52 1 541 23", formatter.inputDigit('3')); 673 assertEquals("+52 1 541 234", formatter.inputDigit('4')); 674 assertEquals("+52 1 541 234 5", formatter.inputDigit('5')); 675 assertEquals("+52 1 541 234 56", formatter.inputDigit('6')); 676 assertEquals("+52 1 541 234 567", formatter.inputDigit('7')); 677 assertEquals("+52 1 541 234 5678", formatter.inputDigit('8')); 678 } 679 680 public void testAYTF_International_Toll_Free() { 681 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.US); 682 // +800 1234 5678 683 assertEquals("+", formatter.inputDigit('+')); 684 assertEquals("+8", formatter.inputDigit('8')); 685 assertEquals("+80", formatter.inputDigit('0')); 686 assertEquals("+800 ", formatter.inputDigit('0')); 687 assertEquals("+800 1", formatter.inputDigit('1')); 688 assertEquals("+800 12", formatter.inputDigit('2')); 689 assertEquals("+800 123", formatter.inputDigit('3')); 690 assertEquals("+800 1234", formatter.inputDigit('4')); 691 assertEquals("+800 1234 5", formatter.inputDigit('5')); 692 assertEquals("+800 1234 56", formatter.inputDigit('6')); 693 assertEquals("+800 1234 567", formatter.inputDigit('7')); 694 assertEquals("+800 1234 5678", formatter.inputDigit('8')); 695 assertEquals("+800123456789", formatter.inputDigit('9')); 696 } 697 698 public void testAYTFMultipleLeadingDigitPatterns() { 699 // +81 50 2345 6789 700 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.JP); 701 assertEquals("+", formatter.inputDigit('+')); 702 assertEquals("+8", formatter.inputDigit('8')); 703 assertEquals("+81 ", formatter.inputDigit('1')); 704 assertEquals("+81 5", formatter.inputDigit('5')); 705 assertEquals("+81 50", formatter.inputDigit('0')); 706 assertEquals("+81 50 2", formatter.inputDigit('2')); 707 assertEquals("+81 50 23", formatter.inputDigit('3')); 708 assertEquals("+81 50 234", formatter.inputDigit('4')); 709 assertEquals("+81 50 2345", formatter.inputDigit('5')); 710 assertEquals("+81 50 2345 6", formatter.inputDigit('6')); 711 assertEquals("+81 50 2345 67", formatter.inputDigit('7')); 712 assertEquals("+81 50 2345 678", formatter.inputDigit('8')); 713 assertEquals("+81 50 2345 6789", formatter.inputDigit('9')); 714 715 // +81 222 12 5678 716 formatter.clear(); 717 assertEquals("+", formatter.inputDigit('+')); 718 assertEquals("+8", formatter.inputDigit('8')); 719 assertEquals("+81 ", formatter.inputDigit('1')); 720 assertEquals("+81 2", formatter.inputDigit('2')); 721 assertEquals("+81 22", formatter.inputDigit('2')); 722 assertEquals("+81 22 2", formatter.inputDigit('2')); 723 assertEquals("+81 22 21", formatter.inputDigit('1')); 724 assertEquals("+81 2221 2", formatter.inputDigit('2')); 725 assertEquals("+81 222 12 5", formatter.inputDigit('5')); 726 assertEquals("+81 222 12 56", formatter.inputDigit('6')); 727 assertEquals("+81 222 12 567", formatter.inputDigit('7')); 728 assertEquals("+81 222 12 5678", formatter.inputDigit('8')); 729 730 // 011113 731 formatter.clear(); 732 assertEquals("0", formatter.inputDigit('0')); 733 assertEquals("01", formatter.inputDigit('1')); 734 assertEquals("011", formatter.inputDigit('1')); 735 assertEquals("011 1", formatter.inputDigit('1')); 736 assertEquals("011 11", formatter.inputDigit('1')); 737 assertEquals("011113", formatter.inputDigit('3')); 738 739 // +81 3332 2 5678 740 formatter.clear(); 741 assertEquals("+", formatter.inputDigit('+')); 742 assertEquals("+8", formatter.inputDigit('8')); 743 assertEquals("+81 ", formatter.inputDigit('1')); 744 assertEquals("+81 3", formatter.inputDigit('3')); 745 assertEquals("+81 33", formatter.inputDigit('3')); 746 assertEquals("+81 33 3", formatter.inputDigit('3')); 747 assertEquals("+81 3332", formatter.inputDigit('2')); 748 assertEquals("+81 3332 2", formatter.inputDigit('2')); 749 assertEquals("+81 3332 2 5", formatter.inputDigit('5')); 750 assertEquals("+81 3332 2 56", formatter.inputDigit('6')); 751 assertEquals("+81 3332 2 567", formatter.inputDigit('7')); 752 assertEquals("+81 3332 2 5678", formatter.inputDigit('8')); 753 } 754 755 public void testAYTFLongIDD_AU() { 756 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("AU"); 757 // 0011 1 650 253 2250 758 assertEquals("0", formatter.inputDigit('0')); 759 assertEquals("00", formatter.inputDigit('0')); 760 assertEquals("001", formatter.inputDigit('1')); 761 assertEquals("0011", formatter.inputDigit('1')); 762 assertEquals("0011 1 ", formatter.inputDigit('1')); 763 assertEquals("0011 1 6", formatter.inputDigit('6')); 764 assertEquals("0011 1 65", formatter.inputDigit('5')); 765 assertEquals("0011 1 650", formatter.inputDigit('0')); 766 assertEquals("0011 1 650 2", formatter.inputDigit('2')); 767 assertEquals("0011 1 650 25", formatter.inputDigit('5')); 768 assertEquals("0011 1 650 253", formatter.inputDigit('3')); 769 assertEquals("0011 1 650 253 2", formatter.inputDigit('2')); 770 assertEquals("0011 1 650 253 22", formatter.inputDigit('2')); 771 assertEquals("0011 1 650 253 222", formatter.inputDigit('2')); 772 assertEquals("0011 1 650 253 2222", formatter.inputDigit('2')); 773 774 // 0011 81 3332 2 5678 775 formatter.clear(); 776 assertEquals("0", formatter.inputDigit('0')); 777 assertEquals("00", formatter.inputDigit('0')); 778 assertEquals("001", formatter.inputDigit('1')); 779 assertEquals("0011", formatter.inputDigit('1')); 780 assertEquals("00118", formatter.inputDigit('8')); 781 assertEquals("0011 81 ", formatter.inputDigit('1')); 782 assertEquals("0011 81 3", formatter.inputDigit('3')); 783 assertEquals("0011 81 33", formatter.inputDigit('3')); 784 assertEquals("0011 81 33 3", formatter.inputDigit('3')); 785 assertEquals("0011 81 3332", formatter.inputDigit('2')); 786 assertEquals("0011 81 3332 2", formatter.inputDigit('2')); 787 assertEquals("0011 81 3332 2 5", formatter.inputDigit('5')); 788 assertEquals("0011 81 3332 2 56", formatter.inputDigit('6')); 789 assertEquals("0011 81 3332 2 567", formatter.inputDigit('7')); 790 assertEquals("0011 81 3332 2 5678", formatter.inputDigit('8')); 791 792 // 0011 244 250 253 222 793 formatter.clear(); 794 assertEquals("0", formatter.inputDigit('0')); 795 assertEquals("00", formatter.inputDigit('0')); 796 assertEquals("001", formatter.inputDigit('1')); 797 assertEquals("0011", formatter.inputDigit('1')); 798 assertEquals("00112", formatter.inputDigit('2')); 799 assertEquals("001124", formatter.inputDigit('4')); 800 assertEquals("0011 244 ", formatter.inputDigit('4')); 801 assertEquals("0011 244 2", formatter.inputDigit('2')); 802 assertEquals("0011 244 25", formatter.inputDigit('5')); 803 assertEquals("0011 244 250", formatter.inputDigit('0')); 804 assertEquals("0011 244 250 2", formatter.inputDigit('2')); 805 assertEquals("0011 244 250 25", formatter.inputDigit('5')); 806 assertEquals("0011 244 250 253", formatter.inputDigit('3')); 807 assertEquals("0011 244 250 253 2", formatter.inputDigit('2')); 808 assertEquals("0011 244 250 253 22", formatter.inputDigit('2')); 809 assertEquals("0011 244 250 253 222", formatter.inputDigit('2')); 810 } 811 812 public void testAYTFLongIDD_KR() { 813 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("KR"); 814 // 00300 1 650 253 2222 815 assertEquals("0", formatter.inputDigit('0')); 816 assertEquals("00", formatter.inputDigit('0')); 817 assertEquals("003", formatter.inputDigit('3')); 818 assertEquals("0030", formatter.inputDigit('0')); 819 assertEquals("00300", formatter.inputDigit('0')); 820 assertEquals("00300 1 ", formatter.inputDigit('1')); 821 assertEquals("00300 1 6", formatter.inputDigit('6')); 822 assertEquals("00300 1 65", formatter.inputDigit('5')); 823 assertEquals("00300 1 650", formatter.inputDigit('0')); 824 assertEquals("00300 1 650 2", formatter.inputDigit('2')); 825 assertEquals("00300 1 650 25", formatter.inputDigit('5')); 826 assertEquals("00300 1 650 253", formatter.inputDigit('3')); 827 assertEquals("00300 1 650 253 2", formatter.inputDigit('2')); 828 assertEquals("00300 1 650 253 22", formatter.inputDigit('2')); 829 assertEquals("00300 1 650 253 222", formatter.inputDigit('2')); 830 assertEquals("00300 1 650 253 2222", formatter.inputDigit('2')); 831 } 832 833 public void testAYTFLongNDD_KR() { 834 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("KR"); 835 // 08811-9876-7890 836 assertEquals("0", formatter.inputDigit('0')); 837 assertEquals("08", formatter.inputDigit('8')); 838 assertEquals("088", formatter.inputDigit('8')); 839 assertEquals("0881", formatter.inputDigit('1')); 840 assertEquals("08811", formatter.inputDigit('1')); 841 assertEquals("08811-9", formatter.inputDigit('9')); 842 assertEquals("08811-98", formatter.inputDigit('8')); 843 assertEquals("08811-987", formatter.inputDigit('7')); 844 assertEquals("08811-9876", formatter.inputDigit('6')); 845 assertEquals("08811-9876-7", formatter.inputDigit('7')); 846 assertEquals("08811-9876-78", formatter.inputDigit('8')); 847 assertEquals("08811-9876-789", formatter.inputDigit('9')); 848 assertEquals("08811-9876-7890", formatter.inputDigit('0')); 849 850 // 08500 11-9876-7890 851 formatter.clear(); 852 assertEquals("0", formatter.inputDigit('0')); 853 assertEquals("08", formatter.inputDigit('8')); 854 assertEquals("085", formatter.inputDigit('5')); 855 assertEquals("0850", formatter.inputDigit('0')); 856 assertEquals("08500 ", formatter.inputDigit('0')); 857 assertEquals("08500 1", formatter.inputDigit('1')); 858 assertEquals("08500 11", formatter.inputDigit('1')); 859 assertEquals("08500 11-9", formatter.inputDigit('9')); 860 assertEquals("08500 11-98", formatter.inputDigit('8')); 861 assertEquals("08500 11-987", formatter.inputDigit('7')); 862 assertEquals("08500 11-9876", formatter.inputDigit('6')); 863 assertEquals("08500 11-9876-7", formatter.inputDigit('7')); 864 assertEquals("08500 11-9876-78", formatter.inputDigit('8')); 865 assertEquals("08500 11-9876-789", formatter.inputDigit('9')); 866 assertEquals("08500 11-9876-7890", formatter.inputDigit('0')); 867 } 868 869 public void testAYTFLongNDD_SG() { 870 AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("SG"); 871 // 777777 9876 7890 872 assertEquals("7", formatter.inputDigit('7')); 873 assertEquals("77", formatter.inputDigit('7')); 874 assertEquals("777", formatter.inputDigit('7')); 875 assertEquals("7777", formatter.inputDigit('7')); 876 assertEquals("77777", formatter.inputDigit('7')); 877 assertEquals("777777 ", formatter.inputDigit('7')); 878 assertEquals("777777 9", formatter.inputDigit('9')); 879 assertEquals("777777 98", formatter.inputDigit('8')); 880 assertEquals("777777 987", formatter.inputDigit('7')); 881 assertEquals("777777 9876", formatter.inputDigit('6')); 882 assertEquals("777777 9876 7", formatter.inputDigit('7')); 883 assertEquals("777777 9876 78", formatter.inputDigit('8')); 884 assertEquals("777777 9876 789", formatter.inputDigit('9')); 885 assertEquals("777777 9876 7890", formatter.inputDigit('0')); 886 } 887 } 888