• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1% AltBeacon unit tests
2#
3# Type the following command to launch start the tests:
4# $ test/run_tests -P "load_contrib('altbeacon')" -t test/contrib/altbeacon.uts
5#
6# AltBeaconParser tests adapted from:
7# https://github.com/AltBeacon/android-beacon-library/blob/master/lib/src/test/java/org/altbeacon/beacon/AltBeaconParserTest.java
8
9+ AltBeacon tests
10
11= Setup
12
13def next_eir(p):
14   return EIR_Hdr(p[Padding].load)
15
16= Presence check
17
18AltBeacon
19
20= AltBeaconParserTest.testRecognizeBeacon
21
22d = hex_bytes('02011a1bff1801beac2f234454cf6d4a0fadf2f4911ba9ffa600010002c509')
23p = EIR_Hdr(d)
24
25# First is a flags header
26assert EIR_Flags in p
27
28# Then the AltBeacon
29p = next_eir(p)
30assert p[EIR_Manufacturer_Specific_Data].company_id == RADIUS_NETWORKS_MFG
31assert p[AltBeacon].mfg_reserved == 9
32
33
34= AltBeaconParserTest.testDetectsDaveMHardwareBeacon
35
36d = hex_bytes('02011a1bff1801beac2f234454cf6d4a0fadf2f4911ba9ffa600050003be020e09526164426561636f6e20555342020a03000000000000000000000000')
37p = EIR_Hdr(d)
38
39# First is Flags
40assert EIR_Flags in p
41
42# Then the AltBeacon
43p = next_eir(p)
44assert p[EIR_Manufacturer_Specific_Data].company_id == RADIUS_NETWORKS_MFG
45assert AltBeacon in p
46
47# Then CompleteLocalName
48p = next_eir(p)
49assert p[EIR_CompleteLocalName].local_name == b'RadBeacon USB'
50
51# Then TX_Power_Level
52p = next_eir(p)
53assert p[EIR_TX_Power_Level].level == 3
54
55= AltBeaconParserTest.testParseWrongFormatReturnsNothing
56
57d = hex_bytes('02011a1aff1801ffff2f234454cf6d4a0fadf2f4911ba9ffa600010002c509')
58p = EIR_Hdr(d)
59
60# First is Flags
61assert EIR_Flags in p
62
63# Then the EIR_Manufacturer_Specific_Data
64p = next_eir(p)
65assert p[EIR_Manufacturer_Specific_Data].company_id == RADIUS_NETWORKS_MFG
66assert AltBeacon not in p
67
68= AltBeaconParserTest.testParsesBeaconMissingDataField
69
70d = hex_bytes('02011a1aff1801beac2f234454cf6d4a0fadf2f4911ba9ffa600010002c50000')
71p = EIR_Hdr(d)
72
73# First is Flags
74assert EIR_Flags in p
75
76# Then the EIR_Manufacturer_Specific_Data
77p = next_eir(p)
78assert p[EIR_Manufacturer_Specific_Data].company_id == RADIUS_NETWORKS_MFG
79assert p[AltBeacon].id1 == uuid.UUID('2f234454-cf6d-4a0f-adf2-f4911ba9ffa6')
80assert p[AltBeacon].id2 == 1
81assert p[AltBeacon].id3 == 2
82assert p[AltBeacon].tx_power == -59
83
84= Build EIR
85
86p = AltBeacon(
87    id1=uuid.UUID('2f234454-cf6d-4a0f-adf2-f4911ba9ffa6'),
88    id2=1,
89    id3=2,
90    tx_power=-59,
91)
92
93d = raw(p.build_eir()[-1])
94assert d == hex_bytes('1bff1801beac2f234454cf6d4a0fadf2f4911ba9ffa600010002c500')
95