@TestTargets({
    @TestTargetNew(
        level = TestLevel.COMPLETE,
        method = "requery",
        args = {}),
    @TestTargetNew(
        level = TestLevel.COMPLETE,
        method = "getCount",
        args = {})
  })
  public void testRequery() {
    final String DELETE = "DELETE FROM " + TABLE_NAME + " WHERE number_1 =";
    final String DELETE_1 = DELETE + "1;";
    final String DELETE_2 = DELETE + "2;";

    SQLiteCursor cursor = getCursor();
    MockObserver observer = new MockObserver();
    cursor.registerDataSetObserver(observer);

    mDatabase.execSQL(DELETE_1);
    // first time run getCount, it will refresh CursorWindow.
    assertEquals(TEST_COUNT - 1, cursor.getCount());
    assertFalse(observer.hasChanged());

    mDatabase.execSQL(DELETE_2);
    // when getCount() has invoked once, it can no longer refresh CursorWindow.
    assertEquals(TEST_COUNT - 1, cursor.getCount());

    assertTrue(cursor.requery());
    // only after requery, getCount can get most up-to-date counting info now.
    assertEquals(TEST_COUNT - 2, cursor.getCount());
    assertTrue(observer.hasChanged());
  }