JAVA: Move RegionCode class to let it be used by all the unit tests.
authorphilip.liard@gmail.com <philip.liard@gmail.com@ee073f10-1060-11df-b6a4-87a95322a99c>
Wed, 7 Sep 2011 10:10:26 +0000 (10:10 +0000)
committerphilip.liard@gmail.com <philip.liard@gmail.com@ee073f10-1060-11df-b6a4-87a95322a99c>
Wed, 7 Sep 2011 10:10:26 +0000 (10:10 +0000)
git-svn-id: http://libphonenumber.googlecode.com/svn/trunk@344 ee073f10-1060-11df-b6a4-87a95322a99c

java/test/com/google/i18n/phonenumbers/AsYouTypeFormatterTest.java
java/test/com/google/i18n/phonenumbers/PhoneNumberMatcherTest.java
java/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java
java/test/com/google/i18n/phonenumbers/RegionCode.java [new file with mode: 0644]

index 6760857..196da6f 100644 (file)
@@ -35,7 +35,7 @@ public class AsYouTypeFormatterTest extends TestCase {
   }
 
   public void testInvalidRegion() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("ZZ");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.ZZ);
     assertEquals("+", formatter.inputDigit('+'));
     assertEquals("+4", formatter.inputDigit('4'));
     assertEquals("+48 ", formatter.inputDigit('8'));
@@ -57,7 +57,7 @@ public class AsYouTypeFormatterTest extends TestCase {
   }
 
   public void testInvalidPlusSign() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("ZZ");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.ZZ);
     assertEquals("+", formatter.inputDigit('+'));
     assertEquals("+4", formatter.inputDigit('4'));
     assertEquals("+48 ", formatter.inputDigit('8'));
@@ -77,7 +77,7 @@ public class AsYouTypeFormatterTest extends TestCase {
     // See http://code.google.com/p/libphonenumber/issues/detail?id=36
     // The bug occurred last time for countries which have two formatting rules with exactly the
     // same leading digits pattern but differ in length.
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("ZZ");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.ZZ);
     assertEquals("+", formatter.inputDigit('+'));
     assertEquals("+8", formatter.inputDigit('8'));
     assertEquals("+81 ", formatter.inputDigit('1'));
@@ -96,7 +96,7 @@ public class AsYouTypeFormatterTest extends TestCase {
   }
 
   public void testAYTFUS() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("US");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.US);
     assertEquals("6", formatter.inputDigit('6'));
     assertEquals("65", formatter.inputDigit('5'));
     assertEquals("650", formatter.inputDigit('0'));
@@ -190,7 +190,7 @@ public class AsYouTypeFormatterTest extends TestCase {
   }
 
   public void testAYTFUSFullWidthCharacters() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("US");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.US);
     assertEquals("\uFF16", formatter.inputDigit('\uFF16'));
     assertEquals("\uFF16\uFF15", formatter.inputDigit('\uFF15'));
     assertEquals("650", formatter.inputDigit('\uFF10'));
@@ -204,7 +204,7 @@ public class AsYouTypeFormatterTest extends TestCase {
   }
 
   public void testAYTFUSMobileShortCode() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("US");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.US);
     assertEquals("*", formatter.inputDigit('*'));
     assertEquals("*1", formatter.inputDigit('1'));
     assertEquals("*12", formatter.inputDigit('2'));
@@ -213,7 +213,7 @@ public class AsYouTypeFormatterTest extends TestCase {
   }
 
   public void testAYTFUSVanityNumber() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("US");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.US);
     assertEquals("8", formatter.inputDigit('8'));
     assertEquals("80", formatter.inputDigit('0'));
     assertEquals("800", formatter.inputDigit('0'));
@@ -229,7 +229,7 @@ public class AsYouTypeFormatterTest extends TestCase {
   }
 
   public void testAYTFAndRememberPositionUS() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("US");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.US);
     assertEquals("1", formatter.inputDigitAndRememberPosition('1'));
     assertEquals(1, formatter.getRememberedPosition());
     assertEquals("16", formatter.inputDigit('6'));
@@ -365,7 +365,7 @@ public class AsYouTypeFormatterTest extends TestCase {
   }
 
   public void testAYTFGBFixedLine() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("GB");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.GB);
     assertEquals("0", formatter.inputDigit('0'));
     assertEquals("02", formatter.inputDigit('2'));
     assertEquals("020", formatter.inputDigit('0'));
@@ -382,7 +382,7 @@ public class AsYouTypeFormatterTest extends TestCase {
   }
 
   public void testAYTFGBTollFree() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("GB");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.GB);
     assertEquals("0", formatter.inputDigit('0'));
     assertEquals("08", formatter.inputDigit('8'));
     assertEquals("080", formatter.inputDigit('0'));
@@ -397,7 +397,7 @@ public class AsYouTypeFormatterTest extends TestCase {
   }
 
   public void testAYTFGBPremiumRate() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("GB");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.GB);
     assertEquals("0", formatter.inputDigit('0'));
     assertEquals("09", formatter.inputDigit('9'));
     assertEquals("090", formatter.inputDigit('0'));
@@ -412,7 +412,7 @@ public class AsYouTypeFormatterTest extends TestCase {
   }
 
   public void testAYTFNZMobile() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("NZ");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.NZ);
     assertEquals("0", formatter.inputDigit('0'));
     assertEquals("02", formatter.inputDigit('2'));
     assertEquals("021", formatter.inputDigit('1'));
