Merge "Add CTS for camera continuous autofocus modes." into ics-mr0
diff --git a/tests/tests/provider/src/android/provider/cts/CalendarTest.java b/tests/tests/provider/src/android/provider/cts/CalendarTest.java
index 8cc6be7..8e15189 100644
--- a/tests/tests/provider/src/android/provider/cts/CalendarTest.java
+++ b/tests/tests/provider/src/android/provider/cts/CalendarTest.java
@@ -364,7 +364,6 @@
             }
             values.put(Events.ACCESS_LEVEL, seed % 4);
             values.put(Events.AVAILABILITY, seed % 2);
-            values.put(Events.HAS_ALARM, seed % 2);
             values.put(Events.HAS_EXTENDED_PROPERTIES, seed % 2);
             values.put(Events.HAS_ATTENDEE_DATA, seed % 2);
             values.put(Events.GUESTS_CAN_MODIFY, seed % 2);
@@ -468,7 +467,6 @@
             // TIME_ZONES.length]);
             values.put(Events.ACCESS_LEVEL, seed % 4);
             values.put(Events.AVAILABILITY, seed % 2);
-            values.put(Events.HAS_ALARM, seed % 2);
             values.put(Events.HAS_EXTENDED_PROPERTIES, seed % 2);
             values.put(Events.HAS_ATTENDEE_DATA, seed % 2);
             values.put(Events.GUESTS_CAN_MODIFY, seed % 2);
@@ -551,10 +549,19 @@
          * Looks up the specified Event in the database and returns the "selfAttendeeStatus"
          * value.
          */
-        public static int getSelfAttendeeStatusFromDB(ContentResolver resolver, long eventId) {
+        public static int lookupSelfAttendeeStatus(ContentResolver resolver, long eventId) {
             return getIntFromDatabase(resolver, Events.CONTENT_URI, eventId,
                     Events.SELF_ATTENDEE_STATUS);
         }
+
+        /**
+         * Looks up the specified Event in the database and returns the "hasAlarm"
+         * value.
+         */
+        public static int lookupHasAlarm(ContentResolver resolver, long eventId) {
+            return getIntFromDatabase(resolver, Events.CONTENT_URI, eventId,
+                    Events.HAS_ALARM);
+        }
     }
 
     /**
@@ -1093,7 +1100,7 @@
             int count = mContentResolver.update(uri, update, null, null);
             assertEquals(1, count);
 
-            int status = EventHelper.getSelfAttendeeStatusFromDB(mContentResolver, eventId1);
+            int status = EventHelper.lookupSelfAttendeeStatus(mContentResolver, eventId1);
             assertEquals(Attendees.ATTENDEE_STATUS_ACCEPTED, status);
 
         } finally {
@@ -1119,7 +1126,7 @@
         /*
          * Add a new, non-self attendee to the second event.
          */
