# Eddystone unit tests
#
# Type the following command to launch start the tests:
# $ test/run_tests -P "load_contrib('eddystone')" -t test/contrib/eddystone.uts

+ Eddystone tests

= Setup

def expect_exception(e, c):
    try:
        c()
        return False
    except e:
        return True

= Eddystone URL (decode EIR)

d = hex_bytes('0c16aafe10040373636170790a')
p = EIR_Hdr(d)
p.show()

assert p[EIR_ServiceData16BitUUID].svc_uuid == 0xfeaa
assert p[Eddystone_URL].to_url() == b'https://scapy.net'

= Eddystone URL (decode LE Set Advertising Data)

d = hex_bytes('01082020140201020303aafe0c16aafe10040373636170790a0000000000000000000000')
p = HCI_Hdr(d)

assert p[EIR_ServiceData16BitUUID].svc_uuid == 0xfeaa
assert p[Eddystone_URL].to_url() == b'https://scapy.net'

= Eddystone URL (encode frames)

d = raw(Eddystone_URL.from_url('https://scapy.net'))
assert d == hex_bytes('10000373636170790a')

d = raw(Eddystone_URL.from_url('https://www.scapy.net'))
assert d == hex_bytes('10000173636170790a')

# Include some other .extensions in the path
d = raw(Eddystone_URL.from_url('http://www.example.com/hello.info.html'))
assert d == hex_bytes('1000006578616d706c650068656c6c6f0b2e68746d6c')

= Eddystone URL (encode unsupported scheme)

assert expect_exception(Exception, lambda: Eddystone_URL.from_url('gopher://example.com'))

= Eddystone URL (encode advertising report)

p = Eddystone_URL.from_url('https://scapy.net').build_advertising_report()
assert raw(p[EIR_ServiceData16BitUUID]) == hex_bytes('aafe10000373636170790a')

