103259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang/* 203259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang * Copyright (C) 2014 The Android Open Source Project 303259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang * 403259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang * Licensed under the Apache License, Version 2.0 (the "License"); 503259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang * you may not use this file except in compliance with the License. 603259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang * You may obtain a copy of the License at 703259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang * 803259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang * http://www.apache.org/licenses/LICENSE-2.0 903259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang * 1003259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang * Unless required by applicable law or agreed to in writing, software 1103259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang * distributed under the License is distributed on an "AS IS" BASIS, 1203259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1303259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang * See the License for the specific language governing permissions and 1403259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang * limitations under the License. 1503259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang */ 1603259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang 1703259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wangpackage android.bluetooth.le; 1803259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang 1903259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wangimport android.os.Parcel; 2003259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wangimport android.os.ParcelUuid; 2103259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wangimport android.test.suitebuilder.annotation.SmallTest; 2203259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang 2303259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wangimport junit.framework.TestCase; 2403259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang 2503259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang/** 2603259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang * Unit test cases for {@link AdvertiseData}. 2703259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang * <p> 2803259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang * To run the test, use adb shell am instrument -e class 'android.bluetooth.le.AdvertiseDataTest' -w 2903259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang * 'com.android.bluetooth.tests/android.bluetooth.BluetoothTestRunner' 3003259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang */ 3103259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wangpublic class AdvertiseDataTest extends TestCase { 3203259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang 3303259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang private AdvertiseData.Builder mAdvertiseDataBuilder; 3403259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang 3503259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang @Override 3603259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang protected void setUp() throws Exception { 3703259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang mAdvertiseDataBuilder = new AdvertiseData.Builder(); 3803259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang } 3903259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang 4003259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang @SmallTest 4103259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang public void testEmptyData() { 4203259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang Parcel parcel = Parcel.obtain(); 4303259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang AdvertiseData data = mAdvertiseDataBuilder.build(); 4403259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang data.writeToParcel(parcel, 0); 4503259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang parcel.setDataPosition(0); 4603259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang AdvertiseData dataFromParcel = 4703259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang AdvertiseData.CREATOR.createFromParcel(parcel); 4803259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang assertEquals(data, dataFromParcel); 4903259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang } 5003259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang 5103259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang @SmallTest 5203259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang public void testEmptyServiceUuid() { 5303259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang Parcel parcel = Parcel.obtain(); 5403259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang AdvertiseData data = mAdvertiseDataBuilder.setIncludeDeviceName(true).build(); 5503259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang data.writeToParcel(parcel, 0); 5603259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang parcel.setDataPosition(0); 5703259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang AdvertiseData dataFromParcel = 5803259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang AdvertiseData.CREATOR.createFromParcel(parcel); 5903259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang assertEquals(data, dataFromParcel); 6003259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang } 6103259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang 6203259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang @SmallTest 6303259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang public void testEmptyManufacturerData() { 6403259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang Parcel parcel = Parcel.obtain(); 6503259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang int manufacturerId = 50; 6603259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang byte[] manufacturerData = new byte[0]; 6703259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang AdvertiseData data = 6803259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang mAdvertiseDataBuilder.setIncludeDeviceName(true) 696bf513d32db7fbc157681bd642e12a201cf20a89Wei Wang .addManufacturerData(manufacturerId, manufacturerData).build(); 7003259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang data.writeToParcel(parcel, 0); 7103259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang parcel.setDataPosition(0); 7203259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang AdvertiseData dataFromParcel = 7303259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang AdvertiseData.CREATOR.createFromParcel(parcel); 7403259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang assertEquals(data, dataFromParcel); 7503259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang } 7603259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang 7703259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang @SmallTest 7803259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang public void testEmptyServiceData() { 7903259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang Parcel parcel = Parcel.obtain(); 8003259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang ParcelUuid uuid = ParcelUuid.fromString("0000110A-0000-1000-8000-00805F9B34FB"); 8103259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang byte[] serviceData = new byte[0]; 8203259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang AdvertiseData data = 8303259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang mAdvertiseDataBuilder.setIncludeDeviceName(true) 846bf513d32db7fbc157681bd642e12a201cf20a89Wei Wang .addServiceData(uuid, serviceData).build(); 8503259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang data.writeToParcel(parcel, 0); 8603259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang parcel.setDataPosition(0); 8703259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang AdvertiseData dataFromParcel = 8803259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang AdvertiseData.CREATOR.createFromParcel(parcel); 8903259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang assertEquals(data, dataFromParcel); 9003259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang } 9103259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang 9203259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang @SmallTest 9303259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang public void testServiceUuid() { 9403259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang Parcel parcel = Parcel.obtain(); 9503259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang ParcelUuid uuid = ParcelUuid.fromString("0000110A-0000-1000-8000-00805F9B34FB"); 9603259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang ParcelUuid uuid2 = ParcelUuid.fromString("0000110B-0000-1000-8000-00805F9B34FB"); 9703259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang 9803259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang AdvertiseData data = 9903259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang mAdvertiseDataBuilder.setIncludeDeviceName(true) 10003259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang .addServiceUuid(uuid).addServiceUuid(uuid2).build(); 10103259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang data.writeToParcel(parcel, 0); 10203259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang parcel.setDataPosition(0); 10303259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang AdvertiseData dataFromParcel = 10403259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang AdvertiseData.CREATOR.createFromParcel(parcel); 10503259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang assertEquals(data, dataFromParcel); 10603259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang } 10703259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang 10803259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang @SmallTest 10903259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang public void testManufacturerData() { 11003259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang Parcel parcel = Parcel.obtain(); 11103259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang ParcelUuid uuid = ParcelUuid.fromString("0000110A-0000-1000-8000-00805F9B34FB"); 11203259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang ParcelUuid uuid2 = ParcelUuid.fromString("0000110B-0000-1000-8000-00805F9B34FB"); 11303259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang 11403259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang int manufacturerId = 50; 11503259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang byte[] manufacturerData = new byte[] { 11603259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang (byte) 0xF0, 0x00, 0x02, 0x15 }; 11703259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang AdvertiseData data = 11803259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang mAdvertiseDataBuilder.setIncludeDeviceName(true) 11903259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang .addServiceUuid(uuid).addServiceUuid(uuid2) 1206bf513d32db7fbc157681bd642e12a201cf20a89Wei Wang .addManufacturerData(manufacturerId, manufacturerData).build(); 12103259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang 12203259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang data.writeToParcel(parcel, 0); 12303259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang parcel.setDataPosition(0); 12403259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang AdvertiseData dataFromParcel = 12503259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang AdvertiseData.CREATOR.createFromParcel(parcel); 12603259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang assertEquals(data, dataFromParcel); 12703259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang } 12803259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang 12903259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang @SmallTest 13003259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang public void testServiceData() { 13103259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang Parcel parcel = Parcel.obtain(); 13203259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang ParcelUuid uuid = ParcelUuid.fromString("0000110A-0000-1000-8000-00805F9B34FB"); 13303259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang byte[] serviceData = new byte[] { 13403259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang (byte) 0xF0, 0x00, 0x02, 0x15 }; 13503259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang AdvertiseData data = 13603259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang mAdvertiseDataBuilder.setIncludeDeviceName(true) 1376bf513d32db7fbc157681bd642e12a201cf20a89Wei Wang .addServiceData(uuid, serviceData).build(); 13803259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang data.writeToParcel(parcel, 0); 13903259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang parcel.setDataPosition(0); 14003259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang AdvertiseData dataFromParcel = 14103259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang AdvertiseData.CREATOR.createFromParcel(parcel); 14203259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang assertEquals(data, dataFromParcel); 14303259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang } 14403259472b19fef586f5eec5d4e7d61c34a6cd298Wei Wang} 145