1d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen/* 2d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen * Copyright (C) 2017 The Android Open Source Project 3d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen * 4d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen * Licensed under the Apache License, Version 2.0 (the "License"); 5d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen * you may not use this file except in compliance with the License. 6d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen * You may obtain a copy of the License at 7d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen * 8d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen * http://www.apache.org/licenses/LICENSE-2.0 9d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen * 10d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen * Unless required by applicable law or agreed to in writing, software 11d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen * distributed under the License is distributed on an "AS IS" BASIS, 12d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen * See the License for the specific language governing permissions and 14d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen * limitations under the License. 15d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen */ 16d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen 17d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chenpackage android.support.v7.media; 18d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen 19d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chenimport static org.junit.Assert.assertEquals; 20d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chenimport static org.junit.Assert.assertTrue; 21d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen 22d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chenimport android.os.Bundle; 23d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chenimport android.support.test.filters.SmallTest; 24d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chenimport android.support.test.runner.AndroidJUnit4; 25d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen 26d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chenimport org.junit.Test; 27d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chenimport org.junit.runner.RunWith; 28d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen 29d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chenimport java.util.ArrayList; 30d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chenimport java.util.List; 31d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen 32d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen/** 33d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen * Test {@link MediaRouteProvider} and its related classes. 34d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen */ 35d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen@RunWith(AndroidJUnit4.class) 36d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chenpublic class MediaRouteProviderTest { 37d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen private static final String FAKE_MEDIA_ROUTE_ID_1 = "fakeMediaRouteId1"; 38d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen private static final String FAKE_MEDIA_ROUTE_ID_2 = "fakeMediaRouteId2"; 39d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen private static final String FAKE_MEDIA_ROUTE_ID_3 = "fakeMediaRouteId3"; 40d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen private static final String FAKE_MEDIA_ROUTE_ID_4 = "fakeMediaRouteId4"; 41d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen private static final String FAKE_MEDIA_ROUTE_NAME_1 = "fakeMediaRouteName1"; 42d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen private static final String FAKE_MEDIA_ROUTE_NAME_2 = "fakeMediaRouteName2"; 43d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen private static final String FAKE_MEDIA_ROUTE_NAME_3 = "fakeMediaRouteName3"; 44d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen private static final String FAKE_MEDIA_ROUTE_NAME_4 = "fakeMediaRouteName4"; 45d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen 46d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen @Test 47d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen @SmallTest 48d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen public void testDescriptorBuilder() { 49d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen // Tests for empty descriptor 50d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen MediaRouteProviderDescriptor.Builder builder = new MediaRouteProviderDescriptor.Builder(); 51d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen MediaRouteProviderDescriptor descriptor = builder.build(); 52d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertTrue(descriptor.getRoutes().isEmpty()); 53d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen 54d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen // Tests for addRoute() 55d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen builder.addRoute(new MediaRouteDescriptor.Builder(FAKE_MEDIA_ROUTE_ID_1, 56d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen FAKE_MEDIA_ROUTE_NAME_1).build()); 57d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen builder.addRoute(new MediaRouteDescriptor.Builder(FAKE_MEDIA_ROUTE_ID_2, 58d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen FAKE_MEDIA_ROUTE_NAME_2).build()); 59d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen descriptor = builder.build(); 60d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen List<MediaRouteDescriptor> routes = descriptor.getRoutes(); 61d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(2, routes.size()); 62d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_ID_1, routes.get(0).getId()); 63d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_NAME_1, routes.get(0).getName()); 64d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_ID_2, routes.get(1).getId()); 65d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_NAME_2, routes.get(1).getName()); 66d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen 67d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen // Tests for addRoutes() 68d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen List<MediaRouteDescriptor> otherRoutes = new ArrayList<>(); 69d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen otherRoutes.add(new MediaRouteDescriptor.Builder(FAKE_MEDIA_ROUTE_ID_3, 70d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen FAKE_MEDIA_ROUTE_NAME_3).build()); 71d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen otherRoutes.add(new MediaRouteDescriptor.Builder(FAKE_MEDIA_ROUTE_ID_4, 72d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen FAKE_MEDIA_ROUTE_NAME_4).build()); 73d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen builder.addRoutes(otherRoutes); 74d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen descriptor = builder.build(); 75d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen routes = descriptor.getRoutes(); 76d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(4, routes.size()); 77d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_ID_1, routes.get(0).getId()); 78d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_NAME_1, routes.get(0).getName()); 79d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_ID_2, routes.get(1).getId()); 80d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_NAME_2, routes.get(1).getName()); 81d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_ID_3, routes.get(2).getId()); 82d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_NAME_3, routes.get(2).getName()); 83d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_ID_4, routes.get(3).getId()); 84d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_NAME_4, routes.get(3).getName()); 85d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen 86d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen // Tests for setRoutes() 87d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen builder.setRoutes(otherRoutes); 88d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen descriptor = builder.build(); 89d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen routes = descriptor.getRoutes(); 90d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(2, routes.size()); 91d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_ID_3, routes.get(0).getId()); 92d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_NAME_3, routes.get(0).getName()); 93d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_ID_4, routes.get(1).getId()); 94d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_NAME_4, routes.get(1).getName()); 95d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen 96d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen // Tests setRoutes() for side effects 97d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen otherRoutes.add(new MediaRouteDescriptor.Builder(FAKE_MEDIA_ROUTE_ID_1, 98d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen FAKE_MEDIA_ROUTE_NAME_1).build()); 99d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen descriptor = builder.build(); 100d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen routes = descriptor.getRoutes(); 101d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(2, routes.size()); 102d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_ID_3, routes.get(0).getId()); 103d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_NAME_3, routes.get(0).getName()); 104d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_ID_4, routes.get(1).getId()); 105d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_NAME_4, routes.get(1).getName()); 106d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen 107d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen // Tests setRoutes against null 108d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen builder.setRoutes(null); 109d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen descriptor = builder.build(); 110d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertTrue(descriptor.getRoutes().isEmpty()); 111d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen } 112d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen 113d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen @Test 114d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen @SmallTest 115d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen public void testCreateDescriptorBundleForClient() { 116d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen MediaRouteProviderDescriptor.Builder builder = new MediaRouteProviderDescriptor.Builder(); 117d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen builder.addRoute(new MediaRouteDescriptor.Builder(FAKE_MEDIA_ROUTE_ID_1, 118d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen FAKE_MEDIA_ROUTE_NAME_1).setMaxClientVersion(15).setMinClientVersion(10).build()); 119d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen builder.addRoute(new MediaRouteDescriptor.Builder(FAKE_MEDIA_ROUTE_ID_2, 120d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen FAKE_MEDIA_ROUTE_NAME_2).setMaxClientVersion(18).setMinClientVersion(11).build()); 121d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen builder.addRoute(new MediaRouteDescriptor.Builder(FAKE_MEDIA_ROUTE_ID_3, 122d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen FAKE_MEDIA_ROUTE_NAME_3).setMaxClientVersion(25).setMinClientVersion(16).build()); 123d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen builder.addRoute(new MediaRouteDescriptor.Builder(FAKE_MEDIA_ROUTE_ID_4, 124d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen FAKE_MEDIA_ROUTE_NAME_4).setMaxClientVersion(12).setMinClientVersion(4).build()); 125d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen MediaRouteProviderDescriptor descriptor = builder.build(); 126d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen 127d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen Bundle bundle = MediaRouteProviderService 128d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen .createDescriptorBundleForClientVersion(descriptor, 3); 129d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen MediaRouteProviderDescriptor resultDescriptor = 130d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen MediaRouteProviderDescriptor.fromBundle(bundle); 131d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertTrue(resultDescriptor.getRoutes().isEmpty()); 132d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen 133d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen bundle = MediaRouteProviderService.createDescriptorBundleForClientVersion(descriptor, 4); 134d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen resultDescriptor = MediaRouteProviderDescriptor.fromBundle(bundle); 135d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen List<MediaRouteDescriptor> routes = resultDescriptor.getRoutes(); 136d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(1, routes.size()); 137d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_ID_4, routes.get(0).getId()); 138d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_NAME_4, routes.get(0).getName()); 139d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen 140d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen bundle = MediaRouteProviderService.createDescriptorBundleForClientVersion(descriptor, 10); 141d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen resultDescriptor = MediaRouteProviderDescriptor.fromBundle(bundle); 142d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen routes = resultDescriptor.getRoutes(); 143d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(2, routes.size()); 144d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_ID_1, routes.get(0).getId()); 145d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_NAME_1, routes.get(0).getName()); 146d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_ID_4, routes.get(1).getId()); 147d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_NAME_4, routes.get(1).getName()); 148d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen 149d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen bundle = MediaRouteProviderService.createDescriptorBundleForClientVersion(descriptor, 12); 150d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen resultDescriptor = MediaRouteProviderDescriptor.fromBundle(bundle); 151d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen routes = resultDescriptor.getRoutes(); 152d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(3, routes.size()); 153d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_ID_1, routes.get(0).getId()); 154d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_NAME_1, routes.get(0).getName()); 155d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_ID_2, routes.get(1).getId()); 156d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_NAME_2, routes.get(1).getName()); 157d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_ID_4, routes.get(2).getId()); 158d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_NAME_4, routes.get(2).getName()); 159d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen 160d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen bundle = MediaRouteProviderService.createDescriptorBundleForClientVersion(descriptor, 15); 161d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen resultDescriptor = MediaRouteProviderDescriptor.fromBundle(bundle); 162d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen routes = resultDescriptor.getRoutes(); 163d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(2, routes.size()); 164d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_ID_1, routes.get(0).getId()); 165d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_NAME_1, routes.get(0).getName()); 166d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_ID_2, routes.get(1).getId()); 167d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_NAME_2, routes.get(1).getName()); 168d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen 169d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen bundle = MediaRouteProviderService.createDescriptorBundleForClientVersion(descriptor, 16); 170d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen resultDescriptor = MediaRouteProviderDescriptor.fromBundle(bundle); 171d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen routes = resultDescriptor.getRoutes(); 172d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(2, routes.size()); 173d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_ID_2, routes.get(0).getId()); 174d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_NAME_2, routes.get(0).getName()); 175d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_ID_3, routes.get(1).getId()); 176d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_NAME_3, routes.get(1).getName()); 177d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen 178d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen bundle = MediaRouteProviderService.createDescriptorBundleForClientVersion(descriptor, 19); 179d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen resultDescriptor = MediaRouteProviderDescriptor.fromBundle(bundle); 180d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen routes = resultDescriptor.getRoutes(); 181d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(1, routes.size()); 182d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_ID_3, routes.get(0).getId()); 183d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertEquals(FAKE_MEDIA_ROUTE_NAME_3, routes.get(0).getName()); 184d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen 185d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen bundle = MediaRouteProviderService.createDescriptorBundleForClientVersion(descriptor, 26); 186d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen resultDescriptor = MediaRouteProviderDescriptor.fromBundle(bundle); 187d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen assertTrue(resultDescriptor.getRoutes().isEmpty()); 188d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen } 189d196cca65c1f7d7ba54fd5104023d7a411c3b2a1Conrad Chen} 190