From fea5eea6875be277338407865e1f499c9452b6ca Mon Sep 17 00:00:00 2001 From: rohks Date: Wed, 4 Jan 2023 13:51:24 +0000 Subject: [PATCH] Check bundles in `MediaItem` to verify keys are skipped Added another check in each of these tests to make sure we don't add keys to bundle for fields with default values. Also fixed comments of similar changes in `AdPlaybackStateTest` and `MediaMetadataTest`. PiperOrigin-RevId: 499463581 (cherry picked from commit 9d431a52ef7a39772f65b8de170a225848be5251) --- .../android/exoplayer2/MediaItemTest.java | 27 +++++++++++++++---- .../android/exoplayer2/MediaMetadataTest.java | 3 +-- .../source/ads/AdPlaybackStateTest.java | 3 +-- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/library/common/src/test/java/com/google/android/exoplayer2/MediaItemTest.java b/library/common/src/test/java/com/google/android/exoplayer2/MediaItemTest.java index c354ceec99..45f91012c9 100644 --- a/library/common/src/test/java/com/google/android/exoplayer2/MediaItemTest.java +++ b/library/common/src/test/java/com/google/android/exoplayer2/MediaItemTest.java @@ -377,12 +377,18 @@ public class MediaItemTest { } @Test - public void createDefaultClippingConfigurationInstance_roundTripViaBundle_yieldsEqualInstance() { + public void + createDefaultClippingConfigurationInstance_toBundleSkipsDefaultValues_fromBundleRestoresThem() { MediaItem.ClippingConfiguration clippingConfiguration = new MediaItem.ClippingConfiguration.Builder().build(); + Bundle clippingConfigurationBundle = clippingConfiguration.toBundle(); + + // Check that default values are skipped when bundling. + assertThat(clippingConfigurationBundle.keySet()).isEmpty(); + MediaItem.ClippingConfiguration clippingConfigurationFromBundle = - MediaItem.ClippingConfiguration.CREATOR.fromBundle(clippingConfiguration.toBundle()); + MediaItem.ClippingConfiguration.CREATOR.fromBundle(clippingConfigurationBundle); assertThat(clippingConfigurationFromBundle).isEqualTo(clippingConfiguration); } @@ -560,12 +566,18 @@ public class MediaItemTest { } @Test - public void createDefaultLiveConfigurationInstance_roundTripViaBundle_yieldsEqualInstance() { + public void + createDefaultLiveConfigurationInstance_toBundleSkipsDefaultValues_fromBundleRestoresThem() { MediaItem.LiveConfiguration liveConfiguration = new MediaItem.LiveConfiguration.Builder().build(); + Bundle liveConfigurationBundle = liveConfiguration.toBundle(); + + // Check that default values are skipped when bundling. + assertThat(liveConfigurationBundle.keySet()).isEmpty(); + MediaItem.LiveConfiguration liveConfigurationFromBundle = - MediaItem.LiveConfiguration.CREATOR.fromBundle(liveConfiguration.toBundle()); + MediaItem.LiveConfiguration.CREATOR.fromBundle(liveConfigurationBundle); assertThat(liveConfigurationFromBundle).isEqualTo(liveConfiguration); } @@ -834,9 +846,14 @@ public class MediaItemTest { } @Test - public void createDefaultMediaItemInstance_roundTripViaBundle_yieldsEqualInstance() { + public void createDefaultMediaItemInstance_toBundleSkipsDefaultValues_fromBundleRestoresThem() { MediaItem mediaItem = new MediaItem.Builder().build(); + Bundle mediaItemBundle = mediaItem.toBundle(); + + // Check that default values are skipped when bundling. + assertThat(mediaItemBundle.keySet()).isEmpty(); + MediaItem mediaItemFromBundle = MediaItem.CREATOR.fromBundle(mediaItem.toBundle()); assertThat(mediaItemFromBundle).isEqualTo(mediaItem); diff --git a/library/common/src/test/java/com/google/android/exoplayer2/MediaMetadataTest.java b/library/common/src/test/java/com/google/android/exoplayer2/MediaMetadataTest.java index 4073d76b2b..86d0faa4e5 100644 --- a/library/common/src/test/java/com/google/android/exoplayer2/MediaMetadataTest.java +++ b/library/common/src/test/java/com/google/android/exoplayer2/MediaMetadataTest.java @@ -112,12 +112,11 @@ public class MediaMetadataTest { Bundle mediaMetadataBundle = mediaMetadata.toBundle(); - // check Bundle created above, contains no keys. + // Check that default values are skipped when bundling. assertThat(mediaMetadataBundle.keySet()).isEmpty(); MediaMetadata mediaMetadataFromBundle = MediaMetadata.CREATOR.fromBundle(mediaMetadataBundle); - // check object retrieved from mediaMetadataBundle is equal to mediaMetadata. assertThat(mediaMetadataFromBundle).isEqualTo(mediaMetadata); // Extras is not implemented in MediaMetadata.equals(Object o). assertThat(mediaMetadataFromBundle.extras).isNull(); diff --git a/library/common/src/test/java/com/google/android/exoplayer2/source/ads/AdPlaybackStateTest.java b/library/common/src/test/java/com/google/android/exoplayer2/source/ads/AdPlaybackStateTest.java index 3f7e2c7d64..63a41f83a3 100644 --- a/library/common/src/test/java/com/google/android/exoplayer2/source/ads/AdPlaybackStateTest.java +++ b/library/common/src/test/java/com/google/android/exoplayer2/source/ads/AdPlaybackStateTest.java @@ -422,13 +422,12 @@ public class AdPlaybackStateTest { Bundle adPlaybackStateWithNoAdsBundle = adPlaybackStateWithNoAds.toBundle(); - // check Bundle created above, contains no keys. + // Check that default values are skipped when bundling. assertThat(adPlaybackStateWithNoAdsBundle.keySet()).isEmpty(); AdPlaybackState adPlaybackStateWithNoAdsFromBundle = AdPlaybackState.CREATOR.fromBundle(adPlaybackStateWithNoAdsBundle); - // check object retrieved from adPlaybackStateWithNoAdsBundle is equal to AdPlaybackState.NONE assertThat(adPlaybackStateWithNoAdsFromBundle.adsId).isEqualTo(adPlaybackStateWithNoAds.adsId); assertThat(adPlaybackStateWithNoAdsFromBundle.adGroupCount) .isEqualTo(adPlaybackStateWithNoAds.adGroupCount);