]> git.basschouten.com Git - openhab-addons.git/blob
f8b8e275ef767fb34c26f30e0f8a4f7adbb88748
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.bluetooth.bluegiga.internal.eir;
14
15 import static org.junit.jupiter.api.Assertions.*;
16
17 import java.util.List;
18 import java.util.Map;
19 import java.util.UUID;
20
21 import org.eclipse.jdt.annotation.NonNullByDefault;
22 import org.junit.jupiter.api.Test;
23
24 /**
25  * Tests {@link EirRecord}.
26  *
27  * @author Kai Kreuzer - Initial contribution
28  */
29 @NonNullByDefault
30 public class EirRecordTest {
31
32     @SuppressWarnings("unchecked")
33     @Test
34     public void testProcess16BitUUIDs() {
35         int[] data = { 0x03, 0x0F, 0x18, 0x00, 0x18 };
36         String batteryService = "0000180F-0000-1000-8000-00805F9B34FB";
37         String genericAccess = "00001800-0000-1000-8000-00805F9B34FB";
38
39         EirRecord eirRecord = new EirRecord(data);
40         assertEquals(EirDataType.EIR_SVC_UUID16_COMPLETE, eirRecord.getType());
41         List<UUID> uuids = (List<UUID>) eirRecord.getRecord();
42         assertEquals(2, uuids.size());
43         assertTrue(uuids.contains(UUID.fromString(batteryService)));
44         assertTrue(uuids.contains(UUID.fromString(genericAccess)));
45     }
46
47     @SuppressWarnings("unchecked")
48     @Test
49     public void testProcess32BitUUIDs() {
50         int[] data = { 0x05, /* service1 */ 0x10, 0x8e, 0xe7, 0x74, /* service2 */ 0x11, 0x8e, 0xe7, 0x64 };
51         String service1 = "74E78E10-0000-1000-8000-00805F9B34FB";
52         String service2 = "64E78E11-0000-1000-8000-00805F9B34FB";
53
54         EirRecord eirRecord = new EirRecord(data);
55         assertEquals(EirDataType.EIR_SVC_UUID32_COMPLETE, eirRecord.getType());
56         List<UUID> uuids = (List<UUID>) eirRecord.getRecord();
57         assertEquals(2, uuids.size());
58         assertTrue(uuids.contains(UUID.fromString(service1)));
59         assertTrue(uuids.contains(UUID.fromString(service2)));
60     }
61
62     @SuppressWarnings("unchecked")
63     @Test
64     public void testProcess128BitUUIDs() {
65         int[] data = { 0x07, /* service1 */ 0x6d, 0x66, 0x70, 0x44, 0x73, 0x66, 0x62, 0x75, 0x66, 0x45, 0x76, 0x64,
66                 0x55, 0xaa, 0x6c, 0x22, /* service2 */ 0x6e, 0x66, 0x70, 0x44, 0x73, 0x66, 0x62, 0x75, 0x66, 0x45, 0x76,
67                 0x64, 0x55, 0xaa, 0x6c, 0x12, };
68         String service1 = "226caa55-6476-4566-7562-66734470666d";
69         String service2 = "126caa55-6476-4566-7562-66734470666e";
70
71         EirRecord eirRecord = new EirRecord(data);
72         assertEquals(EirDataType.EIR_SVC_UUID128_COMPLETE, eirRecord.getType());
73         List<UUID> uuids = (List<UUID>) eirRecord.getRecord();
74         assertEquals(2, uuids.size());
75         assertTrue(uuids.contains(UUID.fromString(service1)));
76         assertTrue(uuids.contains(UUID.fromString(service2)));
77     }
78
79     @SuppressWarnings("unchecked")
80     @Test
81     public void testProcessManufacturerData() {
82         int[] data = { /* length 0x05, */ 0xFF, 0xFF, 0x02, 0x00, 0xFF };
83         short siliconLabsID = (short) 0x02FF;
84
85         EirRecord eirRecord = new EirRecord(data);
86         assertEquals(EirDataType.EIR_MANUFACTURER_SPECIFIC, eirRecord.getType());
87         Map<Short, int[]> manufacturerData = (Map<Short, int[]>) eirRecord.getRecord();
88         assertTrue(manufacturerData.containsKey(siliconLabsID));
89         assertArrayEquals(new int[] { 0x00, 0xFF }, manufacturerData.get(siliconLabsID));
90     }
91
92     @SuppressWarnings("unchecked")
93     @Test
94     public void testUUID16ServiceData() {
95         int[] data = { /* length 0x05, */ /* service data 16 bit UUID */ 0x16, 0x0F, 0x18, 0x45 };
96         UUID batteryServiceUUID = UUID.fromString("0000180F-0000-1000-8000-00805F9B34FB");
97
98         EirRecord eirRecord = new EirRecord(data);
99         assertEquals(EirDataType.EIR_SVC_DATA_UUID16, eirRecord.getType());
100         Map<UUID, int[]> serviceData = (Map<UUID, int[]>) eirRecord.getRecord();
101         assertTrue(serviceData.containsKey(batteryServiceUUID));
102         assertArrayEquals(new int[] { 0x45 }, serviceData.get(batteryServiceUUID));
103     }
104
105     @SuppressWarnings({ "unchecked" })
106     @Test
107     public void testUUID32ServiceData() {
108         int[] data = { /* service data 32 bit UUID */ 0x20, /* UUID */ 0x10, 0x8e, 0xe7, 0x74, /* data */ 0x74, 0x01,
109                 0x0d, 0x01, (byte) 0xec };
110         UUID dataServiceUUID = UUID.fromString("74E78E10-0000-1000-8000-00805F9B34FB");
111
112         EirRecord eirRecord = new EirRecord(data);
113         assertEquals(EirDataType.EIR_SVC_DATA_UUID32, eirRecord.getType());
114         Map<UUID, int[]> serviceData = (Map<UUID, int[]>) eirRecord.getRecord();
115         assertTrue(serviceData.containsKey(dataServiceUUID));
116         assertArrayEquals(new int[] { 0x74, 0x01, 0x0d, 0x01, (byte) 0xec }, serviceData.get(dataServiceUUID));
117     }
118
119     @SuppressWarnings("unchecked")
120     @Test
121     public void testUUID128ServiceData() {
122         int[] data = { /* service data 32 bit UUID */ 0x21, /* UUID */ 0x6d, 0x66, 0x70, 0x44, 0x73, 0x66, 0x62, 0x75,
123                 0x66, 0x45, 0x76, 0x64, 0x55, 0xaa, 0x6c, 0x22, /* data */ 0x74, 0x01, 0x0d, 0x01, (byte) 0xec };
124         UUID dataServiceUUID = UUID.fromString("226caa55-6476-4566-7562-66734470666d");
125
126         EirRecord eirRecord = new EirRecord(data);
127         assertEquals(EirDataType.EIR_SVC_DATA_UUID128, eirRecord.getType());
128         Map<UUID, int[]> serviceData = (Map<UUID, int[]>) eirRecord.getRecord();
129         assertTrue(serviceData.containsKey(dataServiceUUID));
130         assertArrayEquals(new int[] { 0x74, 0x01, 0x0d, 0x01, (byte) 0xec }, serviceData.get(dataServiceUUID));
131     }
132 }