diff options
Diffstat (limited to 'tests/src/com/android/calllogbackup/CallLogBackupAgentTest.java')
-rw-r--r-- | tests/src/com/android/calllogbackup/CallLogBackupAgentTest.java | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/tests/src/com/android/calllogbackup/CallLogBackupAgentTest.java b/tests/src/com/android/calllogbackup/CallLogBackupAgentTest.java index 4567e40..d768dbd 100644 --- a/tests/src/com/android/calllogbackup/CallLogBackupAgentTest.java +++ b/tests/src/com/android/calllogbackup/CallLogBackupAgentTest.java @@ -16,6 +16,8 @@ package com.android.calllogbackup; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.mockito.Mockito.eq; @@ -41,6 +43,7 @@ import org.mockito.MockitoAnnotations; import java.io.DataInput; import java.io.DataOutput; import java.io.EOFException; +import java.io.IOException; import java.util.HashMap; import java.util.LinkedList; import java.util.List; @@ -57,11 +60,38 @@ public class CallLogBackupAgentTest extends AndroidTestCase { static final String TEST_PHONE_ACCOUNT_HANDLE_SUB_ID = "666"; static final int TEST_PHONE_ACCOUNT_HANDLE_SUB_ID_INT = 666; static final String TEST_PHONE_ACCOUNT_HANDLE_ICC_ID = "891004234814455936F"; + + public int backupRestoreLoggerSuccessCount = 0; + public int backupRestoreLoggerFailCount = 0; + @Mock DataInput mDataInput; @Mock DataOutput mDataOutput; @Mock BackupDataOutput mBackupDataOutput; @Mock Cursor mCursor; + private CallLogBackupAgent.BackupRestoreEventLoggerProxy mBackupRestoreEventLoggerProxy = + new CallLogBackupAgent.BackupRestoreEventLoggerProxy() { + @Override + public void logItemsBackedUp(String dataType, int count) { + backupRestoreLoggerSuccessCount += count; + } + + @Override + public void logItemsBackupFailed(String dataType, int count, String error) { + backupRestoreLoggerFailCount += count; + } + + @Override + public void logItemsRestored(String dataType, int count) { + backupRestoreLoggerSuccessCount += count; + } + + @Override + public void logItemsRestoreFailed(String dataType, int count, String error) { + backupRestoreLoggerFailCount += count; + } + }; + CallLogBackupAgent mCallLogBackupAgent; MockitoHelper mMockitoHelper = new MockitoHelper(); @@ -77,6 +107,7 @@ public class CallLogBackupAgentTest extends AndroidTestCase { MockitoAnnotations.initMocks(this); mCallLogBackupAgent = new CallLogBackupAgent(); + mCallLogBackupAgent.setBackupRestoreEventLoggerProxy(mBackupRestoreEventLoggerProxy); } @Override @@ -178,9 +209,30 @@ public class CallLogBackupAgentTest extends AndroidTestCase { mCallLogBackupAgent.runBackup(state, mBackupDataOutput, calls); + // Ensure the {@link BackupRestoreEventLogger} is not notified as no calls were backed up: + assertEquals(backupRestoreLoggerSuccessCount, 0); + assertEquals(backupRestoreLoggerFailCount, 0); + Mockito.verifyNoMoreInteractions(mBackupDataOutput); } + public void testRunBackup_OneNewCall_ErrorAddingCall() throws Exception { + CallLogBackupState state = new CallLogBackupState(); + state.version = CallLogBackupAgent.VERSION; + state.callIds = new TreeSet<>(); + List<Call> calls = new LinkedList<>(); + calls.add(makeCall(101, 0L, 0L, "555-5555")); + + // Throw an exception when the call is added to the backup: + when(mBackupDataOutput.writeEntityData(any(byte[].class), anyInt())) + .thenThrow(IOException.class); + mCallLogBackupAgent.runBackup(state, mBackupDataOutput, calls); + + // Ensure the {@link BackupRestoreEventLogger} is informed of the failed backed up call: + assertEquals(backupRestoreLoggerSuccessCount, 0); + assertEquals(backupRestoreLoggerFailCount, 1); + } + public void testRunBackup_OneNewCall() throws Exception { CallLogBackupState state = new CallLogBackupState(); state.version = CallLogBackupAgent.VERSION; @@ -189,6 +241,10 @@ public class CallLogBackupAgentTest extends AndroidTestCase { calls.add(makeCall(101, 0L, 0L, "555-5555")); mCallLogBackupAgent.runBackup(state, mBackupDataOutput, calls); + // Ensure the {@link BackupRestoreEventLogger} is informed of the backed up call: + assertEquals(backupRestoreLoggerSuccessCount, 1); + assertEquals(backupRestoreLoggerFailCount, 0); + verify(mBackupDataOutput).writeEntityHeader(eq("101"), Matchers.anyInt()); verify(mBackupDataOutput).writeEntityData((byte[]) Matchers.any(), Matchers.anyInt()); } @@ -274,6 +330,10 @@ public class CallLogBackupAgentTest extends AndroidTestCase { mCallLogBackupAgent.runBackup(state, mBackupDataOutput, calls); + // Ensure the {@link BackupRestoreEventLogger} is informed of the 2 backed up calls: + assertEquals(backupRestoreLoggerSuccessCount, 2); + assertEquals(backupRestoreLoggerFailCount, 0); + InOrder inOrder = Mockito.inOrder(mBackupDataOutput); inOrder.verify(mBackupDataOutput).writeEntityHeader(eq("101"), Matchers.anyInt()); inOrder.verify(mBackupDataOutput). |