esp32_bluetooth_classic_sni.../libs/scapy/contrib/sdnv.uts

79 lines
1.7 KiB
Text
Raw Normal View History

% SDNV library tests
############
############
+ Test SDNV encoding/decoding
= Load SDNVUtil
# Explicit to load SDNVUtil
load_contrib("sdnv")
= Define utils
def doTestVector(vec):
# Test numbers individually
for n in vec:
ba = SDNVUtil.encode(n)
(num, sdnvLen) = SDNVUtil.decode(ba, 0)
if num != n:
print("Error encoding/decoding", n)
return False
# Encode them all in a bunch
ba = bytearray()
for n in vec:
temp = SDNVUtil.encode(n)
ba = ba + temp
offset = 0
outNums = []
for n in vec:
(num, sdnvLen) = SDNVUtil.decode(ba, offset)
outNums.append(num)
offset += sdnvLen
if outNums != vec:
print("Failed on multi-number encode/decode")
return False
return True
= Vector tests: small ints
ba = bytearray()
theNums = [0, 1, 2, 5, 126, 127, 128, 129,
130, 150, 190, 220, 254, 255, 256]
assert doTestVector(theNums)
= Vector tests: big ints
theNums = [0, 1, 0, 1, 0, 128, 32765,
SDNVUtil.maxValue - 10, 4, 32766, 32767, 32768, 32769]
assert doTestVector(theNums)
= 100 random vector tests
import random
def doRandomTestVector(howMany):
vec = []
for i in range(0, howMany):
vec.append(random.randint(0, SDNVUtil.maxValue))
result = doTestVector(vec)
return result
assert doRandomTestVector(100)
= SDVN tests
# Tests using the SDNV class
s = SDNV(30)
b = s.encode(17)
theNums = [0, 4, 20, 29, 30, 31, 33]
not_enc = []
for n in theNums:
try:
b = s.encode(n)
except SDNVValueError as e:
print("Could not encode", n, "-- maximum value is:", e.maxValue)
not_enc.append(n)
not_enc.sort()
assert not_enc == [31, 33]