@Test
 public void TestPurgeServiceRunLogNoLimit() {
   Calendar cal = Calendar.getInstance(Locale.getDefault());
   cal.add(Calendar.DATE, -400);
   Date start1 = cal.getTime();
   cal.add(Calendar.HOUR, 1);
   Date end1 = cal.getTime();
   ServiceRunProvider.ServiceRun r1 = new ServiceRunProvider.ServiceRun(1, start1, end1, 0, 0);
   cal.add(Calendar.DATE, 200);
   Date start2 = cal.getTime();
   cal.add(Calendar.HOUR, 1);
   Date end2 = cal.getTime();
   ServiceRunProvider.ServiceRun r2 = new ServiceRunProvider.ServiceRun(2, start2, end2, 2, 1);
   long rid1 = ServiceRunProvider.InsertRow(myDb, r1);
   long rid2 = ServiceRunProvider.InsertRow(myDb, r2);
   // insert calls
   LoggedCallProvider.InsertRow(
       myDb, new LoggedCallProvider.LoggedCall(rid1, null, "123", "dummy"));
   LoggedCallProvider.InsertRow(
       myDb, new LoggedCallProvider.LoggedCall(rid2, null, "456", "dummy"));
   Cursor latest = ServiceRunProvider.LatestRuns(myDb, -1);
   assertEquals("There should be two records", 2, latest.getCount());
   Cursor calls = LoggedCallProvider.LatestCalls(myDb, -1);
   assertEquals("There should be two records", 2, latest.getCount());
   ServiceRunProvider.PurgeLog(myDb, myContext, "no limit");
   latest = ServiceRunProvider.LatestRuns(myDb, -1);
   assertEquals("No purging", 2, latest.getCount());
   assertEquals("No purging", 2, calls.getCount());
   latest.close();
   calls.close();
 }
 @Test
 public void TestRecordWhenStartStoppingTheService() {
   // ...when the service starts
   long id = ServiceRunProvider.InsertAtServiceStart(myDb);
   // end of service
   ServiceRunProvider.UpdateAtServiceStop(myDb, id, 2, 1);
   // service starts again
   id = ServiceRunProvider.InsertAtServiceStart(myDb);
   // 2nd end of service
   ServiceRunProvider.UpdateAtServiceStop(myDb, id, 3, 1);
   ServiceRunProvider.ServiceRun latest = ServiceRunProvider.LatestRun(myDb);
   // tests
   assertEquals("There should be two records", 2, latest.getId());
   assertEquals("Total of 3 calls received", 3, latest.getNumReceived());
   assertEquals("Total of 1 event triggered", 1, latest.getNumTriggered());
 }
 @Test
 public void GetLatestServiceRunWhenTableIsEmpty() {
   ServiceRunProvider.ServiceRun latest = ServiceRunProvider.LatestRun(myDb);
   assertEquals("dummy id", 0, latest.getId());
   assertEquals("received", 0, latest.getNumReceived());
   assertEquals("triggered", 0, latest.getNumTriggered());
 }
 @Test
 public void GetLatestServiceRunWhenTableIsNotEmpty() {
   Calendar cal = Calendar.getInstance(Locale.getDefault());
   Date start = cal.getTime();
   cal.add(Calendar.HOUR, 1);
   Date end = cal.getTime();
   ServiceRunProvider.InsertRow(myDb, new ServiceRunProvider.ServiceRun(-1, start, end, 2, 1));
   cal.add(Calendar.HOUR, 1);
   start = cal.getTime();
   cal.add(Calendar.HOUR, 1);
   end = cal.getTime();
   ServiceRunProvider.InsertRow(myDb, new ServiceRunProvider.ServiceRun(-1, start, end, 4, 1));
   ServiceRunProvider.ServiceRun latest = ServiceRunProvider.LatestRun(myDb);
   assertEquals("id", 2, latest.getId());
   assertEquals("received", 4, latest.getNumReceived());
   assertEquals("triggered", 1, latest.getNumTriggered());
 }
 @Test
 public void ServiceRunsInsertRow() {
   Calendar cal = Calendar.getInstance(Locale.getDefault());
   Date start = cal.getTime();
   cal.add(Calendar.HOUR, 1);
   Date end = cal.getTime();
   ServiceRunProvider.InsertRow(myDb, new ServiceRunProvider.ServiceRun(-1, start, end, 2, 1));
   Cursor c = myDb.rawQuery("select * from serviceruns", null);
   assertEquals("one row expected", 1, c.getCount());
   c.moveToFirst();
   long id = c.getLong(c.getColumnIndexOrThrow(DbContract.ServiceRuns._ID));
   assertEquals("First id equal to 1", 1, id);
   long received =
       c.getLong(c.getColumnIndexOrThrow(DbContract.ServiceRuns.COLUMN_NAME_TOTAL_RECEIVED));
   assertEquals("Expected calls received", 2, received);
   long triggered =
       c.getLong(c.getColumnIndexOrThrow(DbContract.ServiceRuns.COLUMN_NAME_TOTAL_TRIGGERED));
   assertEquals("Expected calls triggered", 1, triggered);
   c.close();
 }