@@ -426,7 +426,7 @@ public class AsYouTypeFormatterTest extends TestCase {
   }
 
   public void testAYTFDE() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("DE");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.DE);
     assertEquals("0", formatter.inputDigit('0'));
     assertEquals("03", formatter.inputDigit('3'));
     assertEquals("030", formatter.inputDigit('0'));
@@ -477,7 +477,7 @@ public class AsYouTypeFormatterTest extends TestCase {
   }
 
   public void testAYTFAR() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("AR");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.AR);
     assertEquals("0", formatter.inputDigit('0'));
     assertEquals("01", formatter.inputDigit('1'));
     assertEquals("011", formatter.inputDigit('1'));
@@ -492,7 +492,7 @@ public class AsYouTypeFormatterTest extends TestCase {
   }
 
   public void testAYTFARMobile() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("AR");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.AR);
     assertEquals("+", formatter.inputDigit('+'));
     assertEquals("+5", formatter.inputDigit('5'));
     assertEquals("+54 ", formatter.inputDigit('4'));
@@ -511,7 +511,7 @@ public class AsYouTypeFormatterTest extends TestCase {
 
   public void testAYTFKR() {
     // +82 51 234 5678
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("KR");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.KR);
     assertEquals("+", formatter.inputDigit('+'));
     assertEquals("+8", formatter.inputDigit('8'));
     assertEquals("+82 ", formatter.inputDigit('2'));
@@ -600,7 +600,7 @@ public class AsYouTypeFormatterTest extends TestCase {
   }
 
   public void testAYTF_MX() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("MX");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.MX);
 
     // +52 800 123 4567
     assertEquals("+", formatter.inputDigit('+'));
