### Question:
DefaultDeleteResolver extends DeleteResolver<T> { @NonNull @Override public DeleteResult performDelete(@NonNull StorIOContentResolver storIOContentResolver, @NonNull T object) { final DeleteQuery deleteQuery = mapToDeleteQuery(object); final int numberOfRowsDeleted = storIOContentResolver.lowLevel().delete(deleteQuery); return DeleteResult.newInstance(numberOfRowsDeleted, deleteQuery.uri()); }  @NonNull @Override DeleteResult performDelete(@NonNull StorIOContentResolver storIOContentResolver, @NonNull T object);  }### Answer:
@Test public void performDelete() { final StorIOContentResolver storIOContentResolver = mock(StorIOContentResolver.class); final StorIOContentResolver.LowLevel lowLevel = mock(StorIOContentResolver.LowLevel.class); when(storIOContentResolver.lowLevel()) .thenReturn(lowLevel); final int expectedNumberOfRowsDeleted = 1; when(lowLevel.delete(any(DeleteQuery.class))) .thenReturn(expectedNumberOfRowsDeleted); final Uri expectedUri = mock(Uri.class); final DeleteQuery expectedDeleteQuery = DeleteQuery.builder() .uri(expectedUri) .where("test where clause") .whereArgs("test") .build(); final TestItem testItem = TestItem.newInstance(); final DefaultDeleteResolver<TestItem> defaultDeleteResolver = new DefaultDeleteResolver<TestItem>() { @NonNull @Override protected DeleteQuery mapToDeleteQuery(@NonNull TestItem object) { assertThat(object).isSameAs(testItem); return expectedDeleteQuery; } }; final DeleteResult deleteResult = defaultDeleteResolver.performDelete(storIOContentResolver, testItem); verify(lowLevel, times(1)).delete(expectedDeleteQuery); verify(lowLevel, times(1)).delete(any(DeleteQuery.class)); assertThat(deleteResult.numberOfRowsDeleted()).isEqualTo(expectedNumberOfRowsDeleted); assertThat(deleteResult.affectedUris()).hasSize(1); assertThat(deleteResult.affectedUris()).contains(expectedUri); }