-        attId1 = AttendeeHelper.addAttendee(mContentResolver, eventId2,
+        long attId4 = AttendeeHelper.addAttendee(mContentResolver, eventId2,
                 "Diana",
                 "diana@example.com",
                 Attendees.ATTENDEE_STATUS_ACCEPTED,
@@ -1129,7 +1136,7 @@
         /*
          * Confirm that the selfAttendeeStatus on the second event has the default value.
          */
-        int status = EventHelper.getSelfAttendeeStatusFromDB(mContentResolver, eventId2);
+        int status = EventHelper.lookupSelfAttendeeStatus(mContentResolver, eventId2);
         assertEquals(Attendees.ATTENDEE_STATUS_NONE, status);
 
         /*
@@ -1138,14 +1145,14 @@
          */
         ContentValues newSelf = new ContentValues();
         newSelf.put(Attendees.ATTENDEE_EMAIL, CalendarHelper.generateCalendarOwnerEmail(account));
-        count = mContentResolver.update(ContentUris.withAppendedId(Attendees.CONTENT_URI, attId1),
+        count = mContentResolver.update(ContentUris.withAppendedId(Attendees.CONTENT_URI, attId4),
                 newSelf, null, null);
         assertEquals(1, count);
 
         /*
          * Confirm that the event's selfAttendeeStatus has been updated.
          */
-        status = EventHelper.getSelfAttendeeStatusFromDB(mContentResolver, eventId2);
+        status = EventHelper.lookupSelfAttendeeStatus(mContentResolver, eventId2);
         assertEquals(Attendees.ATTENDEE_STATUS_ACCEPTED, status);
 
         /*
@@ -1159,6 +1166,17 @@
          *   selfAttendeeStatus when there are multiple matching Attendees.)
          */
 
+        /*
+         * Test deletion, singly by ID and in bulk.
+         */
+        count = mContentResolver.delete(ContentUris.withAppendedId(Attendees.CONTENT_URI, attId4),
+                null, null);
+        assertEquals(1, count);
+
+        count = mContentResolver.delete(Attendees.CONTENT_URI, Attendees.EVENT_ID + "=?",
+                new String[] { String.valueOf(eventId1) });
+        assertEquals(4, count);     // 3 we created + 1 auto-added by the provider
+
         removeAndVerifyCalendar(account, calendarId);
     }
 
@@ -1181,6 +1199,15 @@
         eventValues = EventHelper.getNewEventValues(account, seed++, calendarId, true);
         long eventId1 = createAndVerifyEvent(account, seed, calendarId, true, eventValues);
         assertTrue(eventId1 >= 0);
+        eventValues = EventHelper.getNewEventValues(account, seed++, calendarId, true);
+        long eventId2 = createAndVerifyEvent(account, seed, calendarId, true, eventValues);
+        assertTrue(eventId2 >= 0);
+
+        // No reminders, hasAlarm should be zero.
+        int hasAlarm = EventHelper.lookupHasAlarm(mContentResolver, eventId1);
+        assertEquals(0, hasAlarm);
+        hasAlarm = EventHelper.lookupHasAlarm(mContentResolver, eventId2);
+        assertEquals(0, hasAlarm);
 
         /*
          * Add some reminders.
@@ -1192,6 +1219,17 @@
         long remId3 = ReminderHelper.addReminder(mContentResolver, eventId1,
                 20, Reminders.METHOD_SMS);  // SMS isn't allowed for this calendar
 
+        // Should have been set to 1 by provider.
+        hasAlarm = EventHelper.lookupHasAlarm(mContentResolver, eventId1);
+        assertEquals(1, hasAlarm);
+
+        // Add a reminder to event2.
+        ReminderHelper.addReminder(mContentResolver, eventId2,
+                20, Reminders.METHOD_DEFAULT);
+        hasAlarm = EventHelper.lookupHasAlarm(mContentResolver, eventId2);
+        assertEquals(1, hasAlarm);
+
+
         /*
          * Check the entries.
          */
@@ -1200,7 +1238,6 @@
             assertEquals(3, cursor.getCount());
             //DatabaseUtils.dumpCursor(cursor);
 
-            // Make sure METHOD_SMS appears exactly once.
             while (cursor.moveToNext()) {
                 int minutes = cursor.getInt(ReminderHelper.REMINDERS_MINUTES_INDEX);
                 int method = cursor.getInt(ReminderHelper.REMINDERS_METHOD_INDEX);
@@ -1248,6 +1285,40 @@
         int method = ReminderHelper.lookupMethod(mContentResolver, remId3);
         assertEquals(Reminders.METHOD_EMAIL, method);
 
+        /*
+         * Delete some / all reminders and confirm that hasAlarm tracks it.
+         *
+         * You can also remove reminders from an event by updating the event_id column, but
+         * that's defined as producing undefined behavior, so we don't do it here.
+         */
+        count = mContentResolver.delete(Reminders.CONTENT_URI,
+                Reminders.EVENT_ID + "=? AND " + Reminders.MINUTES + ">=?",
+                new String[] { String.valueOf(eventId1), "15" });
+        assertEquals(2, count);
+        hasAlarm = EventHelper.lookupHasAlarm(mContentResolver, eventId1);
+        assertEquals(1, hasAlarm);
+
+        // Delete all reminders from both events.
+        count = mContentResolver.delete(Reminders.CONTENT_URI,
+                Reminders.EVENT_ID + "=? OR " + Reminders.EVENT_ID + "=?",
+                new String[] { String.valueOf(eventId1), String.valueOf(eventId2) });
+        assertEquals(2, count);
+        hasAlarm = EventHelper.lookupHasAlarm(mContentResolver, eventId1);
+        assertEquals(0, hasAlarm);
+        hasAlarm = EventHelper.lookupHasAlarm(mContentResolver, eventId2);
+        assertEquals(0, hasAlarm);
+
+        /*
+         * Add a couple of reminders and then delete one with the by-ID URI.
+         */
+        long remId4 = ReminderHelper.addReminder(mContentResolver, eventId1,
+                10, Reminders.METHOD_EMAIL);
+        long remId5 = ReminderHelper.addReminder(mContentResolver, eventId1,
+                15, Reminders.METHOD_EMAIL);
+        count = mContentResolver.delete(ContentUris.withAppendedId(Reminders.CONTENT_URI, remId4),
+                null, null);
+        assertEquals(1, count);
+
         removeAndVerifyCalendar(account, calendarId);
     }