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