31 lines
737 B
Python
31 lines
737 B
Python
from maple.pdb.strings import EMPTY, encode_devicesql
|
||
|
||
|
||
def test_empty():
|
||
assert encode_devicesql("") == EMPTY
|
||
|
||
|
||
def test_short_ascii():
|
||
out = encode_devicesql("ON")
|
||
# length=3 -> length_and_kind = (3<<1)|1 = 7
|
||
assert out == bytes([7]) + b"ON"
|
||
|
||
|
||
def test_longer_ascii():
|
||
s = "Hello, World!"
|
||
out = encode_devicesql(s)
|
||
length = len(s) + 1
|
||
assert out[0] == ((length << 1) | 1)
|
||
assert out[1:] == s.encode("ascii")
|
||
|
||
|
||
def test_utf16():
|
||
s = "ЛаBа"
|
||
out = encode_devicesql(s)
|
||
assert out[0] == 0x90
|
||
# Total length stored = payload_len + 4
|
||
payload = s.encode("utf-16-le")
|
||
assert out[1:3] == (len(payload) + 4).to_bytes(2, "little")
|
||
assert out[3] == 0
|
||
assert out[4:] == payload
|