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