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