Add more media provider tests
This tests that deleting an audio entry also removes references to it
from the audio_genres_map and audio_playlists_map tables.
Change-Id: I537f348033b2ee44c4ffeb3456a36f08574cd497
diff --git a/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_Genres_MembersTest.java b/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_Genres_MembersTest.java
index 5d31771..2e389b6 100644
--- a/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_Genres_MembersTest.java
+++ b/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_Genres_MembersTest.java
@@ -56,6 +56,8 @@
@Override
protected void tearDown() throws Exception {
+ // "jam" should already have been deleted as part of the test, but delete it again just
+ // in case the test failed and aborted before that.
mContentResolver.delete(Media.EXTERNAL_CONTENT_URI, Media._ID + "=" + mAudioIdOfJam, null);
mContentResolver.delete(Media.EXTERNAL_CONTENT_URI, Media._ID + "=" + mAudioIdOfJamLive,
null);
@@ -246,6 +248,47 @@
assertEquals(0, c.getCount());
c.close();
+ // same for 2nd genre
+ assertEquals(1, mContentResolver.delete(members2Uri, null, null));
+ c = mContentResolver.query(members2Uri, null, null, null, null);
+ assertEquals(0, c.getCount());
+ c.close();
+
+ // insert again, then verify that deleting the audio entry cleans up its genre member
+ // entry as well
+ values.put(Members.AUDIO_ID, mAudioIdOfJam);
+ membersUri = Members.getContentUri(MediaStoreAudioTestHelper.EXTERNAL_VOLUME_NAME,
+ genreId);
+ assertNotNull(mContentResolver.insert(membersUri, values));
+ // Query members across all genres
+ c = mContentResolver.query(allMembersUri,
+ new String[] { Members.AUDIO_ID, Members.GENRE_ID}, null, null, null);
+ colidx = c.getColumnIndex(Members.AUDIO_ID);
+ jamcnt = 0;
+ // The song should appear only once, for the genre we used when inserting it
+ while(c.moveToNext()) {
+ if (c.getLong(colidx) == mAudioIdOfJam) {
+ jamcnt++;
+ assertEquals(genreId, c.getLong(c.getColumnIndex(Members.GENRE_ID)));
+ }
+ }
+ assertEquals(1, jamcnt);
+ c.close();
+ mContentResolver.delete(Media.EXTERNAL_CONTENT_URI,
+ Media._ID + "=" + mAudioIdOfJam, null);
+ // Query members across all genres
+ c = mContentResolver.query(allMembersUri,
+ new String[] { Members.AUDIO_ID, Members.GENRE_ID}, null, null, null);
+ colidx = c.getColumnIndex(Members.AUDIO_ID);
+ jamcnt = 0;
+ // The song should no longer appear in the genre
+ while(c.moveToNext()) {
+ if (c.getLong(colidx) == mAudioIdOfJam) {
+ jamcnt++;
+ }
+ }
+ assertEquals(0, jamcnt);
+ c.close();
} finally {
// the members are deleted when deleting the genre which they belong to
mContentResolver.delete(Genres.EXTERNAL_CONTENT_URI, Genres._ID + "=" + genreId, null);
diff --git a/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_Playlists_MembersTest.java b/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_Playlists_MembersTest.java
index 092dba7..e758a87 100644
--- a/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_Playlists_MembersTest.java
+++ b/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_Playlists_MembersTest.java
@@ -342,6 +342,46 @@
assertEquals(2, result);
result = mContentResolver.delete(members2Uri, null, null);
assertEquals(1, result);
+
+ // insert again, then verify that deleting the audio entry cleans up its playlist member
+ // entry as well
+ values.clear();
+ values.put(Members.AUDIO_ID, mIdOfAudio1);
+ values.put(Members.PLAY_ORDER, 1);
+ membersUri = Members.getContentUri(MediaStoreAudioTestHelper.EXTERNAL_VOLUME_NAME,
+ playlistId);
+ audioUri = mContentResolver.insert(membersUri, values);
+ assertNotNull(audioUri);
+ // Query members of the playlist
+ c = mContentResolver.query(membersUri,
+ new String[] { Members.AUDIO_ID, Members.PLAYLIST_ID}, null, null, null);
+ colidx = c.getColumnIndex(Members.AUDIO_ID);
+ cnt = 0;
+ // The song should appear only once, for the playlist we used when inserting it
+ while(c.moveToNext()) {
+ if (c.getLong(colidx) == mIdOfAudio1) {
+ cnt++;
+ assertEquals(playlistId, c.getLong(c.getColumnIndex(Members.PLAYLIST_ID)));
+ }
+ }
+ assertEquals(1, cnt);
+ c.close();
+ mContentResolver.delete(Media.EXTERNAL_CONTENT_URI,
+ Media._ID + "=" + mIdOfAudio1, null);
+ // Query members of the playlist
+ c = mContentResolver.query(membersUri,
+ new String[] { Members.AUDIO_ID, Members.PLAYLIST_ID}, null, null, null);
+ colidx = c.getColumnIndex(Members.AUDIO_ID);
+ cnt = 0;
+ // The song should no longer appear in the playlist
+ while(c.moveToNext()) {
+ if (c.getLong(colidx) == mIdOfAudio1) {
+ cnt++;
+ }
+ }
+ assertEquals(0, cnt);
+ c.close();
+
} finally {
// delete the playlists
mContentResolver.delete(Playlists.EXTERNAL_CONTENT_URI,