• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2023 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.bluetooth.bass_client;
18 
19 import static com.google.common.truth.Truth.assertThat;
20 
21 import android.bluetooth.BluetoothAdapter;
22 import android.bluetooth.BluetoothDevice;
23 import android.bluetooth.BluetoothLeBroadcastMetadata;
24 
25 import androidx.test.filters.SmallTest;
26 import androidx.test.runner.AndroidJUnit4;
27 
28 import org.junit.Before;
29 import org.junit.Test;
30 import org.junit.runner.RunWith;
31 
32 @SmallTest
33 @RunWith(AndroidJUnit4.class)
34 public class PeriodicAdvertisementResultTest {
35     private static final String REMOTE_DEVICE_ADDRESS = "00:01:02:03:04:05";
36     private static final String TEST_BROADCAST_NAME = "Test";
37 
38     BluetoothDevice mDevice;
39 
40     @Before
setUp()41     public void setUp() {
42         mDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(REMOTE_DEVICE_ADDRESS);
43     }
44 
45     @Test
constructor()46     public void constructor() {
47         int addressType = 1;
48         int syncHandle = 2;
49         int advSid = 3;
50         int paInterval = 4;
51         int broadcastId = 5;
52         PublicBroadcastData pbData = generatePublicBroadcastData();
53         String broadcastName = TEST_BROADCAST_NAME;
54         PeriodicAdvertisementResult result =
55                 new PeriodicAdvertisementResult(
56                         mDevice,
57                         addressType,
58                         syncHandle,
59                         advSid,
60                         paInterval,
61                         broadcastId,
62                         pbData,
63                         broadcastName);
64 
65         assertThat(result.getAddressType()).isEqualTo(addressType);
66         assertThat(result.getSyncHandle()).isEqualTo(syncHandle);
67         assertThat(result.getAdvSid()).isEqualTo(advSid);
68         assertThat(result.getAdvInterval()).isEqualTo(paInterval);
69         assertThat(result.getBroadcastId()).isEqualTo(broadcastId);
70         assertThat(result.getPublicBroadcastData()).isEqualTo(pbData);
71         assertThat(result.getBroadcastName()).isEqualTo(broadcastName);
72     }
73 
74     @Test
updateMethods()75     public void updateMethods() {
76         int addressType = 1;
77         int syncHandle = 2;
78         int advSid = 3;
79         int paInterval = 4;
80         int broadcastId = 5;
81         PublicBroadcastData pbData = null;
82         String broadcastName = null;
83         PeriodicAdvertisementResult result =
84                 new PeriodicAdvertisementResult(
85                         mDevice,
86                         addressType,
87                         syncHandle,
88                         advSid,
89                         paInterval,
90                         broadcastId,
91                         pbData,
92                         broadcastName);
93 
94         int newAddressType = 6;
95         result.updateAddressType(newAddressType);
96         assertThat(result.getAddressType()).isEqualTo(newAddressType);
97 
98         int newSyncHandle = 7;
99         result.updateSyncHandle(newSyncHandle);
100         assertThat(result.getSyncHandle()).isEqualTo(newSyncHandle);
101 
102         int newAdvSid = 8;
103         result.updateAdvSid(newAdvSid);
104         assertThat(result.getAdvSid()).isEqualTo(newAdvSid);
105 
106         int newAdvInterval = 9;
107         result.updateAdvInterval(newAdvInterval);
108         assertThat(result.getAdvInterval()).isEqualTo(newAdvInterval);
109 
110         int newBroadcastId = 10;
111         result.updateBroadcastId(newBroadcastId);
112         assertThat(result.getBroadcastId()).isEqualTo(newBroadcastId);
113 
114         PublicBroadcastData newPbData = generatePublicBroadcastData();
115         result.updatePublicBroadcastData(newPbData);
116         assertThat(result.getPublicBroadcastData()).isEqualTo(newPbData);
117 
118         String newBroadcastName = TEST_BROADCAST_NAME;
119         result.updateBroadcastName(newBroadcastName);
120         assertThat(result.getBroadcastName()).isEqualTo(newBroadcastName);
121     }
122 
123     @Test
print_doesNotCrash()124     public void print_doesNotCrash() {
125         int addressType = 1;
126         int syncHandle = 2;
127         int advSid = 3;
128         int paInterval = 4;
129         int broadcastId = 5;
130         PublicBroadcastData pbData = generatePublicBroadcastData();
131         String broadcastName = TEST_BROADCAST_NAME;
132         PeriodicAdvertisementResult result =
133                 new PeriodicAdvertisementResult(
134                         mDevice,
135                         addressType,
136                         syncHandle,
137                         advSid,
138                         paInterval,
139                         broadcastId,
140                         pbData,
141                         broadcastName);
142 
143         result.print();
144     }
145 
146     /** Helper to generate test data for public broadcast. */
generatePublicBroadcastData()147     private PublicBroadcastData generatePublicBroadcastData() {
148         PublicBroadcastData.PublicBroadcastInfo info =
149                 new PublicBroadcastData.PublicBroadcastInfo();
150         info.isEncrypted = true;
151         info.audioConfigQuality =
152                 (BluetoothLeBroadcastMetadata.AUDIO_CONFIG_QUALITY_STANDARD
153                         | BluetoothLeBroadcastMetadata.AUDIO_CONFIG_QUALITY_HIGH);
154         info.metaDataLength = 3;
155         info.metaData = new byte[] {0x06, 0x07, 0x08};
156         return new PublicBroadcastData(info);
157     }
158 }
159