Merge "Add full test coverage for android.app.Person" into pi-dev
am: 2cedf371ed

Change-Id: Id2fae6bd6a2bd0753243ba1688ac2ead1ca79b59
diff --git a/tests/app/src/android/app/cts/PersonTest.java b/tests/app/src/android/app/cts/PersonTest.java
index a5869e6..0607e99 100644
--- a/tests/app/src/android/app/cts/PersonTest.java
+++ b/tests/app/src/android/app/cts/PersonTest.java
@@ -24,8 +24,31 @@
 import android.test.AndroidTestCase;
 
 public class PersonTest extends AndroidTestCase {
+    private static final CharSequence TEST_NAME = "Test Name";
+    private static final String TEST_URI = Uri.fromParts("a", "b", "c").toString();
+    private static final String TEST_KEY = "test key";
 
-    public void testPerson_defaults() {
+    public void testPerson_builder() {
+        Icon testIcon = createIcon();
+        Person person =
+            new Person.Builder()
+                .setName(TEST_NAME)
+                .setIcon(testIcon)
+                .setUri(TEST_URI)
+                .setKey(TEST_KEY)
+                .setBot(true)
+                .setImportant(true)
+                .build();
+
+        assertEquals(TEST_NAME, person.getName());
+        assertEquals(testIcon, person.getIcon());
+        assertEquals(TEST_URI, person.getUri());
+        assertEquals(TEST_KEY, person.getKey());
+        assertTrue(person.isBot());
+        assertTrue(person.isImportant());
+    }
+
+    public void testPerson_builder_defaults() {
         Person person = new Person.Builder().build();
         assertFalse(person.isBot());
         assertFalse(person.isImportant());
@@ -35,11 +58,32 @@
         assertNull(person.getUri());
     }
 
+    public void testToBuilder() {
+        Icon testIcon = createIcon();
+        Person original =
+            new Person.Builder()
+                .setName(TEST_NAME)
+                .setIcon(testIcon)
+                .setUri(TEST_URI)
+                .setKey(TEST_KEY)
+                .setBot(true)
+                .setImportant(true)
+                .build();
+        Person result = original.toBuilder().build();
+
+        assertEquals(TEST_NAME, result.getName());
+        assertEquals(testIcon, result.getIcon());
+        assertEquals(TEST_URI, result.getUri());
+        assertEquals(TEST_KEY, result.getKey());
+        assertTrue(result.isBot());
+        assertTrue(result.isImportant());
+    }
+
     public void testPerson_parcelable() {
         Person person = new Person.Builder()
                 .setBot(true)
                 .setImportant(true)
-                .setIcon(Icon.createWithResource(getContext(), R.drawable.icon_blue))
+                .setIcon(createIcon())
                 .setKey("key")
                 .setName("Name")
                 .setUri(Uri.fromParts("a", "b", "c").toString())
@@ -57,4 +101,16 @@
         assertEquals(person.getName(), result.getName());
         assertEquals(person.getUri(), result.getUri());
     }
+
+    public void testDescribeContents() {
+        Person person = new Person.Builder().build();
+
+        // Person has no special objects, so always return 0 for describing parcelable contents
+        assertEquals(0, person.describeContents());
+    }
+
+    /** Creates and returns an {@link Icon} for testing. */
+    private Icon createIcon() {
+        return Icon.createWithResource(getContext(), R.drawable.icon_blue);
+    }
 }