3 * Copyright (C) 2010 Google Inc.
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
19 * @fileoverview Unit tests for the AsYouTypeFormatter.
21 * @author Nikolaos Trogkanis
24 goog.require('goog.testing.jsunit');
25 goog.require('i18n.phonenumbers.AsYouTypeFormatter');
27 function testInvalidRegion() {
28 /** @type {i18n.phonenumbers.AsYouTypeFormatter} */
29 var f = new i18n.phonenumbers.AsYouTypeFormatter('ZZ');
30 assertEquals('+', f.inputDigit('+'));
31 assertEquals('+4', f.inputDigit('4'));
32 assertEquals('+48 ', f.inputDigit('8'));
33 assertEquals('+48 8', f.inputDigit('8'));
34 assertEquals('+48 88', f.inputDigit('8'));
35 assertEquals('+48 88 1', f.inputDigit('1'));
36 assertEquals('+48 88 12', f.inputDigit('2'));
37 assertEquals('+48 88 123', f.inputDigit('3'));
38 assertEquals('+48 88 123 1', f.inputDigit('1'));
39 assertEquals('+48 88 123 12', f.inputDigit('2'));
42 assertEquals('6', f.inputDigit('6'));
43 assertEquals('65', f.inputDigit('5'));
44 assertEquals('650', f.inputDigit('0'));
45 assertEquals('6502', f.inputDigit('2'));
46 assertEquals('65025', f.inputDigit('5'));
47 assertEquals('650253', f.inputDigit('3'));
50 function testAYTFUS() {
51 /** @type {i18n.phonenumbers.AsYouTypeFormatter} */
52 var f = new i18n.phonenumbers.AsYouTypeFormatter('US');
53 assertEquals('6', f.inputDigit('6'));
54 assertEquals('65', f.inputDigit('5'));
55 assertEquals('650', f.inputDigit('0'));
56 assertEquals('650 2', f.inputDigit('2'));
57 assertEquals('650 25', f.inputDigit('5'));
58 assertEquals('650 253', f.inputDigit('3'));
59 // Note this is how a US local number (without area code) should be formatted.
60 assertEquals('650 2532', f.inputDigit('2'));
61 assertEquals('650 253 22', f.inputDigit('2'));
62 assertEquals('650 253 222', f.inputDigit('2'));
63 assertEquals('650 253 2222', f.inputDigit('2'));
66 assertEquals('1', f.inputDigit('1'));
67 assertEquals('16', f.inputDigit('6'));
68 assertEquals('1 65', f.inputDigit('5'));
69 assertEquals('1 650', f.inputDigit('0'));
70 assertEquals('1 650 2', f.inputDigit('2'));
71 assertEquals('1 650 25', f.inputDigit('5'));
72 assertEquals('1 650 253', f.inputDigit('3'));
73 assertEquals('1 650 253 2', f.inputDigit('2'));
74 assertEquals('1 650 253 22', f.inputDigit('2'));
75 assertEquals('1 650 253 222', f.inputDigit('2'));
76 assertEquals('1 650 253 2222', f.inputDigit('2'));
79 assertEquals('0', f.inputDigit('0'));
80 assertEquals('01', f.inputDigit('1'));
81 assertEquals('011 ', f.inputDigit('1'));
82 assertEquals('011 4', f.inputDigit('4'));
83 assertEquals('011 44 ', f.inputDigit('4'));
84 assertEquals('011 44 6', f.inputDigit('6'));
85 assertEquals('011 44 61', f.inputDigit('1'));
86 assertEquals('011 44 6 12', f.inputDigit('2'));
87 assertEquals('011 44 6 123', f.inputDigit('3'));
88 assertEquals('011 44 6 123 1', f.inputDigit('1'));
89 assertEquals('011 44 6 123 12', f.inputDigit('2'));
90 assertEquals('011 44 6 123 123', f.inputDigit('3'));
91 assertEquals('011 44 6 123 123 1', f.inputDigit('1'));
92 assertEquals('011 44 6 123 123 12', f.inputDigit('2'));
93 assertEquals('011 44 6 123 123 123', f.inputDigit('3'));
96 assertEquals('0', f.inputDigit('0'));
97 assertEquals('01', f.inputDigit('1'));
98 assertEquals('011 ', f.inputDigit('1'));
99 assertEquals('011 5', f.inputDigit('5'));
100 assertEquals('011 54 ', f.inputDigit('4'));
101 assertEquals('011 54 9', f.inputDigit('9'));
102 assertEquals('011 54 91', f.inputDigit('1'));
103 assertEquals('011 54 9 11', f.inputDigit('1'));
104 assertEquals('011 54 9 11 2', f.inputDigit('2'));
105 assertEquals('011 54 9 11 23', f.inputDigit('3'));
106 assertEquals('011 54 9 11 231', f.inputDigit('1'));
107 assertEquals('011 54 9 11 2312', f.inputDigit('2'));
108 assertEquals('011 54 9 11 2312 1', f.inputDigit('1'));
109 assertEquals('011 54 9 11 2312 12', f.inputDigit('2'));
110 assertEquals('011 54 9 11 2312 123', f.inputDigit('3'));
111 assertEquals('011 54 9 11 2312 1234', f.inputDigit('4'));
114 assertEquals('0', f.inputDigit('0'));
115 assertEquals('01', f.inputDigit('1'));
116 assertEquals('011 ', f.inputDigit('1'));
117 assertEquals('011 2', f.inputDigit('2'));
118 assertEquals('011 24', f.inputDigit('4'));
119 assertEquals('011 244 ', f.inputDigit('4'));
120 assertEquals('011 244 2', f.inputDigit('2'));
121 assertEquals('011 244 28', f.inputDigit('8'));
122 assertEquals('011 244 280', f.inputDigit('0'));
123 assertEquals('011 244 280 0', f.inputDigit('0'));
124 assertEquals('011 244 280 00', f.inputDigit('0'));
125 assertEquals('011 244 280 000', f.inputDigit('0'));
126 assertEquals('011 244 280 000 0', f.inputDigit('0'));
127 assertEquals('011 244 280 000 00', f.inputDigit('0'));
128 assertEquals('011 244 280 000 000', f.inputDigit('0'));
131 assertEquals('+', f.inputDigit('+'));
132 assertEquals('+4', f.inputDigit('4'));
133 assertEquals('+48 ', f.inputDigit('8'));
134 assertEquals('+48 8', f.inputDigit('8'));
135 assertEquals('+48 88', f.inputDigit('8'));
136 assertEquals('+48 88 1', f.inputDigit('1'));
137 assertEquals('+48 88 12', f.inputDigit('2'));
138 assertEquals('+48 88 123', f.inputDigit('3'));
139 assertEquals('+48 88 123 1', f.inputDigit('1'));
140 assertEquals('+48 88 123 12', f.inputDigit('2'));
141 assertEquals('+48 88 123 12 1', f.inputDigit('1'));
142 assertEquals('+48 88 123 12 12', f.inputDigit('2'));
145 function testAYTFUSFullWidthCharacters() {
146 /** @type {i18n.phonenumbers.AsYouTypeFormatter} */
147 var f = new i18n.phonenumbers.AsYouTypeFormatter('US');
148 assertEquals('\uFF16', f.inputDigit('\uFF16'));
149 assertEquals('\uFF16\uFF15', f.inputDigit('\uFF15'));
150 assertEquals('650', f.inputDigit('\uFF10'));
151 assertEquals('650 2', f.inputDigit('\uFF12'));
152 assertEquals('650 25', f.inputDigit('\uFF15'));
153 assertEquals('650 253', f.inputDigit('\uFF13'));
154 assertEquals('650 2532', f.inputDigit('\uFF12'));
155 assertEquals('650 253 22', f.inputDigit('\uFF12'));
156 assertEquals('650 253 222', f.inputDigit('\uFF12'));
157 assertEquals('650 253 2222', f.inputDigit('\uFF12'));
160 function testAYTFUSMobileShortCode() {
161 /** @type {i18n.phonenumbers.AsYouTypeFormatter} */
162 var f = new i18n.phonenumbers.AsYouTypeFormatter('US');
163 assertEquals('*', f.inputDigit('*'));
164 assertEquals('*1', f.inputDigit('1'));
165 assertEquals('*12', f.inputDigit('2'));
166 assertEquals('*121', f.inputDigit('1'));
167 assertEquals('*121#', f.inputDigit('#'));
170 function testAYTFUSVanityNumber() {
171 /** @type {i18n.phonenumbers.AsYouTypeFormatter} */
172 var f = new i18n.phonenumbers.AsYouTypeFormatter('US');
173 assertEquals('8', f.inputDigit('8'));
174 assertEquals('80', f.inputDigit('0'));
175 assertEquals('800', f.inputDigit('0'));
176 assertEquals('800 ', f.inputDigit(' '));
177 assertEquals('800 M', f.inputDigit('M'));
178 assertEquals('800 MY', f.inputDigit('Y'));
179 assertEquals('800 MY ', f.inputDigit(' '));
180 assertEquals('800 MY A', f.inputDigit('A'));
181 assertEquals('800 MY AP', f.inputDigit('P'));
182 assertEquals('800 MY APP', f.inputDigit('P'));
183 assertEquals('800 MY APPL', f.inputDigit('L'));
184 assertEquals('800 MY APPLE', f.inputDigit('E'));
187 function testAYTFAndRememberPositionUS() {
188 /** @type {i18n.phonenumbers.AsYouTypeFormatter} */
189 var f = new i18n.phonenumbers.AsYouTypeFormatter('US');
190 assertEquals('1', f.inputDigitAndRememberPosition('1'));
191 assertEquals(1, f.getRememberedPosition());
192 assertEquals('16', f.inputDigit('6'));
193 assertEquals('1 65', f.inputDigit('5'));
194 assertEquals(1, f.getRememberedPosition());
195 assertEquals('1 650', f.inputDigitAndRememberPosition('0'));
196 assertEquals(5, f.getRememberedPosition());
197 assertEquals('1 650 2', f.inputDigit('2'));
198 assertEquals('1 650 25', f.inputDigit('5'));
199 // Note the remembered position for digit '0' changes from 4 to 5, because a
200 // space is now inserted in the front.
201 assertEquals(5, f.getRememberedPosition());
202 assertEquals('1 650 253', f.inputDigit('3'));
203 assertEquals('1 650 253 2', f.inputDigit('2'));
204 assertEquals('1 650 253 22', f.inputDigit('2'));
205 assertEquals(5, f.getRememberedPosition());
206 assertEquals('1 650 253 222', f.inputDigitAndRememberPosition('2'));
207 assertEquals(13, f.getRememberedPosition());
208 assertEquals('1 650 253 2222', f.inputDigit('2'));
209 assertEquals(13, f.getRememberedPosition());
210 assertEquals('165025322222', f.inputDigit('2'));
211 assertEquals(10, f.getRememberedPosition());
212 assertEquals('1650253222222', f.inputDigit('2'));
213 assertEquals(10, f.getRememberedPosition());
216 assertEquals('1', f.inputDigit('1'));
217 assertEquals('16', f.inputDigitAndRememberPosition('6'));
218 assertEquals(2, f.getRememberedPosition());
219 assertEquals('1 65', f.inputDigit('5'));
220 assertEquals('1 650', f.inputDigit('0'));
221 assertEquals(3, f.getRememberedPosition());
222 assertEquals('1 650 2', f.inputDigit('2'));
223 assertEquals('1 650 25', f.inputDigit('5'));
224 assertEquals(3, f.getRememberedPosition());
225 assertEquals('1 650 253', f.inputDigit('3'));
226 assertEquals('1 650 253 2', f.inputDigit('2'));
227 assertEquals('1 650 253 22', f.inputDigit('2'));
228 assertEquals(3, f.getRememberedPosition());
229 assertEquals('1 650 253 222', f.inputDigit('2'));
230 assertEquals('1 650 253 2222', f.inputDigit('2'));
231 assertEquals('165025322222', f.inputDigit('2'));
232 assertEquals(2, f.getRememberedPosition());
233 assertEquals('1650253222222', f.inputDigit('2'));
234 assertEquals(2, f.getRememberedPosition());
237 assertEquals('6', f.inputDigit('6'));
238 assertEquals('65', f.inputDigit('5'));
239 assertEquals('650', f.inputDigit('0'));
240 assertEquals('650 2', f.inputDigit('2'));
241 assertEquals('650 25', f.inputDigit('5'));
242 assertEquals('650 253', f.inputDigit('3'));
243 assertEquals('650 2532', f.inputDigitAndRememberPosition('2'));
244 assertEquals(8, f.getRememberedPosition());
245 assertEquals('650 253 22', f.inputDigit('2'));
246 assertEquals(9, f.getRememberedPosition());
247 assertEquals('650 253 222', f.inputDigit('2'));
248 // No more formatting when semicolon is entered.
249 assertEquals('650253222;', f.inputDigit(';'));
250 assertEquals(7, f.getRememberedPosition());
251 assertEquals('650253222;2', f.inputDigit('2'));
254 assertEquals('6', f.inputDigit('6'));
255 assertEquals('65', f.inputDigit('5'));
256 assertEquals('650', f.inputDigit('0'));
257 // No more formatting when users choose to do their own formatting.
258 assertEquals('650-', f.inputDigit('-'));
259 assertEquals('650-2', f.inputDigitAndRememberPosition('2'));
260 assertEquals(5, f.getRememberedPosition());
261 assertEquals('650-25', f.inputDigit('5'));
262 assertEquals(5, f.getRememberedPosition());
263 assertEquals('650-253', f.inputDigit('3'));
264 assertEquals(5, f.getRememberedPosition());
265 assertEquals('650-253-', f.inputDigit('-'));
266 assertEquals('650-253-2', f.inputDigit('2'));
267 assertEquals('650-253-22', f.inputDigit('2'));
268 assertEquals('650-253-222', f.inputDigit('2'));
269 assertEquals('650-253-2222', f.inputDigit('2'));
272 assertEquals('0', f.inputDigit('0'));
273 assertEquals('01', f.inputDigit('1'));
274 assertEquals('011 ', f.inputDigit('1'));
275 assertEquals('011 4', f.inputDigitAndRememberPosition('4'));
276 assertEquals('011 48 ', f.inputDigit('8'));
277 assertEquals(5, f.getRememberedPosition());
278 assertEquals('011 48 8', f.inputDigit('8'));
279 assertEquals(5, f.getRememberedPosition());
280 assertEquals('011 48 88', f.inputDigit('8'));
281 assertEquals('011 48 88 1', f.inputDigit('1'));
282 assertEquals('011 48 88 12', f.inputDigit('2'));
283 assertEquals(5, f.getRememberedPosition());
284 assertEquals('011 48 88 123', f.inputDigit('3'));
285 assertEquals('011 48 88 123 1', f.inputDigit('1'));
286 assertEquals('011 48 88 123 12', f.inputDigit('2'));
287 assertEquals('011 48 88 123 12 1', f.inputDigit('1'));
288 assertEquals('011 48 88 123 12 12', f.inputDigit('2'));
291 assertEquals('+', f.inputDigit('+'));
292 assertEquals('+1', f.inputDigit('1'));
293 assertEquals('+1 6', f.inputDigitAndRememberPosition('6'));
294 assertEquals('+1 65', f.inputDigit('5'));
295 assertEquals('+1 650', f.inputDigit('0'));
296 assertEquals(4, f.getRememberedPosition());
297 assertEquals('+1 650 2', f.inputDigit('2'));
298 assertEquals(4, f.getRememberedPosition());
299 assertEquals('+1 650 25', f.inputDigit('5'));
300 assertEquals('+1 650 253', f.inputDigitAndRememberPosition('3'));
301 assertEquals('+1 650 253 2', f.inputDigit('2'));
302 assertEquals('+1 650 253 22', f.inputDigit('2'));
303 assertEquals('+1 650 253 222', f.inputDigit('2'));
304 assertEquals(10, f.getRememberedPosition());
307 assertEquals('+', f.inputDigit('+'));
308 assertEquals('+1', f.inputDigit('1'));
309 assertEquals('+1 6', f.inputDigitAndRememberPosition('6'));
310 assertEquals('+1 65', f.inputDigit('5'));
311 assertEquals('+1 650', f.inputDigit('0'));
312 assertEquals(4, f.getRememberedPosition());
313 assertEquals('+1 650 2', f.inputDigit('2'));
314 assertEquals(4, f.getRememberedPosition());
315 assertEquals('+1 650 25', f.inputDigit('5'));
316 assertEquals('+1 650 253', f.inputDigit('3'));
317 assertEquals('+1 650 253 2', f.inputDigit('2'));
318 assertEquals('+1 650 253 22', f.inputDigit('2'));
319 assertEquals('+1 650 253 222', f.inputDigit('2'));
320 assertEquals('+1650253222;', f.inputDigit(';'));
321 assertEquals(3, f.getRememberedPosition());
324 function testAYTFGBFixedLine() {
325 /** @type {i18n.phonenumbers.AsYouTypeFormatter} */
326 var f = new i18n.phonenumbers.AsYouTypeFormatter('GB');
327 assertEquals('0', f.inputDigit('0'));
328 assertEquals('02', f.inputDigit('2'));
329 assertEquals('020', f.inputDigit('0'));
330 assertEquals('020 7', f.inputDigitAndRememberPosition('7'));
331 assertEquals(5, f.getRememberedPosition());
332 assertEquals('020 70', f.inputDigit('0'));
333 assertEquals('020 703', f.inputDigit('3'));
334 assertEquals(5, f.getRememberedPosition());
335 assertEquals('020 7031', f.inputDigit('1'));
336 assertEquals('020 7031 3', f.inputDigit('3'));
337 assertEquals('020 7031 30', f.inputDigit('0'));
338 assertEquals('020 7031 300', f.inputDigit('0'));
339 assertEquals('020 7031 3000', f.inputDigit('0'));
342 function testAYTFGBTollFree() {
343 /** @type {i18n.phonenumbers.AsYouTypeFormatter} */
344 var f = new i18n.phonenumbers.AsYouTypeFormatter('gb');
345 assertEquals('0', f.inputDigit('0'));
346 assertEquals('08', f.inputDigit('8'));
347 assertEquals('080', f.inputDigit('0'));
348 assertEquals('080 7', f.inputDigit('7'));
349 assertEquals('080 70', f.inputDigit('0'));
350 assertEquals('080 703', f.inputDigit('3'));
351 assertEquals('080 7031', f.inputDigit('1'));
352 assertEquals('080 7031 3', f.inputDigit('3'));
353 assertEquals('080 7031 30', f.inputDigit('0'));
354 assertEquals('080 7031 300', f.inputDigit('0'));
355 assertEquals('080 7031 3000', f.inputDigit('0'));
358 function testAYTFGBPremiumRate() {
359 /** @type {i18n.phonenumbers.AsYouTypeFormatter} */
360 var f = new i18n.phonenumbers.AsYouTypeFormatter('GB');
361 assertEquals('0', f.inputDigit('0'));
362 assertEquals('09', f.inputDigit('9'));
363 assertEquals('090', f.inputDigit('0'));
364 assertEquals('090 7', f.inputDigit('7'));
365 assertEquals('090 70', f.inputDigit('0'));
366 assertEquals('090 703', f.inputDigit('3'));
367 assertEquals('090 7031', f.inputDigit('1'));
368 assertEquals('090 7031 3', f.inputDigit('3'));
369 assertEquals('090 7031 30', f.inputDigit('0'));
370 assertEquals('090 7031 300', f.inputDigit('0'));
371 assertEquals('090 7031 3000', f.inputDigit('0'));
374 function testAYTFNZMobile() {
375 /** @type {i18n.phonenumbers.AsYouTypeFormatter} */
376 var f = new i18n.phonenumbers.AsYouTypeFormatter('NZ');
377 assertEquals('0', f.inputDigit('0'));
378 assertEquals('02', f.inputDigit('2'));
379 assertEquals('021', f.inputDigit('1'));
380 assertEquals('02-11', f.inputDigit('1'));
381 assertEquals('02-112', f.inputDigit('2'));
382 // Note the unittest is using fake metadata which might produce non-ideal
384 assertEquals('02-112 3', f.inputDigit('3'));
385 assertEquals('02-112 34', f.inputDigit('4'));
386 assertEquals('02-112 345', f.inputDigit('5'));
387 assertEquals('02-112 3456', f.inputDigit('6'));
390 function testAYTFDE() {
391 /** @type {i18n.phonenumbers.AsYouTypeFormatter} */
392 var f = new i18n.phonenumbers.AsYouTypeFormatter('DE');
393 assertEquals('0', f.inputDigit('0'));
394 assertEquals('03', f.inputDigit('3'));
395 assertEquals('030', f.inputDigit('0'));
396 assertEquals('030/1', f.inputDigit('1'));
397 assertEquals('030/12', f.inputDigit('2'));
398 assertEquals('030/123', f.inputDigit('3'));
399 assertEquals('030/1234', f.inputDigit('4'));
403 assertEquals('0', f.inputDigit('0'));
404 assertEquals('04', f.inputDigit('4'));
405 assertEquals('041', f.inputDigit('1'));
406 assertEquals('041 3', f.inputDigit('3'));
407 assertEquals('041 34', f.inputDigit('4'));
408 assertEquals('04134 1', f.inputDigit('1'));
409 assertEquals('04134 12', f.inputDigit('2'));
410 assertEquals('04134 123', f.inputDigit('3'));
411 assertEquals('04134 1234', f.inputDigit('4'));
415 assertEquals('0', f.inputDigit('0'));
416 assertEquals('08', f.inputDigit('8'));
417 assertEquals('080', f.inputDigit('0'));
418 assertEquals('080 2', f.inputDigit('2'));
419 assertEquals('080 21', f.inputDigit('1'));
420 assertEquals('08021 2', f.inputDigit('2'));
421 assertEquals('08021 23', f.inputDigit('3'));
422 assertEquals('08021 234', f.inputDigit('4'));
423 assertEquals('08021 2345', f.inputDigit('5'));
427 assertEquals('0', f.inputDigit('0'));
428 assertEquals('00', f.inputDigit('0'));
429 assertEquals('00 1 ', f.inputDigit('1'));
430 assertEquals('00 1 6', f.inputDigit('6'));
431 assertEquals('00 1 65', f.inputDigit('5'));
432 assertEquals('00 1 650', f.inputDigit('0'));
433 assertEquals('00 1 650 2', f.inputDigit('2'));
434 assertEquals('00 1 650 25', f.inputDigit('5'));
435 assertEquals('00 1 650 253', f.inputDigit('3'));
436 assertEquals('00 1 650 253 2', f.inputDigit('2'));
437 assertEquals('00 1 650 253 22', f.inputDigit('2'));
438 assertEquals('00 1 650 253 222', f.inputDigit('2'));
439 assertEquals('00 1 650 253 2222', f.inputDigit('2'));
442 function testAYTFAR() {
443 /** @type {i18n.phonenumbers.AsYouTypeFormatter} */
444 var f = new i18n.phonenumbers.AsYouTypeFormatter('AR');
445 assertEquals('0', f.inputDigit('0'));
446 assertEquals('01', f.inputDigit('1'));
447 assertEquals('011', f.inputDigit('1'));
448 assertEquals('011 7', f.inputDigit('7'));
449 assertEquals('011 70', f.inputDigit('0'));
450 assertEquals('011 703', f.inputDigit('3'));
451 assertEquals('011 7031', f.inputDigit('1'));
452 assertEquals('011 7031-3', f.inputDigit('3'));
453 assertEquals('011 7031-30', f.inputDigit('0'));
454 assertEquals('011 7031-300', f.inputDigit('0'));
455 assertEquals('011 7031-3000', f.inputDigit('0'));
458 function testAYTFARMobile() {
459 /** @type {i18n.phonenumbers.AsYouTypeFormatter} */
460 var f = new i18n.phonenumbers.AsYouTypeFormatter('AR');
461 assertEquals('+', f.inputDigit('+'));
462 assertEquals('+5', f.inputDigit('5'));
463 assertEquals('+54 ', f.inputDigit('4'));
464 assertEquals('+54 9', f.inputDigit('9'));
465 assertEquals('+54 91', f.inputDigit('1'));
466 assertEquals('+54 9 11', f.inputDigit('1'));
467 assertEquals('+54 9 11 2', f.inputDigit('2'));
468 assertEquals('+54 9 11 23', f.inputDigit('3'));
469 assertEquals('+54 9 11 231', f.inputDigit('1'));
470 assertEquals('+54 9 11 2312', f.inputDigit('2'));
471 assertEquals('+54 9 11 2312 1', f.inputDigit('1'));
472 assertEquals('+54 9 11 2312 12', f.inputDigit('2'));
473 assertEquals('+54 9 11 2312 123', f.inputDigit('3'));
474 assertEquals('+54 9 11 2312 1234', f.inputDigit('4'));
477 function testAYTFKR() {
479 /** @type {i18n.phonenumbers.AsYouTypeFormatter} */
480 var f = new i18n.phonenumbers.AsYouTypeFormatter('KR');
481 assertEquals('+', f.inputDigit('+'));
482 assertEquals('+8', f.inputDigit('8'));
483 assertEquals('+82 ', f.inputDigit('2'));
484 assertEquals('+82 5', f.inputDigit('5'));
485 assertEquals('+82 51', f.inputDigit('1'));
486 assertEquals('+82 51-2', f.inputDigit('2'));
487 assertEquals('+82 51-23', f.inputDigit('3'));
488 assertEquals('+82 51-234', f.inputDigit('4'));
489 assertEquals('+82 51-234-5', f.inputDigit('5'));
490 assertEquals('+82 51-234-56', f.inputDigit('6'));
491 assertEquals('+82 51-234-567', f.inputDigit('7'));
492 assertEquals('+82 51-234-5678', f.inputDigit('8'));
496 assertEquals('+', f.inputDigit('+'));
497 assertEquals('+8', f.inputDigit('8'));
498 assertEquals('+82 ', f.inputDigit('2'));
499 assertEquals('+82 2', f.inputDigit('2'));
500 assertEquals('+82 25', f.inputDigit('5'));
501 assertEquals('+82 2-53', f.inputDigit('3'));
502 assertEquals('+82 2-531', f.inputDigit('1'));
503 assertEquals('+82 2-531-5', f.inputDigit('5'));
504 assertEquals('+82 2-531-56', f.inputDigit('6'));
505 assertEquals('+82 2-531-567', f.inputDigit('7'));
506 assertEquals('+82 2-531-5678', f.inputDigit('8'));
510 assertEquals('+', f.inputDigit('+'));
511 assertEquals('+8', f.inputDigit('8'));
512 assertEquals('+82 ', f.inputDigit('2'));
513 assertEquals('+82 2', f.inputDigit('2'));
514 assertEquals('+82 23', f.inputDigit('3'));
515 assertEquals('+82 2-36', f.inputDigit('6'));
516 assertEquals('+82 2-366', f.inputDigit('6'));
517 assertEquals('+82 2-3665', f.inputDigit('5'));
518 assertEquals('+82 2-3665-5', f.inputDigit('5'));
519 assertEquals('+82 2-3665-56', f.inputDigit('6'));
520 assertEquals('+82 2-3665-567', f.inputDigit('7'));
521 assertEquals('+82 2-3665-5678', f.inputDigit('8'));
525 assertEquals('0', f.inputDigit('0'));
526 assertEquals('02', f.inputDigit('2'));
527 assertEquals('021', f.inputDigit('1'));
528 assertEquals('02-11', f.inputDigit('1'));
529 assertEquals('02-114', f.inputDigit('4'));
533 assertEquals('0', f.inputDigit('0'));
534 assertEquals('02', f.inputDigit('2'));
535 assertEquals('021', f.inputDigit('1'));
536 assertEquals('02-13', f.inputDigit('3'));
537 assertEquals('02-130', f.inputDigit('0'));
538 assertEquals('02-1300', f.inputDigit('0'));
542 assertEquals('0', f.inputDigit('0'));
543 assertEquals('01', f.inputDigit('1'));
544 assertEquals('011', f.inputDigit('1'));
545 assertEquals('011-4', f.inputDigit('4'));
546 assertEquals('011-45', f.inputDigit('5'));
547 assertEquals('011-456', f.inputDigit('6'));
548 assertEquals('011-456-7', f.inputDigit('7'));
549 assertEquals('011-456-78', f.inputDigit('8'));
550 assertEquals('011-456-789', f.inputDigit('9'));
551 assertEquals('011-456-7890', f.inputDigit('0'));
555 assertEquals('0', f.inputDigit('0'));
556 assertEquals('01', f.inputDigit('1'));
557 assertEquals('011', f.inputDigit('1'));
558 assertEquals('011-9', f.inputDigit('9'));
559 assertEquals('011-98', f.inputDigit('8'));
560 assertEquals('011-987', f.inputDigit('7'));
561 assertEquals('011-9876', f.inputDigit('6'));
562 assertEquals('011-9876-7', f.inputDigit('7'));
563 assertEquals('011-9876-78', f.inputDigit('8'));
564 assertEquals('011-9876-789', f.inputDigit('9'));
565 assertEquals('011-9876-7890', f.inputDigit('0'));
568 function testAYTFMultipleLeadingDigitPatterns() {
570 /** @type {i18n.phonenumbers.AsYouTypeFormatter} */
571 var f = new i18n.phonenumbers.AsYouTypeFormatter('JP');
572 assertEquals('+', f.inputDigit('+'));
573 assertEquals('+8', f.inputDigit('8'));
574 assertEquals('+81 ', f.inputDigit('1'));
575 assertEquals('+81 5', f.inputDigit('5'));
576 assertEquals('+81 50', f.inputDigit('0'));
577 assertEquals('+81 50 2', f.inputDigit('2'));
578 assertEquals('+81 50 23', f.inputDigit('3'));
579 assertEquals('+81 50 234', f.inputDigit('4'));
580 assertEquals('+81 50 2345', f.inputDigit('5'));
581 assertEquals('+81 50 2345 6', f.inputDigit('6'));
582 assertEquals('+81 50 2345 67', f.inputDigit('7'));
583 assertEquals('+81 50 2345 678', f.inputDigit('8'));
584 assertEquals('+81 50 2345 6789', f.inputDigit('9'));
588 assertEquals('+', f.inputDigit('+'));
589 assertEquals('+8', f.inputDigit('8'));
590 assertEquals('+81 ', f.inputDigit('1'));
591 assertEquals('+81 2', f.inputDigit('2'));
592 assertEquals('+81 22', f.inputDigit('2'));
593 assertEquals('+81 22 2', f.inputDigit('2'));
594 assertEquals('+81 22 21', f.inputDigit('1'));
595 assertEquals('+81 2221 2', f.inputDigit('2'));
596 assertEquals('+81 222 12 5', f.inputDigit('5'));
597 assertEquals('+81 222 12 56', f.inputDigit('6'));
598 assertEquals('+81 222 12 567', f.inputDigit('7'));
599 assertEquals('+81 222 12 5678', f.inputDigit('8'));
603 assertEquals('+', f.inputDigit('+'));
604 assertEquals('+8', f.inputDigit('8'));
605 assertEquals('+81 ', f.inputDigit('1'));
606 assertEquals('+81 3', f.inputDigit('3'));
607 assertEquals('+81 33', f.inputDigit('3'));
608 assertEquals('+81 33 3', f.inputDigit('3'));
609 assertEquals('+81 3332', f.inputDigit('2'));
610 assertEquals('+81 3332 2', f.inputDigit('2'));
611 assertEquals('+81 3332 2 5', f.inputDigit('5'));
612 assertEquals('+81 3332 2 56', f.inputDigit('6'));
613 assertEquals('+81 3332 2 567', f.inputDigit('7'));
614 assertEquals('+81 3332 2 5678', f.inputDigit('8'));