@@ -686,7 +686,7 @@ public class AsYouTypeFormatterTest extends TestCase {
 
   public void testAYTFMultipleLeadingDigitPatterns() {
     // +81 50 2345 6789
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("JP");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.JP);
     assertEquals("+", formatter.inputDigit('+'));
     assertEquals("+8", formatter.inputDigit('8'));
     assertEquals("+81 ", formatter.inputDigit('1'));
index 9fc4c19..9fee8c9 100644 (file)
@@ -44,141 +44,141 @@ public class PhoneNumberMatcherTest extends TestCase {
   /** See {@link PhoneNumberUtilTest#testParseNationalNumber()}. */
   public void testFindNationalNumber() throws Exception {
     // same cases as in testParseNationalNumber
-    doTestFindInContext("033316005", "NZ");
-    doTestFindInContext("33316005", "NZ");
+    doTestFindInContext("033316005", RegionCode.NZ);
+    doTestFindInContext("33316005", RegionCode.NZ);
     // National prefix attached and some formatting present.
-    doTestFindInContext("03-331 6005", "NZ");
-    doTestFindInContext("03 331 6005", "NZ");
+    doTestFindInContext("03-331 6005", RegionCode.NZ);
+    doTestFindInContext("03 331 6005", RegionCode.NZ);
     // Testing international prefixes.
     // Should strip country code.
-    doTestFindInContext("0064 3 331 6005", "NZ");
+    doTestFindInContext("0064 3 331 6005", RegionCode.NZ);
     // Try again, but this time we have an international number with Region Code US. It should
     // recognize the country code and parse accordingly.
-    doTestFindInContext("01164 3 331 6005", "US");
-    doTestFindInContext("+64 3 331 6005", "US");
+    doTestFindInContext("01164 3 331 6005", RegionCode.US);
+    doTestFindInContext("+64 3 331 6005", RegionCode.US);
 
-    doTestFindInContext("64(0)64123456", "NZ");
+    doTestFindInContext("64(0)64123456", RegionCode.NZ);
     // Check that using a "/" is fine in a phone number.
-    doTestFindInContext("123/45678", "DE");
-    doTestFindInContext("123-456-7890", "US");
+    doTestFindInContext("123/45678", RegionCode.DE);
+    doTestFindInContext("123-456-7890", RegionCode.US);
   }
 
   /** See {@link PhoneNumberUtilTest#testParseWithInternationalPrefixes()}. */
   public void testFindWithInternationalPrefixes() throws Exception {
-    doTestFindInContext("+1 (650) 333-6000", "NZ");
-    doTestFindInContext("1-650-333-6000", "US");
+    doTestFindInContext("+1 (650) 333-6000", RegionCode.NZ);
+    doTestFindInContext("1-650-333-6000", RegionCode.US);
     // Calling the US number from Singapore by using different service providers
     // 1st test: calling using SingTel IDD service (IDD is 001)
-    doTestFindInContext("0011-650-333-6000", "SG");
+    doTestFindInContext("0011-650-333-6000", RegionCode.SG);
     // 2nd test: calling using StarHub IDD service (IDD is 008)
-    doTestFindInContext("0081-650-333-6000", "SG");
+    doTestFindInContext("0081-650-333-6000", RegionCode.SG);
     // 3rd test: calling using SingTel V019 service (IDD is 019)
-    doTestFindInContext("0191-650-333-6000", "SG");
+    doTestFindInContext("0191-650-333-6000", RegionCode.SG);
     // Calling the US number from Poland
-    doTestFindInContext("0~01-650-333-6000", "PL");
+    doTestFindInContext("0~01-650-333-6000", RegionCode.PL);
     // Using "++" at the start.
-    doTestFindInContext("++1 (650) 333-6000", "PL");
+    doTestFindInContext("++1 (650) 333-6000", RegionCode.PL);
     // Using a full-width plus sign.
-    doTestFindInContext("\uFF0B1 (650) 333-6000", "SG");
+    doTestFindInContext("\uFF0B1 (650) 333-6000", RegionCode.SG);
     // The whole number, including punctuation, is here represented in full-width form.
     doTestFindInContext("\uFF0B\uFF11\u3000\uFF08\uFF16\uFF15\uFF10\uFF09" +
         "\u3000\uFF13\uFF13\uFF13\uFF0D\uFF16\uFF10\uFF10\uFF10",
-        "SG");
+        RegionCode.SG);
   }
 
   /** See {@link PhoneNumberUtilTest#testParseWithLeadingZero()}. */
   public void testFindWithLeadingZero() throws Exception {
-    doTestFindInContext("+39 02-36618 300", "NZ");
-    doTestFindInContext("02-36618 300", "IT");
-    doTestFindInContext("312 345 678", "IT");
+    doTestFindInContext("+39 02-36618 300", RegionCode.NZ);
+    doTestFindInContext("02-36618 300", RegionCode.IT);
+    doTestFindInContext("312 345 678", RegionCode.IT);
   }
 
   /** See {@link PhoneNumberUtilTest#testParseNationalNumberArgentina()}. */
   public void testFindNationalNumberArgentina() throws Exception {
     // Test parsing mobile numbers of Argentina.
-    doTestFindInContext("+54 9 343 555 1212", "AR");
-    doTestFindInContext("0343 15 555 1212", "AR");
+    doTestFindInContext("+54 9 343 555 1212", RegionCode.AR);
+    doTestFindInContext("0343 15 555 1212", RegionCode.AR);
 
-    doTestFindInContext("+54 9 3715 65 4320", "AR");
-    doTestFindInContext("03715 15 65 4320", "AR");
+    doTestFindInContext("+54 9 3715 65 4320", RegionCode.AR);
+    doTestFindInContext("03715 15 65 4320", RegionCode.AR);
 
     // Test parsing fixed-line numbers of Argentina.
-    doTestFindInContext("+54 11 3797 0000", "AR");
-    doTestFindInContext("011 3797 0000", "AR");
+    doTestFindInContext("+54 11 3797 0000", RegionCode.AR);
+    doTestFindInContext("011 3797 0000", RegionCode.AR);
 
-    doTestFindInContext("+54 3715 65 4321", "AR");
-    doTestFindInContext("03715 65 4321", "AR");
+    doTestFindInContext("+54 3715 65 4321", RegionCode.AR);
+    doTestFindInContext("03715 65 4321", RegionCode.AR);
 
-    doTestFindInContext("+54 23 1234 0000", "AR");
-    doTestFindInContext("023 1234 0000", "AR");
+    doTestFindInContext("+54 23 1234 0000", RegionCode.AR);
+    doTestFindInContext("023 1234 0000", RegionCode.AR);
   }
 
   /** See {@link PhoneNumberUtilTest#testParseWithXInNumber()}. */
   public void testFindWithXInNumber() throws Exception {
-    doTestFindInContext("(0xx) 123456789", "AR");
+    doTestFindInContext("(0xx) 123456789", RegionCode.AR);
     // A case where x denotes both carrier codes and extension symbol.
-    doTestFindInContext("(0xx) 123456789 x 1234", "AR");
+    doTestFindInContext("(0xx) 123456789 x 1234", RegionCode.AR);
 
     // This test is intentionally constructed such that the number of digit after xx is larger than
     // 7, so that the number won't be mistakenly treated as an extension, as we allow extensions up
     // to 7 digits. This assumption is okay for now as all the countries where a carrier selection
     // code is written in the form of xx have a national significant number of length larger than 7.
-    doTestFindInContext("011xx5481429712", "US");
+    doTestFindInContext("011xx5481429712", RegionCode.US);
   }
 
   /** See {@link PhoneNumberUtilTest#testParseNumbersMexico()}. */
   public void testFindNumbersMexico() throws Exception {
     // Test parsing fixed-line numbers of Mexico.
-    doTestFindInContext("+52 (449)978-0001", "MX");
-    doTestFindInContext("01 (449)978-0001", "MX");
-    doTestFindInContext("(449)978-0001", "MX");
+    doTestFindInContext("+52 (449)978-0001", RegionCode.MX);
+    doTestFindInContext("01 (449)978-0001", RegionCode.MX);
+    doTestFindInContext("(449)978-0001", RegionCode.MX);
 
     // Test parsing mobile numbers of Mexico.
-    doTestFindInContext("+52 1 33 1234-5678", "MX");
-    doTestFindInContext("044 (33) 1234-5678", "MX");
-    doTestFindInContext("045 33 1234-5678", "MX");
+    doTestFindInContext("+52 1 33 1234-5678", RegionCode.MX);
+    doTestFindInContext("044 (33) 1234-5678", RegionCode.MX);
+    doTestFindInContext("045 33 1234-5678", RegionCode.MX);
   }
 
   /** See {@link PhoneNumberUtilTest#testParseNumbersWithPlusWithNoRegion()}. */
   public void testFindNumbersWithPlusWithNoRegion() throws Exception {
-    // "ZZ" is allowed only if the number starts with a '+' - then the country code can be
+    // RegionCode.ZZ is allowed only if the number starts with a '+' - then the country code can be
     // calculated.
-    doTestFindInContext("+64 3 331 6005", "ZZ");
+    doTestFindInContext("+64 3 331 6005", RegionCode.ZZ);
     // Null is also allowed for the region code in these cases.
     doTestFindInContext("+64 3 331 6005", null);
   }
 
   /** See {@link PhoneNumberUtilTest#testParseExtensions()}. */
   public void testFindExtensions() throws Exception {
-    doTestFindInContext("03 331 6005 ext 3456", "NZ");
-    doTestFindInContext("03-3316005x3456", "NZ");
-    doTestFindInContext("03-3316005 int.3456", "NZ");
-    doTestFindInContext("03 3316005 #3456", "NZ");
-    doTestFindInContext("0~0 1800 7493 524", "PL");
-    doTestFindInContext("(1800) 7493.524", "US");
+    doTestFindInContext("03 331 6005 ext 3456", RegionCode.NZ);
+    doTestFindInContext("03-3316005x3456", RegionCode.NZ);
+    doTestFindInContext("03-3316005 int.3456", RegionCode.NZ);
+    doTestFindInContext("03 3316005 #3456", RegionCode.NZ);
+    doTestFindInContext("0~0 1800 7493 524", RegionCode.PL);
+    doTestFindInContext("(1800) 7493.524", RegionCode.US);
     // Check that the last instance of an extension token is matched.
-    doTestFindInContext("0~0 1800 7493 524 ~1234", "PL");
+    doTestFindInContext("0~0 1800 7493 524 ~1234", RegionCode.PL);
     // Verifying bug-fix where the last digit of a number was previously omitted if it was a 0 when
     // extracting the extension. Also verifying a few different cases of extensions.
-    doTestFindInContext("+44 2034567890x456", "NZ");
-    doTestFindInContext("+44 2034567890x456", "GB");
-    doTestFindInContext("+44 2034567890 x456", "GB");
-    doTestFindInContext("+44 2034567890 X456", "GB");
-    doTestFindInContext("+44 2034567890 X 456", "GB");
-    doTestFindInContext("+44 2034567890 X  456", "GB");
-    doTestFindInContext("+44 2034567890  X 456", "GB");
-
-    doTestFindInContext("(800) 901-3355 x 7246433", "US");
-    doTestFindInContext("(800) 901-3355 , ext 7246433", "US");
-    doTestFindInContext("(800) 901-3355 ,extension 7246433", "US");
+    doTestFindInContext("+44 2034567890x456", RegionCode.NZ);
+    doTestFindInContext("+44 2034567890x456", RegionCode.GB);
+    doTestFindInContext("+44 2034567890 x456", RegionCode.GB);
+    doTestFindInContext("+44 2034567890 X456", RegionCode.GB);
+    doTestFindInContext("+44 2034567890 X 456", RegionCode.GB);
+    doTestFindInContext("+44 2034567890 X  456", RegionCode.GB);
+    doTestFindInContext("+44 2034567890  X 456", RegionCode.GB);
+
+    doTestFindInContext("(800) 901-3355 x 7246433", RegionCode.US);
+    doTestFindInContext("(800) 901-3355 , ext 7246433", RegionCode.US);
+    doTestFindInContext("(800) 901-3355 ,extension 7246433", RegionCode.US);
     // The next test differs from PhoneNumberUtil -> when matching we don't consider a lone comma to
     // indicate an extension, although we accept it when parsing.
-    doTestFindInContext("(800) 901-3355 ,x 7246433", "US");
-    doTestFindInContext("(800) 901-3355 ext: 7246433", "US");
+    doTestFindInContext("(800) 901-3355 ,x 7246433", RegionCode.US);
+    doTestFindInContext("(800) 901-3355 ext: 7246433", RegionCode.US);
   }
 
   public void testFindInterspersedWithSpace() throws Exception {
-    doTestFindInContext("0 3   3 3 1   6 0 0 5", "NZ");
+    doTestFindInContext("0 3   3 3 1   6 0 0 5", RegionCode.NZ);
   }
 
   /**
@@ -205,10 +205,10 @@ public class PhoneNumberMatcherTest extends TestCase {
   public void testMatchWithSurroundingZipcodes() throws Exception {
     String number = "415-666-7777";
     String zipPreceding = "My address is CA 34215 - " + number + " is my number.";
-    PhoneNumber expectedResult = phoneUtil.parse(number, "US");
+    PhoneNumber expectedResult = phoneUtil.parse(number, RegionCode.US);
 
     Iterator<PhoneNumberMatch> iterator =
-        phoneUtil.findNumbers(zipPreceding, "US").iterator();
+        phoneUtil.findNumbers(zipPreceding, RegionCode.US).iterator();
     PhoneNumberMatch match = iterator.hasNext() ? iterator.next() : null;
     assertNotNull("Did not find a number in '" + zipPreceding + "'; expected " + number, match);
     assertEquals(expectedResult, match.number());
@@ -218,7 +218,7 @@ public class PhoneNumberMatcherTest extends TestCase {
     number = "(415) 666 7777";
 
     String zipFollowing = "My number is " + number + ". 34215 is my zip-code.";
-    iterator = phoneUtil.findNumbers(zipFollowing, "US").iterator();
+    iterator = phoneUtil.findNumbers(zipFollowing, RegionCode.US).iterator();
 
     PhoneNumberMatch matchWithSpaces = iterator.hasNext() ? iterator.next() : null;
     assertNotNull("Did not find a number in '" + zipFollowing + "'; expected " + number,
@@ -286,8 +286,8 @@ public class PhoneNumberMatcherTest extends TestCase {
     // considered possible.
     String numberWithPlus = "+14156667777";
     String numberWithBrackets = "(415)6667777";
-    findMatchesInContexts(possibleOnlyContexts, false, true, "US", numberWithPlus);
-    findMatchesInContexts(possibleOnlyContexts, false, true, "US", numberWithBrackets);
+    findMatchesInContexts(possibleOnlyContexts, false, true, RegionCode.US, numberWithPlus);
+    findMatchesInContexts(possibleOnlyContexts, false, true, RegionCode.US, numberWithBrackets);
 
     ArrayList<NumberContext> validContexts = new ArrayList<NumberContext>();
     validContexts.add(new NumberContext("abc", ""));
@@ -296,8 +296,8 @@ public class PhoneNumberMatcherTest extends TestCase {
     validContexts.add(new NumberContext("\u00C9", " def"));  // Trailing white-space.
 
     // Numbers should be considered valid, since they start with punctuation.
-    findMatchesInContexts(validContexts, true, true, "US", numberWithPlus);
-    findMatchesInContexts(validContexts, true, true, "US", numberWithBrackets);
+    findMatchesInContexts(validContexts, true, true, RegionCode.US, numberWithPlus);
+    findMatchesInContexts(validContexts, true, true, RegionCode.US, numberWithBrackets);
   }
 
   public void testMatchesWithSurroundingChineseChars() throws Exception {
@@ -323,7 +323,7 @@ public class PhoneNumberMatcherTest extends TestCase {
 
   public void testMatchesMultiplePhoneNumbersSeparatedByPhoneNumberPunctuation() throws Exception {
     String text = "Call 650-253-4561 -- 455-234-3451";
-    String region = "US";
+    String region = RegionCode.US;
 
     PhoneNumber number1 = new PhoneNumber();
     number1.setCountryCode(phoneUtil.getCountryCodeForRegion(region));
@@ -343,7 +343,7 @@ public class PhoneNumberMatcherTest extends TestCase {
   public void testDoesNotMatchMultiplePhoneNumbersSeparatedWithNoWhiteSpace() throws Exception {
     // No white-space found between numbers - neither is found.
     String text = "Call 650-253-4561--455-234-3451";
-    String region = "US";
+    String region = RegionCode.US;
 
     assertTrue(hasNoMatches(phoneUtil.findNumbers(text, region)));
   }
@@ -352,29 +352,29 @@ public class PhoneNumberMatcherTest extends TestCase {
    * Strings with number-like things that shouldn't be found under any level.
    */
   private static final NumberTest[] IMPOSSIBLE_CASES = {
-    new NumberTest("12345", "US"),
-    new NumberTest("23456789", "US"),
-    new NumberTest("234567890112", "US"),
-    new NumberTest("650+253+1234", "US"),
-    new NumberTest("3/10/1984", "CA"),
-    new NumberTest("03/27/2011", "US"),
-    new NumberTest("31/8/2011", "US"),
-    new NumberTest("1/12/2011", "US"),
-    new NumberTest("10/12/82", "DE"),
+    new NumberTest("12345", RegionCode.US),
+    new NumberTest("23456789", RegionCode.US),
+    new NumberTest("234567890112", RegionCode.US),
+    new NumberTest("650+253+1234", RegionCode.US),
+    new NumberTest("3/10/1984", RegionCode.CA),
+    new NumberTest("03/27/2011", RegionCode.US),
+    new NumberTest("31/8/2011", RegionCode.US),
+    new NumberTest("1/12/2011", RegionCode.US),
+    new NumberTest("10/12/82", RegionCode.DE),
   };
 
   /**
    * Strings with number-like things that should only be found under "possible".
    */
   private static final NumberTest[] POSSIBLE_ONLY_CASES = {
-    new NumberTest("abc8002345678", "US"),
+    new NumberTest("abc8002345678", RegionCode.US),
     // US numbers cannot start with 7 in the test metadata to be valid.
-    new NumberTest("7121115678", "US"),
+    new NumberTest("7121115678", RegionCode.US),
     // 'X' should not be found in numbers at leniencies stricter than POSSIBLE, unless it represents
     // a carrier code or extension.
-    new NumberTest("1650 x 253 - 1234", "US"),
-    new NumberTest("650 x 253 - 1234", "US"),
-    new NumberTest("650x2531234", "US"),
+    new NumberTest("1650 x 253 - 1234", RegionCode.US),
+    new NumberTest("650 x 253 - 1234", RegionCode.US),
+    new NumberTest("650x2531234", RegionCode.US),
   };
 
   /**
@@ -382,16 +382,16 @@ public class PhoneNumberMatcherTest extends TestCase {
    * leniency level.
    */
   private static final NumberTest[] VALID_CASES = {
-    new NumberTest("65 02 53 00 00.", "US"),
-    new NumberTest("6502 538365", "US"),
-    new NumberTest("650//253-1234", "US"),  // 2 slashes are illegal at higher levels
-    new NumberTest("650/253/1234", "US"),
-    new NumberTest("9002309. 158", "US"),
-    new NumberTest("21 7/8 - 14 12/34 - 5", "US"),
-    new NumberTest("12.1 - 23.71 - 23.45", "US"),
-    new NumberTest("1979-2011 100%", "US"),
-    new NumberTest("800 234 1 111x1111", "US"),
-    new NumberTest("+494949-4-94", "DE"),  // National number in wrong format
+    new NumberTest("65 02 53 00 00.", RegionCode.US),
+    new NumberTest("6502 538365", RegionCode.US),
+    new NumberTest("650//253-1234", RegionCode.US),  // 2 slashes are illegal at higher levels
+    new NumberTest("650/253/1234", RegionCode.US),
+    new NumberTest("9002309. 158", RegionCode.US),
+    new NumberTest("21 7/8 - 14 12/34 - 5", RegionCode.US),
+    new NumberTest("12.1 - 23.71 - 23.45", RegionCode.US),
+    new NumberTest("1979-2011 100%", RegionCode.US),
+    new NumberTest("800 234 1 111x1111", RegionCode.US),
+    new NumberTest("+494949-4-94", RegionCode.DE),  // National number in wrong format
   };
 
   /**
@@ -399,35 +399,35 @@ public class PhoneNumberMatcherTest extends TestCase {
    * "strict_grouping" leniency level.
    */
   private static final NumberTest[] STRICT_GROUPING_CASES = {
-    new NumberTest("(415) 6667777", "US"),
-    new NumberTest("415-6667777", "US"),
+    new NumberTest("(415) 6667777", RegionCode.US),
+    new NumberTest("415-6667777", RegionCode.US),
     // Should be found by strict grouping but not exact grouping, as the last two groups are
     // formatted together as a block.
-    new NumberTest("800-2491234", "DE"),
+    new NumberTest("800-2491234", RegionCode.DE),
   };
 
   /**
    * Strings with number-like things that should found at all levels.
    */
   private static final NumberTest[] EXACT_GROUPING_CASES = {
-    new NumberTest("\uFF14\uFF11\uFF15\uFF16\uFF16\uFF16\uFF17\uFF17\uFF17\uFF17", "US"),
-    new NumberTest("\uFF14\uFF11\uFF15-\uFF16\uFF16\uFF16-\uFF17\uFF17\uFF17\uFF17", "US"),
-    new NumberTest("4156667777", "US"),
-    new NumberTest("4156667777 x 123", "US"),
-    new NumberTest("415-666-7777", "US"),
-    new NumberTest("415/666-7777", "US"),
-    new NumberTest("415-666-7777 ext. 503", "US"),
-    new NumberTest("1 415 666 7777 x 123", "US"),
-    new NumberTest("+1 415-666-7777", "US"),
-    new NumberTest("+494949 49", "DE"),
-    new NumberTest("+49-49-34", "DE"),
-    new NumberTest("+49-4931-49", "DE"),
-    new NumberTest("04931-49", "DE"),  // With National Prefix
-    new NumberTest("+49-494949", "DE"),  // One group with country code
-    new NumberTest("+49-494949 ext. 49", "DE"),
-    new NumberTest("+49494949 ext. 49", "DE"),
-    new NumberTest("0494949", "DE"),
-    new NumberTest("0494949 ext. 49", "DE"),
+    new NumberTest("\uFF14\uFF11\uFF15\uFF16\uFF16\uFF16\uFF17\uFF17\uFF17\uFF17", RegionCode.US),
+    new NumberTest("\uFF14\uFF11\uFF15-\uFF16\uFF16\uFF16-\uFF17\uFF17\uFF17\uFF17", RegionCode.US),
+    new NumberTest("4156667777", RegionCode.US),
+    new NumberTest("4156667777 x 123", RegionCode.US),
+    new NumberTest("415-666-7777", RegionCode.US),
+    new NumberTest("415/666-7777", RegionCode.US),
+    new NumberTest("415-666-7777 ext. 503", RegionCode.US),
+    new NumberTest("1 415 666 7777 x 123", RegionCode.US),
+    new NumberTest("+1 415-666-7777", RegionCode.US),
+    new NumberTest("+494949 49", RegionCode.DE),
+    new NumberTest("+49-49-34", RegionCode.DE),
+    new NumberTest("+49-4931-49", RegionCode.DE),
+    new NumberTest("04931-49", RegionCode.DE),  // With National Prefix
+    new NumberTest("+49-494949", RegionCode.DE),  // One group with country code
+    new NumberTest("+49-494949 ext. 49", RegionCode.DE),
+    new NumberTest("+49494949 ext. 49", RegionCode.DE),
+    new NumberTest("0494949", RegionCode.DE),
+    new NumberTest("0494949 ext. 49", RegionCode.DE),
   };
 
   public void testMatchesWithStrictGroupingLeniency() throws Exception {
@@ -534,7 +534,7 @@ public class PhoneNumberMatcherTest extends TestCase {
    */
   private void findMatchesInContexts(List<NumberContext> contexts, boolean isValid,
                                      boolean isPossible) {
-    String region = "US";
+    String region = RegionCode.US;
     String number = "415-666-7777";
 
     findMatchesInContexts(contexts, isValid, isPossible, region, number);
@@ -544,19 +544,19 @@ public class PhoneNumberMatcherTest extends TestCase {
     // The digits up to the ", " form a valid US number, but it shouldn't be matched as one since
     // there was a non-matching bracket present.
     assertTrue(hasNoMatches(phoneUtil.findNumbers(
-        "80.585 [79.964, 81.191]", "US")));
+        "80.585 [79.964, 81.191]", RegionCode.US)));
 
     // The trailing "]" is thrown away before parsing, so the resultant number, while a valid US
     // number, does not have matching brackets.
     assertTrue(hasNoMatches(phoneUtil.findNumbers(
-        "80.585 [79.964]", "US")));
+        "80.585 [79.964]", RegionCode.US)));
 
     assertTrue(hasNoMatches(phoneUtil.findNumbers(
-        "80.585 ((79.964)", "US")));
+        "80.585 ((79.964)", RegionCode.US)));
 
     // This case has too many sets of brackets to be valid.
     assertTrue(hasNoMatches(phoneUtil.findNumbers(
-        "(80).(585) (79).(9)64", "US")));
+        "(80).(585) (79).(9)64", RegionCode.US)));
   }
 
   public void testNoMatchIfRegionIsNull() throws Exception {
@@ -566,19 +566,19 @@ public class PhoneNumberMatcherTest extends TestCase {
   }
 
   public void testNoMatchInEmptyString() throws Exception {
-    assertTrue(hasNoMatches(phoneUtil.findNumbers("", "US")));
-    assertTrue(hasNoMatches(phoneUtil.findNumbers("  ", "US")));
+    assertTrue(hasNoMatches(phoneUtil.findNumbers("", RegionCode.US)));
+    assertTrue(hasNoMatches(phoneUtil.findNumbers("  ", RegionCode.US)));
   }
 
   public void testNoMatchIfNoNumber() throws Exception {
     assertTrue(hasNoMatches(phoneUtil.findNumbers(
-        "Random text body - number is foobar, see you there", "US")));
+        "Random text body - number is foobar, see you there", RegionCode.US)));
   }
 
   public void testSequences() throws Exception {
     // Test multiple occurrences.
     String text = "Call 033316005  or 032316005!";
-    String region = "NZ";
+    String region = RegionCode.NZ;
 
     PhoneNumber number1 = new PhoneNumber();
     number1.setCountryCode(phoneUtil.getCountryCodeForRegion(region));
@@ -598,7 +598,7 @@ public class PhoneNumberMatcherTest extends TestCase {
   }
 
   public void testNullInput() throws Exception {
-    assertTrue(hasNoMatches(phoneUtil.findNumbers(null, "US")));
+    assertTrue(hasNoMatches(phoneUtil.findNumbers(null, RegionCode.US)));
     assertTrue(hasNoMatches(phoneUtil.findNumbers(null, null)));
   }
 
@@ -617,7 +617,7 @@ public class PhoneNumberMatcherTest extends TestCase {
     }
 
     Iterable<PhoneNumberMatch> iterable =
-        phoneUtil.findNumbers(numbers.toString(), "US", Leniency.VALID, 10);
+        phoneUtil.findNumbers(numbers.toString(), RegionCode.US, Leniency.VALID, 10);
     List<PhoneNumber> actual = new ArrayList<PhoneNumber>(100);
     for (PhoneNumberMatch match : iterable) {
       actual.add(match.number());
@@ -636,7 +636,7 @@ public class PhoneNumberMatcherTest extends TestCase {
     }
 
     Iterable<PhoneNumberMatch> iterable =
-        phoneUtil.findNumbers(numbers.toString(), "US", Leniency.VALID, 10);
+        phoneUtil.findNumbers(numbers.toString(), RegionCode.US, Leniency.VALID, 10);
     assertFalse(iterable.iterator().hasNext());
   }
 
@@ -655,7 +655,7 @@ public class PhoneNumberMatcherTest extends TestCase {
     }
 
     Iterable<PhoneNumberMatch> iterable =
-        phoneUtil.findNumbers(numbers.toString(), "US", Leniency.VALID, 10);
+        phoneUtil.findNumbers(numbers.toString(), RegionCode.US, Leniency.VALID, 10);
     List<PhoneNumber> actual = new ArrayList<PhoneNumber>(100);
     for (PhoneNumberMatch match : iterable) {
       actual.add(match.number());
@@ -664,7 +664,7 @@ public class PhoneNumberMatcherTest extends TestCase {
   }
 
   public void testEmptyIteration() throws Exception {
-    Iterable<PhoneNumberMatch> iterable = phoneUtil.findNumbers("", "ZZ");
+    Iterable<PhoneNumberMatch> iterable = phoneUtil.findNumbers("", RegionCode.ZZ);
     Iterator<PhoneNumberMatch> iterator = iterable.iterator();
 
     assertFalse(iterator.hasNext());
@@ -677,7 +677,7 @@ public class PhoneNumberMatcherTest extends TestCase {
   }
 
   public void testSingleIteration() throws Exception {
-    Iterable<PhoneNumberMatch> iterable = phoneUtil.findNumbers("+14156667777", "ZZ");
+    Iterable<PhoneNumberMatch> iterable = phoneUtil.findNumbers("+14156667777", RegionCode.ZZ);
 
     // With hasNext() -> next().
     Iterator<PhoneNumberMatch> iterator = iterable.iterator();
@@ -703,7 +703,7 @@ public class PhoneNumberMatcherTest extends TestCase {
 
   public void testDoubleIteration() throws Exception {
     Iterable<PhoneNumberMatch> iterable =
-        phoneUtil.findNumbers("+14156667777 foobar +14156667777 ", "ZZ");
+        phoneUtil.findNumbers("+14156667777 foobar +14156667777 ", RegionCode.ZZ);
 
     // With hasNext() -> next().
     Iterator<PhoneNumberMatch> iterator = iterable.iterator();
@@ -736,7 +736,7 @@ public class PhoneNumberMatcherTest extends TestCase {
    * change iteration behavior.
    */
   public void testRemovalNotSupported() throws Exception {
-    Iterable<PhoneNumberMatch> iterable = phoneUtil.findNumbers("+14156667777", "ZZ");
+    Iterable<PhoneNumberMatch> iterable = phoneUtil.findNumbers("+14156667777", RegionCode.ZZ);
 
     Iterator<PhoneNumberMatch> iterator = iterable.iterator();
     try {
@@ -768,7 +768,7 @@ public class PhoneNumberMatcherTest extends TestCase {
   private void assertEqualRange(CharSequence text, int index, int start, int end) {
     CharSequence sub = text.subSequence(index, text.length());
     Iterator<PhoneNumberMatch> matches =
-      phoneUtil.findNumbers(sub, "NZ", Leniency.POSSIBLE, Long.MAX_VALUE).iterator();
+      phoneUtil.findNumbers(sub, RegionCode.NZ, Leniency.POSSIBLE, Long.MAX_VALUE).iterator();
     assertTrue(matches.hasNext());
     PhoneNumberMatch match = matches.next();
     assertEquals(start - index, match.start());
index 913e3e7..4057a1e 100644 (file)
@@ -99,29 +99,6 @@ public class PhoneNumberUtilTest extends TestCase {
   private static final PhoneNumber US_TOLLFREE =
       new PhoneNumber().setCountryCode(1).setNationalNumber(8002530000L);
 
-  // Class containing string constants of region codes for easier testing.
-  private static class RegionCode {
-    static final String AD = "AD";
-    static final String AO = "AO";
-    static final String AR = "AR";
-    static final String AU = "AU";
-    static final String BS = "BS";
-    static final String CS = "CS";
-    static final String DE = "DE";
-    static final String GB = "GB";
-    static final String IT = "IT";
-    static final String KR = "KR";
-    static final String MX = "MX";
-    static final String NZ = "NZ";
-    static final String PL = "PL";
-    static final String RE = "RE";
-    static final String SG = "SG";
-    static final String US = "US";
-    static final String YT = "YT";
-    // Official code for the unknown region.
-    static final String ZZ = "ZZ";
-  }
-
   public PhoneNumberUtilTest() {
     phoneUtil = initializePhoneUtilForTesting();
   }
@@ -139,7 +116,7 @@ public class PhoneNumberUtilTest extends TestCase {
 
   public void testGetInstanceLoadUSMetadata() {
     PhoneMetadata metadata = phoneUtil.getMetadataForRegion(RegionCode.US);
-    assertEquals("US", metadata.getId());
+    assertEquals(RegionCode.US, metadata.getId());
     assertEquals(1, metadata.getCountryCode());
     assertEquals("011", metadata.getInternationalPrefix());
     assertTrue(metadata.hasNationalPrefix());
@@ -160,7 +137,7 @@ public class PhoneNumberUtilTest extends TestCase {
 
   public void testGetInstanceLoadDEMetadata() {
     PhoneMetadata metadata = phoneUtil.getMetadataForRegion(RegionCode.DE);
-    assertEquals("DE", metadata.getId());
+    assertEquals(RegionCode.DE, metadata.getId());
     assertEquals(49, metadata.getCountryCode());
     assertEquals("00", metadata.getInternationalPrefix());
     assertEquals("0", metadata.getNationalPrefix());
@@ -180,7 +157,7 @@ public class PhoneNumberUtilTest extends TestCase {
 
   public void testGetInstanceLoadARMetadata() {
     PhoneMetadata metadata = phoneUtil.getMetadataForRegion(RegionCode.AR);
-    assertEquals("AR", metadata.getId());
+    assertEquals(RegionCode.AR, metadata.getId());
     assertEquals(54, metadata.getCountryCode());
     assertEquals("00", metadata.getInternationalPrefix());
     assertEquals("0", metadata.getNationalPrefix());
diff --git a/java/test/com/google/i18n/phonenumbers/RegionCode.java b/java/test/com/google/i18n/phonenumbers/RegionCode.java
new file mode 100644 (file)
index 0000000..ddce1f0
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2011 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.i18n.phonenumbers;
+
+/**
+ * Class containing string constants of region codes for easier testing.
+ */
+final class RegionCode {
+  static final String AD = "AD";
+  static final String AO = "AO";
+  static final String AR = "AR";
+  static final String AU = "AU";
+  static final String BS = "BS";
+  static final String CA = "CA";
+  static final String CN = "CN";
+  static final String CS = "CS";
+  static final String DE = "DE";
+  static final String GB = "GB";
+  static final String IT = "IT";
+  static final String JP = "JP";
+  static final String KR = "KR";
+  static final String MX = "MX";
+  static final String NZ = "NZ";
+  static final String PL = "PL";
+  static final String RE = "RE";
+  static final String SG = "SG";
+  static final String US = "US";
+  static final String YT = "YT";
+  // Official code for the unknown region.
+  static final String ZZ = "ZZ";
+}