Fix the issue that no data is returned when there is no full charge data
in the database. Test: make RunSettingsRoboTests + manual Bug: 260938983 Bug: 253553141 Change-Id: Ie12f239ce83a6ac2cd95c1663cd82e2974a7eaf3
This commit is contained in:
@@ -43,8 +43,8 @@ public interface BatteryStateDao {
|
|||||||
|
|
||||||
/** Gets the {@link Cursor} of all recorded data since last full charge within 7 days. */
|
/** Gets the {@link Cursor} of all recorded data since last full charge within 7 days. */
|
||||||
@Query("SELECT * FROM BatteryState WHERE timestamp >= :timestampSixDaysAgo AND timestamp >= "
|
@Query("SELECT * FROM BatteryState WHERE timestamp >= :timestampSixDaysAgo AND timestamp >= "
|
||||||
+ "(SELECT MAX(timestamp) FROM BatteryState WHERE isFullChargeCycleStart = 1)"
|
+ "(SELECT IFNULL((SELECT MAX(timestamp) FROM BatteryState "
|
||||||
+ " ORDER BY timestamp ASC")
|
+ "WHERE isFullChargeCycleStart = 1), 0)) ORDER BY timestamp ASC")
|
||||||
Cursor getCursorSinceLastFullCharge(long timestampSixDaysAgo);
|
Cursor getCursorSinceLastFullCharge(long timestampSixDaysAgo);
|
||||||
|
|
||||||
/** Get the count of distinct timestamp after a specific timestamp. */
|
/** Get the count of distinct timestamp after a specific timestamp. */
|
||||||
|
@@ -53,10 +53,8 @@ public final class BatteryStateDaoTest {
|
|||||||
mContext = ApplicationProvider.getApplicationContext();
|
mContext = ApplicationProvider.getApplicationContext();
|
||||||
mDatabase = BatteryTestUtils.setUpBatteryStateDatabase(mContext);
|
mDatabase = BatteryTestUtils.setUpBatteryStateDatabase(mContext);
|
||||||
mBatteryStateDao = mDatabase.batteryStateDao();
|
mBatteryStateDao = mDatabase.batteryStateDao();
|
||||||
BatteryTestUtils.insertDataToBatteryStateDatabase(
|
BatteryTestUtils.insertDataToBatteryStateDatabase(mContext, TIMESTAMP3, PACKAGE_NAME3);
|
||||||
mContext, TIMESTAMP3, PACKAGE_NAME3);
|
BatteryTestUtils.insertDataToBatteryStateDatabase(mContext, TIMESTAMP2, PACKAGE_NAME2);
|
||||||
BatteryTestUtils.insertDataToBatteryStateDatabase(
|
|
||||||
mContext, TIMESTAMP2, PACKAGE_NAME2);
|
|
||||||
BatteryTestUtils.insertDataToBatteryStateDatabase(
|
BatteryTestUtils.insertDataToBatteryStateDatabase(
|
||||||
mContext, TIMESTAMP1, PACKAGE_NAME1, /*multiple=*/ true,
|
mContext, TIMESTAMP1, PACKAGE_NAME1, /*multiple=*/ true,
|
||||||
/*isFullChargeStart=*/ true);
|
/*isFullChargeStart=*/ true);
|
||||||
@@ -100,6 +98,24 @@ public final class BatteryStateDaoTest {
|
|||||||
assertThat(cursor2.getString(3 /*packageName*/)).isEqualTo(PACKAGE_NAME3);
|
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
|
@Test
|
||||||
public void batteryStateDao_clearAllBefore() throws Exception {
|
public void batteryStateDao_clearAllBefore() throws Exception {
|
||||||
mBatteryStateDao.clearAllBefore(TIMESTAMP2);
|
mBatteryStateDao.clearAllBefore(TIMESTAMP2);
|
||||||
|
Reference in New Issue
Block a user