50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
#!/usr/bin/env python3.9
|
|
|
|
'''
|
|
generate rlp tests
|
|
|
|
really checking to see if my code matches the ethereum python rlp package which
|
|
has 85 stars on github
|
|
|
|
requires rlp package, which requires python 3.7 or greater
|
|
|
|
this checks to see if my Erlang implementation matches python. It works for
|
|
59,638 randomly generated test cases
|
|
'''
|
|
|
|
# need more cases
|
|
# single bytes
|
|
# empty list
|
|
# list with variable number of elements
|
|
# element has equal chance of becoming a list or a binary
|
|
|
|
import rlp
|
|
import random as r
|
|
|
|
from rlpcases import cases
|
|
|
|
def main():
|
|
all_encode_work = True
|
|
all_decode_work = True
|
|
for case in cases:
|
|
decoded_data = case['decoded']
|
|
encoded_bytes = case['encoded']
|
|
real_encoded_bytes = rlp.encode(decoded_data)
|
|
real_decoded_data = rlp.decode(encoded_bytes)
|
|
# check if encode/decode works
|
|
encode_works = (real_encoded_bytes == encoded_bytes)
|
|
decode_works = (real_decoded_data == decoded_data)
|
|
print('encode works: %s' % (encode_works))
|
|
print('decode works: %s' % (decode_works))
|
|
# update globals
|
|
all_encode_work = all_encode_work and encode_works
|
|
all_decode_work = all_decode_work and decode_works
|
|
# print globals
|
|
print('all encode work: %s' % (all_encode_work))
|
|
print('all decode work: %s' % (all_decode_work))
|
|
#print(format_cases_erl(c))
|
|
|
|
if __name__ == '__main__':
|
|
main()
|
|
|