1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
import pytest
xfail = pytest.mark.xfail
skip = pytest.mark.skip
skipif = pytest.mark.skipif
import os, math, random, collections, itertools, io, hashlib, binascii, tempfile
from construct import *
from construct.lib import *
ident = lambda x: x
devzero = open("/dev/zero", "rb")
def raises(func, *args, **kw):
try:
return func(*args, **kw)
except Exception as e:
return e.__class__
def common(format, datasample, objsample, sizesample=SizeofError, **kw):
obj = format.parse(datasample, **kw)
assert obj == objsample
data = format.build(objsample, **kw)
assert data == datasample
# following are implied by above (re-parse and re-build)
# assert format.parse(format.build(obj)) == obj
# assert format.build(format.parse(data)) == data
if isinstance(sizesample, int):
size = format.sizeof(**kw)
assert size == sizesample
else:
size = raises(format.sizeof, **kw)
assert size == sizesample
def commonhex(format, hexdata):
commonbytes(format, binascii.unhexlify(hexdata))
def commondumpdeprecated(format, filename):
filename = "tests/deprecated_gallery/blobs/" + filename
with open(filename,'rb') as f:
data = f.read()
commonbytes(format, data)
def commondump(format, filename):
filename = "tests/gallery/blobs/" + filename
with open(filename,'rb') as f:
data = f.read()
commonbytes(format, data)
def commonbytes(format, data):
obj = format.parse(data)
data2 = format.build(obj)
|