Merge "Fix the issue that no data is returned when there is no full charge data in the database."
This commit is contained in:
committed by
Android (Google) Code Review
commit
0ba8fffbcc
@@ -43,8 +43,8 @@ public interface BatteryStateDao {
|
||||
|
||||
/** Gets the {@link Cursor} of all recorded data since last full charge within 7 days. */
|
||||
@Query("SELECT * FROM BatteryState WHERE timestamp >= :timestampSixDaysAgo AND timestamp >= "
|
||||
+ "(SELECT MAX(timestamp) FROM BatteryState WHERE isFullChargeCycleStart = 1)"
|
||||
+ " ORDER BY timestamp ASC")
|
||||
+ "(SELECT IFNULL((SELECT MAX(timestamp) FROM BatteryState "
|
||||
+ "WHERE isFullChargeCycleStart = 1), 0)) ORDER BY timestamp ASC")
|
||||
Cursor getCursorSinceLastFullCharge(long timestampSixDaysAgo);
|
||||
|
||||
/** Get the count of distinct timestamp after a specific timestamp. */
|
||||
|
@@ -53,10 +53,8 @@ public final class BatteryStateDaoTest {
|
||||
mContext = ApplicationProvider.getApplicationContext();
|
||||
mDatabase = BatteryTestUtils.setUpBatteryStateDatabase(mContext);
|
||||
mBatteryStateDao = mDatabase.batteryStateDao();
|
||||
BatteryTestUtils.insertDataToBatteryStateDatabase(
|
||||
mContext, TIMESTAMP3, PACKAGE_NAME3);
|
||||
BatteryTestUtils.insertDataToBatteryStateDatabase(
|
||||
mContext, TIMESTAMP2, PACKAGE_NAME2);
|
||||
BatteryTestUtils.insertDataToBatteryStateDatabase(mContext, TIMESTAMP3, PACKAGE_NAME3);
|
||||
BatteryTestUtils.insertDataToBatteryStateDatabase(mContext, TIMESTAMP2, PACKAGE_NAME2);
|
||||
BatteryTestUtils.insertDataToBatteryStateDatabase(
|
||||
mContext, TIMESTAMP1, PACKAGE_NAME1, /*multiple=*/ true,
|
||||
/*isFullChargeStart=*/ true);
|
||||
@@ -100,6 +98,24 @@ public final class BatteryStateDaoTest {
|
||||
assertThat(cursor2.getString(3 /*packageName*/)).isEqualTo(PACKAGE_NAME3);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void batteryStateDao_getCursorSinceLastFullCharge_noFullChargeData_returnSevenDaysData()
|
||||
throws Exception {
|
||||
mBatteryStateDao.clearAll();
|
||||
BatteryTestUtils.insertDataToBatteryStateDatabase(mContext, TIMESTAMP3, PACKAGE_NAME3);
|
||||
BatteryTestUtils.insertDataToBatteryStateDatabase(mContext, TIMESTAMP2, PACKAGE_NAME2);
|
||||
BatteryTestUtils.insertDataToBatteryStateDatabase(mContext, TIMESTAMP1, PACKAGE_NAME1);
|
||||
final Cursor cursor = mBatteryStateDao.getCursorSinceLastFullCharge(TIMESTAMP2);
|
||||
assertThat(cursor.getCount()).isEqualTo(2);
|
||||
assertThat(cursor.getColumnCount()).isEqualTo(CURSOR_COLUMN_SIZE);
|
||||
// Verifies the queried first battery state.
|
||||
cursor.moveToFirst();
|
||||
assertThat(cursor.getString(3 /*packageName*/)).isEqualTo(PACKAGE_NAME2);
|
||||
// Verifies the queried third battery state.
|
||||
cursor.moveToNext();
|
||||
assertThat(cursor.getString(3 /*packageName*/)).isEqualTo(PACKAGE_NAME3);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void batteryStateDao_clearAllBefore() throws Exception {
|
||||
mBatteryStateDao.clearAllBefore(TIMESTAMP2);
|
||||
|
Reference in New Issue
Block a user