Init Commit: Moved bproto to seperate repo
This commit is contained in:
63
test/output/test_crc.py
Normal file
63
test/output/test_crc.py
Normal file
@@ -0,0 +1,63 @@
|
||||
|
||||
def crc16(data: bytearray, offset: int, length: int):
|
||||
if data is None or offset < 0 or offset > len(data) - 1 and offset + length > len(data):
|
||||
return 0
|
||||
crc = 0xFFFF
|
||||
for i in range(0, length):
|
||||
crc ^= data[offset + i] << 8
|
||||
for j in range(0, 8):
|
||||
if (crc & 0x8000) > 0:
|
||||
crc = (crc << 1) ^ 0x1021
|
||||
else:
|
||||
crc = crc << 1
|
||||
return crc & 0xFFFF
|
||||
|
||||
|
||||
def test_crc_sum():
|
||||
# ignore: F401
|
||||
from backend_output.python.bproto_base import crc16_calc_inital, calc_crc_sum
|
||||
|
||||
protocol_hash = bytes.fromhex("4a07789a41ef64c38a7edb78574497d4")
|
||||
protocol_data = bytes.fromhex("c9850ff561ea6d27f3171e1c680a4607ea8fa5278ee96de5c8e0ade101bdeb4332d07cb2269a47c910ca2cfe95de9ceda0bb9ee05b0909dcaf68f6a605df7dd4")
|
||||
|
||||
inital = crc16_calc_inital(protocol_hash)
|
||||
checksum = calc_crc_sum(protocol_data, inital)
|
||||
ref_data = protocol_hash + protocol_data
|
||||
assert crc16(ref_data, 0, len(ref_data)) == checksum
|
||||
|
||||
protocol_hash = bytes.fromhex("4a07789a41ef64c38a7edb78574497d4")
|
||||
protocol_data = bytes.fromhex("8898ebbd28e82663b71a7bbf8bc5ec72872ca057a77e31c1c11deff5004e8985767acb75da9b2d1dea643b08ed0458477e4a")
|
||||
|
||||
inital = crc16_calc_inital(protocol_hash)
|
||||
checksum = calc_crc_sum(protocol_data, inital)
|
||||
ref_data = protocol_hash + protocol_data
|
||||
assert crc16(ref_data, 0, len(ref_data)) == checksum
|
||||
|
||||
protocol_hash = bytes.fromhex("4a07789a41ef64c38a7edb78574497d4")
|
||||
protocol_data = bytes.fromhex("ca321a923e202614482cb392d858175ffe9f117d38")
|
||||
|
||||
inital = crc16_calc_inital(protocol_hash)
|
||||
checksum = calc_crc_sum(protocol_data, inital)
|
||||
ref_data = protocol_hash + protocol_data
|
||||
assert crc16(ref_data, 0, len(ref_data)) == checksum
|
||||
|
||||
|
||||
def test_crc_sum_change():
|
||||
# ignore: F401
|
||||
from backend_output.python.bproto_base import crc16_calc_inital, calc_crc_sum
|
||||
|
||||
protocol_hash = bytes.fromhex("4a07789a41ef64c38a7edb78574497d4")
|
||||
protocol_data = bytes.fromhex("ca321a923e202614482cb392d858175ffe9f117d38")
|
||||
|
||||
inital = crc16_calc_inital(protocol_hash)
|
||||
checksum = calc_crc_sum(protocol_data + b"\xaa", inital)
|
||||
ref_data = protocol_hash + protocol_data
|
||||
assert crc16(ref_data, 0, len(ref_data)) != checksum
|
||||
|
||||
protocol_hash = bytes.fromhex("4a07789a41ef64c38a7edb78574497d4")
|
||||
protocol_data = bytes.fromhex("ca321a923e202614482cb392d858175ffe9f117d38")
|
||||
|
||||
inital = crc16_calc_inital(protocol_hash[-1:] + b"\xaa")
|
||||
checksum = calc_crc_sum(protocol_data, inital)
|
||||
ref_data = protocol_hash + protocol_data
|
||||
assert crc16(ref_data, 0, len(ref_data)) != checksum
|
||||
Reference in New Issue
Block a user