Home | History | Annotate | Download | only in phonenumbers
      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