Loading media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRoute2InfoTest.javadeleted 100644 → 0 +0 −363 Original line number Diff line number Diff line /* * Copyright 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.mediaroutertest; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.testng.Assert.assertThrows; import android.media.MediaRoute2Info; import android.net.Uri; import android.os.Bundle; import android.os.Parcel; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; import java.util.ArrayList; import java.util.List; /** * Tests {@link MediaRoute2Info} and its {@link MediaRoute2Info.Builder builder}. */ @RunWith(AndroidJUnit4.class) @SmallTest public class MediaRoute2InfoTest { public static final String TEST_ID = "test_id"; public static final String TEST_NAME = "test_name"; public static final String TEST_ROUTE_TYPE_0 = "test_route_type_0"; public static final String TEST_ROUTE_TYPE_1 = "test_route_type_1"; public static final int TEST_DEVICE_TYPE = MediaRoute2Info.DEVICE_TYPE_REMOTE_SPEAKER; public static final Uri TEST_ICON_URI = Uri.parse("https://developer.android.com"); public static final String TEST_DESCRIPTION = "test_description"; public static final int TEST_CONNECTION_STATE = MediaRoute2Info.CONNECTION_STATE_CONNECTING; public static final String TEST_CLIENT_PACKAGE_NAME = "com.test.client.package.name"; public static final int TEST_VOLUME_HANDLING = MediaRoute2Info.PLAYBACK_VOLUME_VARIABLE; public static final int TEST_VOLUME_MAX = 100; public static final int TEST_VOLUME = 65; public static final String TEST_KEY = "test_key"; public static final String TEST_VALUE = "test_value"; @Test public void testBuilderConstructorWithInvalidValues() { final String nullId = null; final String nullName = null; final String emptyId = ""; final String emptyName = ""; final String validId = "valid_id"; final String validName = "valid_name"; // ID is invalid assertThrows(IllegalArgumentException.class, () -> new MediaRoute2Info.Builder(nullId, validName)); assertThrows(IllegalArgumentException.class, () -> new MediaRoute2Info.Builder(emptyId, validName)); // name is invalid assertThrows(IllegalArgumentException.class, () -> new MediaRoute2Info.Builder(validId, nullName)); assertThrows(IllegalArgumentException.class, () -> new MediaRoute2Info.Builder(validId, emptyName)); // Both are invalid assertThrows(IllegalArgumentException.class, () -> new MediaRoute2Info.Builder(nullId, nullName)); assertThrows(IllegalArgumentException.class, () -> new MediaRoute2Info.Builder(nullId, emptyName)); assertThrows(IllegalArgumentException.class, () -> new MediaRoute2Info.Builder(emptyId, nullName)); assertThrows(IllegalArgumentException.class, () -> new MediaRoute2Info.Builder(emptyId, emptyName)); // Null RouteInfo (1-argument constructor) final MediaRoute2Info nullRouteInfo = null; assertThrows(NullPointerException.class, () -> new MediaRoute2Info.Builder(nullRouteInfo)); } @Test public void testBuilderBuildWithEmptyRouteTypesShouldThrowIAE() { MediaRoute2Info.Builder builder = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME); assertThrows(IllegalArgumentException.class, () -> builder.build()); } @Test public void testBuilderAndGettersOfMediaRoute2Info() { Bundle extras = new Bundle(); extras.putString(TEST_KEY, TEST_VALUE); MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME) .addFeature(TEST_ROUTE_TYPE_0) .addFeature(TEST_ROUTE_TYPE_1) .setDeviceType(TEST_DEVICE_TYPE) .setIconUri(TEST_ICON_URI) .setDescription(TEST_DESCRIPTION) .setConnectionState(TEST_CONNECTION_STATE) .setClientPackageName(TEST_CLIENT_PACKAGE_NAME) .setVolumeHandling(TEST_VOLUME_HANDLING) .setVolumeMax(TEST_VOLUME_MAX) .setVolume(TEST_VOLUME) .setExtras(extras) .build(); assertEquals(TEST_ID, routeInfo.getId()); assertEquals(TEST_NAME, routeInfo.getName()); assertEquals(2, routeInfo.getFeatures().size()); assertEquals(TEST_ROUTE_TYPE_0, routeInfo.getFeatures().get(0)); assertEquals(TEST_ROUTE_TYPE_1, routeInfo.getFeatures().get(1)); assertEquals(TEST_DEVICE_TYPE, routeInfo.getDeviceType()); assertEquals(TEST_ICON_URI, routeInfo.getIconUri()); assertEquals(TEST_DESCRIPTION, routeInfo.getDescription()); assertEquals(TEST_CONNECTION_STATE, routeInfo.getConnectionState()); assertEquals(TEST_CLIENT_PACKAGE_NAME, routeInfo.getClientPackageName()); assertEquals(TEST_VOLUME_HANDLING, routeInfo.getVolumeHandling()); assertEquals(TEST_VOLUME_MAX, routeInfo.getVolumeMax()); assertEquals(TEST_VOLUME, routeInfo.getVolume()); Bundle extrasOut = routeInfo.getExtras(); assertNotNull(extrasOut); assertTrue(extrasOut.containsKey(TEST_KEY)); assertEquals(TEST_VALUE, extrasOut.getString(TEST_KEY)); } @Test public void testBuilderSetExtrasWithNull() { MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME) .addFeature(TEST_ROUTE_TYPE_0) .setExtras(null) .build(); assertNull(routeInfo.getExtras()); } @Test public void testBuilderaddFeatures() { List<String> routeTypes = new ArrayList<>(); routeTypes.add(TEST_ROUTE_TYPE_0); routeTypes.add(TEST_ROUTE_TYPE_1); MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME) .addFeatures(routeTypes) .build(); assertEquals(routeTypes, routeInfo.getFeatures()); } @Test public void testBuilderclearFeatures() { MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME) .addFeature(TEST_ROUTE_TYPE_0) .addFeature(TEST_ROUTE_TYPE_1) // clearFeatures should clear the route types. .clearFeatures() .addFeature(TEST_ROUTE_TYPE_1) .build(); assertEquals(1, routeInfo.getFeatures().size()); assertEquals(TEST_ROUTE_TYPE_1, routeInfo.getFeatures().get(0)); } @Test public void testhasAnyFeaturesReturnsFalse() { MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME) .addFeature(TEST_ROUTE_TYPE_0) .addFeature(TEST_ROUTE_TYPE_1) .build(); List<String> testRouteTypes = new ArrayList<>(); testRouteTypes.add("non_matching_route_type_1"); testRouteTypes.add("non_matching_route_type_2"); testRouteTypes.add("non_matching_route_type_3"); testRouteTypes.add("non_matching_route_type_4"); assertFalse(routeInfo.hasAnyFeatures(testRouteTypes)); } @Test public void testhasAnyFeaturesReturnsTrue() { MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME) .addFeature(TEST_ROUTE_TYPE_0) .addFeature(TEST_ROUTE_TYPE_1) .build(); List<String> testRouteTypes = new ArrayList<>(); testRouteTypes.add("non_matching_route_type_1"); testRouteTypes.add("non_matching_route_type_2"); testRouteTypes.add("non_matching_route_type_3"); testRouteTypes.add(TEST_ROUTE_TYPE_1); assertTrue(routeInfo.hasAnyFeatures(testRouteTypes)); } @Test public void testEqualsCreatedWithSameArguments() { Bundle extras = new Bundle(); extras.putString(TEST_KEY, TEST_VALUE); MediaRoute2Info routeInfo1 = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME) .addFeature(TEST_ROUTE_TYPE_0) .addFeature(TEST_ROUTE_TYPE_1) .setDeviceType(TEST_DEVICE_TYPE) .setIconUri(TEST_ICON_URI) .setDescription(TEST_DESCRIPTION) .setConnectionState(TEST_CONNECTION_STATE) .setClientPackageName(TEST_CLIENT_PACKAGE_NAME) .setVolumeHandling(TEST_VOLUME_HANDLING) .setVolumeMax(TEST_VOLUME_MAX) .setVolume(TEST_VOLUME) .setExtras(extras) .build(); MediaRoute2Info routeInfo2 = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME) .addFeature(TEST_ROUTE_TYPE_0) .addFeature(TEST_ROUTE_TYPE_1) .setDeviceType(TEST_DEVICE_TYPE) .setIconUri(TEST_ICON_URI) .setDescription(TEST_DESCRIPTION) .setConnectionState(TEST_CONNECTION_STATE) .setClientPackageName(TEST_CLIENT_PACKAGE_NAME) .setVolumeHandling(TEST_VOLUME_HANDLING) .setVolumeMax(TEST_VOLUME_MAX) .setVolume(TEST_VOLUME) .setExtras(extras) .build(); assertEquals(routeInfo1, routeInfo2); assertEquals(routeInfo1.hashCode(), routeInfo2.hashCode()); } @Test public void testEqualsCreatedWithBuilderCopyConstructor() { Bundle extras = new Bundle(); extras.putString(TEST_KEY, TEST_VALUE); MediaRoute2Info routeInfo1 = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME) .addFeature(TEST_ROUTE_TYPE_0) .addFeature(TEST_ROUTE_TYPE_1) .setDeviceType(TEST_DEVICE_TYPE) .setIconUri(TEST_ICON_URI) .setDescription(TEST_DESCRIPTION) .setConnectionState(TEST_CONNECTION_STATE) .setClientPackageName(TEST_CLIENT_PACKAGE_NAME) .setVolumeHandling(TEST_VOLUME_HANDLING) .setVolumeMax(TEST_VOLUME_MAX) .setVolume(TEST_VOLUME) .setExtras(extras) .build(); MediaRoute2Info routeInfo2 = new MediaRoute2Info.Builder(routeInfo1).build(); assertEquals(routeInfo1, routeInfo2); assertEquals(routeInfo1.hashCode(), routeInfo2.hashCode()); } @Test public void testEqualsReturnFalse() { Bundle extras = new Bundle(); extras.putString(TEST_KEY, TEST_VALUE); MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME) .addFeature(TEST_ROUTE_TYPE_0) .addFeature(TEST_ROUTE_TYPE_1) .setDeviceType(TEST_DEVICE_TYPE) .setIconUri(TEST_ICON_URI) .setDescription(TEST_DESCRIPTION) .setConnectionState(TEST_CONNECTION_STATE) .setClientPackageName(TEST_CLIENT_PACKAGE_NAME) .setVolumeHandling(TEST_VOLUME_HANDLING) .setVolumeMax(TEST_VOLUME_MAX) .setVolume(TEST_VOLUME) .setExtras(extras) .build(); // Now, we will use copy constructor assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo) .addFeature("randomRouteType") .build()); assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo) .setDeviceType(TEST_DEVICE_TYPE + 1) .build()); assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo) .setIconUri(Uri.parse("randomUri")) .build()); assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo) .setDescription("randomDescription") .build()); assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo) .setConnectionState(TEST_CONNECTION_STATE + 1) .build()); assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo) .setClientPackageName("randomPackageName") .build()); assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo) .setVolumeHandling(TEST_VOLUME_HANDLING + 1) .build()); assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo) .setVolumeMax(TEST_VOLUME_MAX + 100) .build()); assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo) .setVolume(TEST_VOLUME + 10) .build()); // Note: Extras will not affect the equals. } @Test public void testParcelingAndUnParceling() { Bundle extras = new Bundle(); extras.putString(TEST_KEY, TEST_VALUE); MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME) .addFeature(TEST_ROUTE_TYPE_0) .addFeature(TEST_ROUTE_TYPE_1) .setDeviceType(TEST_DEVICE_TYPE) .setIconUri(TEST_ICON_URI) .setDescription(TEST_DESCRIPTION) .setConnectionState(TEST_CONNECTION_STATE) .setClientPackageName(TEST_CLIENT_PACKAGE_NAME) .setVolumeHandling(TEST_VOLUME_HANDLING) .setVolumeMax(TEST_VOLUME_MAX) .setVolume(TEST_VOLUME) .setExtras(extras) .build(); Parcel parcel = Parcel.obtain(); routeInfo.writeToParcel(parcel, 0); parcel.setDataPosition(0); MediaRoute2Info routeInfoFromParcel = MediaRoute2Info.CREATOR.createFromParcel(parcel); assertEquals(routeInfo, routeInfoFromParcel); assertEquals(routeInfo.hashCode(), routeInfoFromParcel.hashCode()); // Check extras Bundle extrasOut = routeInfoFromParcel.getExtras(); assertNotNull(extrasOut); assertTrue(extrasOut.containsKey(TEST_KEY)); assertEquals(TEST_VALUE, extrasOut.getString(TEST_KEY)); } } Loading
media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRoute2InfoTest.javadeleted 100644 → 0 +0 −363 Original line number Diff line number Diff line /* * Copyright 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.mediaroutertest; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.testng.Assert.assertThrows; import android.media.MediaRoute2Info; import android.net.Uri; import android.os.Bundle; import android.os.Parcel; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; import java.util.ArrayList; import java.util.List; /** * Tests {@link MediaRoute2Info} and its {@link MediaRoute2Info.Builder builder}. */ @RunWith(AndroidJUnit4.class) @SmallTest public class MediaRoute2InfoTest { public static final String TEST_ID = "test_id"; public static final String TEST_NAME = "test_name"; public static final String TEST_ROUTE_TYPE_0 = "test_route_type_0"; public static final String TEST_ROUTE_TYPE_1 = "test_route_type_1"; public static final int TEST_DEVICE_TYPE = MediaRoute2Info.DEVICE_TYPE_REMOTE_SPEAKER; public static final Uri TEST_ICON_URI = Uri.parse("https://developer.android.com"); public static final String TEST_DESCRIPTION = "test_description"; public static final int TEST_CONNECTION_STATE = MediaRoute2Info.CONNECTION_STATE_CONNECTING; public static final String TEST_CLIENT_PACKAGE_NAME = "com.test.client.package.name"; public static final int TEST_VOLUME_HANDLING = MediaRoute2Info.PLAYBACK_VOLUME_VARIABLE; public static final int TEST_VOLUME_MAX = 100; public static final int TEST_VOLUME = 65; public static final String TEST_KEY = "test_key"; public static final String TEST_VALUE = "test_value"; @Test public void testBuilderConstructorWithInvalidValues() { final String nullId = null; final String nullName = null; final String emptyId = ""; final String emptyName = ""; final String validId = "valid_id"; final String validName = "valid_name"; // ID is invalid assertThrows(IllegalArgumentException.class, () -> new MediaRoute2Info.Builder(nullId, validName)); assertThrows(IllegalArgumentException.class, () -> new MediaRoute2Info.Builder(emptyId, validName)); // name is invalid assertThrows(IllegalArgumentException.class, () -> new MediaRoute2Info.Builder(validId, nullName)); assertThrows(IllegalArgumentException.class, () -> new MediaRoute2Info.Builder(validId, emptyName)); // Both are invalid assertThrows(IllegalArgumentException.class, () -> new MediaRoute2Info.Builder(nullId, nullName)); assertThrows(IllegalArgumentException.class, () -> new MediaRoute2Info.Builder(nullId, emptyName)); assertThrows(IllegalArgumentException.class, () -> new MediaRoute2Info.Builder(emptyId, nullName)); assertThrows(IllegalArgumentException.class, () -> new MediaRoute2Info.Builder(emptyId, emptyName)); // Null RouteInfo (1-argument constructor) final MediaRoute2Info nullRouteInfo = null; assertThrows(NullPointerException.class, () -> new MediaRoute2Info.Builder(nullRouteInfo)); } @Test public void testBuilderBuildWithEmptyRouteTypesShouldThrowIAE() { MediaRoute2Info.Builder builder = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME); assertThrows(IllegalArgumentException.class, () -> builder.build()); } @Test public void testBuilderAndGettersOfMediaRoute2Info() { Bundle extras = new Bundle(); extras.putString(TEST_KEY, TEST_VALUE); MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME) .addFeature(TEST_ROUTE_TYPE_0) .addFeature(TEST_ROUTE_TYPE_1) .setDeviceType(TEST_DEVICE_TYPE) .setIconUri(TEST_ICON_URI) .setDescription(TEST_DESCRIPTION) .setConnectionState(TEST_CONNECTION_STATE) .setClientPackageName(TEST_CLIENT_PACKAGE_NAME) .setVolumeHandling(TEST_VOLUME_HANDLING) .setVolumeMax(TEST_VOLUME_MAX) .setVolume(TEST_VOLUME) .setExtras(extras) .build(); assertEquals(TEST_ID, routeInfo.getId()); assertEquals(TEST_NAME, routeInfo.getName()); assertEquals(2, routeInfo.getFeatures().size()); assertEquals(TEST_ROUTE_TYPE_0, routeInfo.getFeatures().get(0)); assertEquals(TEST_ROUTE_TYPE_1, routeInfo.getFeatures().get(1)); assertEquals(TEST_DEVICE_TYPE, routeInfo.getDeviceType()); assertEquals(TEST_ICON_URI, routeInfo.getIconUri()); assertEquals(TEST_DESCRIPTION, routeInfo.getDescription()); assertEquals(TEST_CONNECTION_STATE, routeInfo.getConnectionState()); assertEquals(TEST_CLIENT_PACKAGE_NAME, routeInfo.getClientPackageName()); assertEquals(TEST_VOLUME_HANDLING, routeInfo.getVolumeHandling()); assertEquals(TEST_VOLUME_MAX, routeInfo.getVolumeMax()); assertEquals(TEST_VOLUME, routeInfo.getVolume()); Bundle extrasOut = routeInfo.getExtras(); assertNotNull(extrasOut); assertTrue(extrasOut.containsKey(TEST_KEY)); assertEquals(TEST_VALUE, extrasOut.getString(TEST_KEY)); } @Test public void testBuilderSetExtrasWithNull() { MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME) .addFeature(TEST_ROUTE_TYPE_0) .setExtras(null) .build(); assertNull(routeInfo.getExtras()); } @Test public void testBuilderaddFeatures() { List<String> routeTypes = new ArrayList<>(); routeTypes.add(TEST_ROUTE_TYPE_0); routeTypes.add(TEST_ROUTE_TYPE_1); MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME) .addFeatures(routeTypes) .build(); assertEquals(routeTypes, routeInfo.getFeatures()); } @Test public void testBuilderclearFeatures() { MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME) .addFeature(TEST_ROUTE_TYPE_0) .addFeature(TEST_ROUTE_TYPE_1) // clearFeatures should clear the route types. .clearFeatures() .addFeature(TEST_ROUTE_TYPE_1) .build(); assertEquals(1, routeInfo.getFeatures().size()); assertEquals(TEST_ROUTE_TYPE_1, routeInfo.getFeatures().get(0)); } @Test public void testhasAnyFeaturesReturnsFalse() { MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME) .addFeature(TEST_ROUTE_TYPE_0) .addFeature(TEST_ROUTE_TYPE_1) .build(); List<String> testRouteTypes = new ArrayList<>(); testRouteTypes.add("non_matching_route_type_1"); testRouteTypes.add("non_matching_route_type_2"); testRouteTypes.add("non_matching_route_type_3"); testRouteTypes.add("non_matching_route_type_4"); assertFalse(routeInfo.hasAnyFeatures(testRouteTypes)); } @Test public void testhasAnyFeaturesReturnsTrue() { MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME) .addFeature(TEST_ROUTE_TYPE_0) .addFeature(TEST_ROUTE_TYPE_1) .build(); List<String> testRouteTypes = new ArrayList<>(); testRouteTypes.add("non_matching_route_type_1"); testRouteTypes.add("non_matching_route_type_2"); testRouteTypes.add("non_matching_route_type_3"); testRouteTypes.add(TEST_ROUTE_TYPE_1); assertTrue(routeInfo.hasAnyFeatures(testRouteTypes)); } @Test public void testEqualsCreatedWithSameArguments() { Bundle extras = new Bundle(); extras.putString(TEST_KEY, TEST_VALUE); MediaRoute2Info routeInfo1 = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME) .addFeature(TEST_ROUTE_TYPE_0) .addFeature(TEST_ROUTE_TYPE_1) .setDeviceType(TEST_DEVICE_TYPE) .setIconUri(TEST_ICON_URI) .setDescription(TEST_DESCRIPTION) .setConnectionState(TEST_CONNECTION_STATE) .setClientPackageName(TEST_CLIENT_PACKAGE_NAME) .setVolumeHandling(TEST_VOLUME_HANDLING) .setVolumeMax(TEST_VOLUME_MAX) .setVolume(TEST_VOLUME) .setExtras(extras) .build(); MediaRoute2Info routeInfo2 = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME) .addFeature(TEST_ROUTE_TYPE_0) .addFeature(TEST_ROUTE_TYPE_1) .setDeviceType(TEST_DEVICE_TYPE) .setIconUri(TEST_ICON_URI) .setDescription(TEST_DESCRIPTION) .setConnectionState(TEST_CONNECTION_STATE) .setClientPackageName(TEST_CLIENT_PACKAGE_NAME) .setVolumeHandling(TEST_VOLUME_HANDLING) .setVolumeMax(TEST_VOLUME_MAX) .setVolume(TEST_VOLUME) .setExtras(extras) .build(); assertEquals(routeInfo1, routeInfo2); assertEquals(routeInfo1.hashCode(), routeInfo2.hashCode()); } @Test public void testEqualsCreatedWithBuilderCopyConstructor() { Bundle extras = new Bundle(); extras.putString(TEST_KEY, TEST_VALUE); MediaRoute2Info routeInfo1 = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME) .addFeature(TEST_ROUTE_TYPE_0) .addFeature(TEST_ROUTE_TYPE_1) .setDeviceType(TEST_DEVICE_TYPE) .setIconUri(TEST_ICON_URI) .setDescription(TEST_DESCRIPTION) .setConnectionState(TEST_CONNECTION_STATE) .setClientPackageName(TEST_CLIENT_PACKAGE_NAME) .setVolumeHandling(TEST_VOLUME_HANDLING) .setVolumeMax(TEST_VOLUME_MAX) .setVolume(TEST_VOLUME) .setExtras(extras) .build(); MediaRoute2Info routeInfo2 = new MediaRoute2Info.Builder(routeInfo1).build(); assertEquals(routeInfo1, routeInfo2); assertEquals(routeInfo1.hashCode(), routeInfo2.hashCode()); } @Test public void testEqualsReturnFalse() { Bundle extras = new Bundle(); extras.putString(TEST_KEY, TEST_VALUE); MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME) .addFeature(TEST_ROUTE_TYPE_0) .addFeature(TEST_ROUTE_TYPE_1) .setDeviceType(TEST_DEVICE_TYPE) .setIconUri(TEST_ICON_URI) .setDescription(TEST_DESCRIPTION) .setConnectionState(TEST_CONNECTION_STATE) .setClientPackageName(TEST_CLIENT_PACKAGE_NAME) .setVolumeHandling(TEST_VOLUME_HANDLING) .setVolumeMax(TEST_VOLUME_MAX) .setVolume(TEST_VOLUME) .setExtras(extras) .build(); // Now, we will use copy constructor assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo) .addFeature("randomRouteType") .build()); assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo) .setDeviceType(TEST_DEVICE_TYPE + 1) .build()); assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo) .setIconUri(Uri.parse("randomUri")) .build()); assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo) .setDescription("randomDescription") .build()); assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo) .setConnectionState(TEST_CONNECTION_STATE + 1) .build()); assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo) .setClientPackageName("randomPackageName") .build()); assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo) .setVolumeHandling(TEST_VOLUME_HANDLING + 1) .build()); assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo) .setVolumeMax(TEST_VOLUME_MAX + 100) .build()); assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo) .setVolume(TEST_VOLUME + 10) .build()); // Note: Extras will not affect the equals. } @Test public void testParcelingAndUnParceling() { Bundle extras = new Bundle(); extras.putString(TEST_KEY, TEST_VALUE); MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME) .addFeature(TEST_ROUTE_TYPE_0) .addFeature(TEST_ROUTE_TYPE_1) .setDeviceType(TEST_DEVICE_TYPE) .setIconUri(TEST_ICON_URI) .setDescription(TEST_DESCRIPTION) .setConnectionState(TEST_CONNECTION_STATE) .setClientPackageName(TEST_CLIENT_PACKAGE_NAME) .setVolumeHandling(TEST_VOLUME_HANDLING) .setVolumeMax(TEST_VOLUME_MAX) .setVolume(TEST_VOLUME) .setExtras(extras) .build(); Parcel parcel = Parcel.obtain(); routeInfo.writeToParcel(parcel, 0); parcel.setDataPosition(0); MediaRoute2Info routeInfoFromParcel = MediaRoute2Info.CREATOR.createFromParcel(parcel); assertEquals(routeInfo, routeInfoFromParcel); assertEquals(routeInfo.hashCode(), routeInfoFromParcel.hashCode()); // Check extras Bundle extrasOut = routeInfoFromParcel.getExtras(); assertNotNull(extrasOut); assertTrue(extrasOut.containsKey(TEST_KEY)); assertEquals(TEST_VALUE, extrasOut.getString(TEST_KEY)); } }