Merge "revise Linkify.PHONE_NUMBER CTS" into jb-mr2-dev
diff --git a/tests/tests/text/src/android/text/util/cts/LinkifyTest.java b/tests/tests/text/src/android/text/util/cts/LinkifyTest.java
index 404f9d7..45111f2 100644
--- a/tests/tests/text/src/android/text/util/cts/LinkifyTest.java
+++ b/tests/tests/text/src/android/text/util/cts/LinkifyTest.java
@@ -26,6 +26,7 @@
 import android.text.util.Linkify.TransformFilter;
 import android.widget.TextView;
 
+import java.util.Locale;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -73,7 +74,6 @@
 
     public void testAddLinks1() {
         SpannableString spannable = new SpannableString("name@gmail.com, "
-                + "123456789, tel:(0812)1234567 "
                 + "www.google.com, http://www.google.com/language_tools?hl=en, ");
 
         assertTrue(Linkify.addLinks(spannable, Linkify.WEB_URLS));
@@ -87,12 +87,6 @@
         assertEquals(1, spans.length);
         assertEquals("mailto:name@gmail.com", spans[0].getURL());
 
-        assertTrue(Linkify.addLinks(spannable, Linkify.PHONE_NUMBERS));
-        spans = spannable.getSpans(0, spannable.length(), URLSpan.class);
-        assertEquals(2, spans.length);
-        assertEquals("tel:123456789", spans[0].getURL());
-        assertEquals("tel:08121234567", spans[1].getURL());
-
         try {
             Linkify.addLinks((Spannable) null, Linkify.WEB_URLS);
             fail("Should throw NullPointerException!");
@@ -304,4 +298,43 @@
         assertEquals("test:FilterUpperCase.pattern", spans[0].getURL());
         assertEquals("test:12", spans[1].getURL());
     }
+
+    public void testAddLinks7() {
+        String numbersInvalid = "123456789 not a phone number";
+        String numbersUKLocal = "tel:(0812)1234560 (0812)1234561";
+        String numbersUSLocal = "tel:(812)1234562 (812)123.4563 "
+                + " tel:(800)5551210 (800) 555-1211 555-1212";
+        String numbersIntl = "tel:+4408121234564 +44-0812-123-4565"
+                + " tel:+18005551213 +1-800-555-1214";
+        SpannableString spannable = new SpannableString(
+                numbersInvalid
+                + " " + numbersUKLocal
+                + " " + numbersUSLocal
+                + " " + numbersIntl);
+
+        // phonenumber linkify is locale-dependent
+        if (Locale.US.equals(Locale.getDefault())) {
+            assertTrue(Linkify.addLinks(spannable, Linkify.PHONE_NUMBERS));
+            URLSpan[] spans = spannable.getSpans(0, spannable.length(), URLSpan.class);
+            assertEquals(9, spans.length);
+            assertEquals("tel:8121234562", spans[0].getURL());
+            assertEquals("tel:8121234563", spans[1].getURL());
+            assertEquals("tel:8005551210", spans[2].getURL());
+            assertEquals("tel:8005551211", spans[3].getURL());
+            assertEquals("tel:5551212", spans[4].getURL());
+            assertEquals("tel:+4408121234564", spans[5].getURL());
+            assertEquals("tel:+4408121234565", spans[6].getURL());
+            assertEquals("tel:+18005551213", spans[7].getURL());
+            assertEquals("tel:+18005551214", spans[8].getURL());
+        }
+
+        try {
+            Linkify.addLinks((Spannable) null, Linkify.WEB_URLS);
+            fail("Should throw NullPointerException!");
+        } catch (NullPointerException e) {
+            // expect
+        }
+
+        assertFalse(Linkify.addLinks((Spannable) null, 0));
+    }
 }