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