1/*
2 * Copyright (C) 2014 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
17package android.bluetooth.le;
18
19import android.os.Parcel;
20import android.os.ParcelUuid;
21import android.test.suitebuilder.annotation.SmallTest;
22
23import junit.framework.TestCase;
24
25/**
26 * Unit test cases for {@link AdvertiseData}.
27 * <p>
28 * To run the test, use adb shell am instrument -e class 'android.bluetooth.le.AdvertiseDataTest' -w
29 * 'com.android.bluetooth.tests/android.bluetooth.BluetoothTestRunner'
30 */
31public class AdvertiseDataTest extends TestCase {
32
33    private AdvertiseData.Builder mAdvertiseDataBuilder;
34
35    @Override
36    protected void setUp() throws Exception {
37        mAdvertiseDataBuilder = new AdvertiseData.Builder();
38    }
39
40    @SmallTest
41    public void testEmptyData() {
42        Parcel parcel = Parcel.obtain();
43        AdvertiseData data = mAdvertiseDataBuilder.build();
44        data.writeToParcel(parcel, 0);
45        parcel.setDataPosition(0);
46        AdvertiseData dataFromParcel =
47                AdvertiseData.CREATOR.createFromParcel(parcel);
48        assertEquals(data, dataFromParcel);
49    }
50
51    @SmallTest
52    public void testEmptyServiceUuid() {
53        Parcel parcel = Parcel.obtain();
54        AdvertiseData data = mAdvertiseDataBuilder.setIncludeDeviceName(true).build();
55        data.writeToParcel(parcel, 0);
56        parcel.setDataPosition(0);
57        AdvertiseData dataFromParcel =
58                AdvertiseData.CREATOR.createFromParcel(parcel);
59        assertEquals(data, dataFromParcel);
60    }
61
62    @SmallTest
63    public void testEmptyManufacturerData() {
64        Parcel parcel = Parcel.obtain();
65        int manufacturerId = 50;
66        byte[] manufacturerData = new byte[0];
67        AdvertiseData data =
68                mAdvertiseDataBuilder.setIncludeDeviceName(true)
69                        .addManufacturerData(manufacturerId, manufacturerData).build();
70        data.writeToParcel(parcel, 0);
71        parcel.setDataPosition(0);
72        AdvertiseData dataFromParcel =
73                AdvertiseData.CREATOR.createFromParcel(parcel);
74        assertEquals(data, dataFromParcel);
75    }
76
77    @SmallTest
78    public void testEmptyServiceData() {
79        Parcel parcel = Parcel.obtain();
80        ParcelUuid uuid = ParcelUuid.fromString("0000110A-0000-1000-8000-00805F9B34FB");
81        byte[] serviceData = new byte[0];
82        AdvertiseData data =
83                mAdvertiseDataBuilder.setIncludeDeviceName(true)
84                        .addServiceData(uuid, serviceData).build();
85        data.writeToParcel(parcel, 0);
86        parcel.setDataPosition(0);
87        AdvertiseData dataFromParcel =
88                AdvertiseData.CREATOR.createFromParcel(parcel);
89        assertEquals(data, dataFromParcel);
90    }
91
92    @SmallTest
93    public void testServiceUuid() {
94        Parcel parcel = Parcel.obtain();
95        ParcelUuid uuid = ParcelUuid.fromString("0000110A-0000-1000-8000-00805F9B34FB");
96        ParcelUuid uuid2 = ParcelUuid.fromString("0000110B-0000-1000-8000-00805F9B34FB");
97
98        AdvertiseData data =
99                mAdvertiseDataBuilder.setIncludeDeviceName(true)
100                        .addServiceUuid(uuid).addServiceUuid(uuid2).build();
101        data.writeToParcel(parcel, 0);
102        parcel.setDataPosition(0);
103        AdvertiseData dataFromParcel =
104                AdvertiseData.CREATOR.createFromParcel(parcel);
105        assertEquals(data, dataFromParcel);
106    }
107
108    @SmallTest
109    public void testManufacturerData() {
110        Parcel parcel = Parcel.obtain();
111        ParcelUuid uuid = ParcelUuid.fromString("0000110A-0000-1000-8000-00805F9B34FB");
112        ParcelUuid uuid2 = ParcelUuid.fromString("0000110B-0000-1000-8000-00805F9B34FB");
113
114        int manufacturerId = 50;
115        byte[] manufacturerData = new byte[] {
116                (byte) 0xF0, 0x00, 0x02, 0x15 };
117        AdvertiseData data =
118                mAdvertiseDataBuilder.setIncludeDeviceName(true)
119                        .addServiceUuid(uuid).addServiceUuid(uuid2)
120                        .addManufacturerData(manufacturerId, manufacturerData).build();
121
122        data.writeToParcel(parcel, 0);
123        parcel.setDataPosition(0);
124        AdvertiseData dataFromParcel =
125                AdvertiseData.CREATOR.createFromParcel(parcel);
126        assertEquals(data, dataFromParcel);
127    }
128
129    @SmallTest
130    public void testServiceData() {
131        Parcel parcel = Parcel.obtain();
132        ParcelUuid uuid = ParcelUuid.fromString("0000110A-0000-1000-8000-00805F9B34FB");
133        byte[] serviceData = new byte[] {
134                (byte) 0xF0, 0x00, 0x02, 0x15 };
135        AdvertiseData data =
136                mAdvertiseDataBuilder.setIncludeDeviceName(true)
137                        .addServiceData(uuid, serviceData).build();
138        data.writeToParcel(parcel, 0);
139        parcel.setDataPosition(0);
140        AdvertiseData dataFromParcel =
141                AdvertiseData.CREATOR.createFromParcel(parcel);
142        assertEquals(data, dataFromParcel);
143    }
144}
145