Improve Contacts_PeopleTest

Bug 5924700

The test fails when there is an account on the device.
Fix this up to allow for a contact to be added to
multiple groups which happens when an account is
signed in.

Change-Id: Id09edafc29e0ffdbbff599d9e643589466ce1042
diff --git a/tests/tests/provider/src/android/provider/cts/Contacts_PeopleTest.java b/tests/tests/provider/src/android/provider/cts/Contacts_PeopleTest.java
index 0f36626..b9d26e6 100644
--- a/tests/tests/provider/src/android/provider/cts/Contacts_PeopleTest.java
+++ b/tests/tests/provider/src/android/provider/cts/Contacts_PeopleTest.java
@@ -40,6 +40,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
+import java.util.List;
 
 @TestTargetClass(android.provider.Contacts.People.class)
 public class Contacts_PeopleTest extends InstrumentationTestCase {
@@ -209,9 +210,16 @@
             cursor.close();
             mRowsAdded.add(People.addToGroup(mContentResolver, personId, groupId));
             cursor = People.queryGroups(mContentResolver, personId);
-            cursor.moveToFirst();
-            assertEquals(personId, cursor.getInt(MEMBERSHIP_PERSON_ID_INDEX));
-            assertEquals(groupId, cursor.getInt(MEMBERSHIP_GROUP_ID_INDEX));
+            boolean found = false;
+            while (cursor.moveToNext()) {
+                assertEquals(personId, cursor.getInt(MEMBERSHIP_PERSON_ID_INDEX));
+                if (cursor.getInt(MEMBERSHIP_GROUP_ID_INDEX) == groupId) {
+                    found = true;
+                    break;
+                }
+            }
+            assertTrue(found);
+
             cursor.close();
 
             // People: test_people_2, Group: test_group_1
@@ -223,14 +231,24 @@
             String groupName = "test_group_1";
             mRowsAdded.add(People.addToGroup(mContentResolver, personId, groupName));
             cursor = People.queryGroups(mContentResolver, personId);
-            cursor.moveToFirst();
-            assertEquals(personId, cursor.getInt(MEMBERSHIP_PERSON_ID_INDEX));
-            groupId = cursor.getInt(MEMBERSHIP_GROUP_ID_INDEX);
+            List<Integer> groupIds = new ArrayList<Integer>();
+            while (cursor.moveToNext()) {
+                assertEquals(personId, cursor.getInt(MEMBERSHIP_PERSON_ID_INDEX));
+                groupIds.add(cursor.getInt(MEMBERSHIP_GROUP_ID_INDEX));
+            }
             cursor.close();
-            cursor = mProvider.query(Groups.CONTENT_URI, GROUPS_PROJECTION,
-                    Groups._ID + "=" + groupId, null, null);
-            cursor.moveToFirst();
-            assertEquals(groupName, cursor.getString(GROUPS_NAME_INDEX));
+
+            found = false;
+            for (int id : groupIds) {
+                cursor = mProvider.query(Groups.CONTENT_URI, GROUPS_PROJECTION,
+                        Groups._ID + "=" + id, null, null);
+                cursor.moveToFirst();
+                if (groupName.equals(cursor.getString(GROUPS_NAME_INDEX))) {
+                    found = true;
+                    break;
+                }
+            }
+            assertTrue(found);
             cursor.close();
         } catch (RemoteException e) {
             fail("Unexpected RemoteException");