Skip to content

Commit 6bc8a33

Browse files
committed
pytest
1 parent 5e114eb commit 6bc8a33

10 files changed

Lines changed: 283 additions & 285 deletions

coverage.sh

Lines changed: 0 additions & 1 deletion
This file was deleted.

pytest.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[pytest]
2+
testpaths = tests

requirements-dev.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ sphinx
55
tox
66
black
77
twine<3.4
8+
pytest

setup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ def readme():
2424
'Programming Language :: Python :: 3.7',
2525
'Programming Language :: Python :: 3.8',
2626
'Programming Language :: Python :: 3.9',
27+
'Programming Language :: Python :: 3.10',
2728
],
2829
keywords='struct',
2930
author='Andrea Bonomi',

test.sh

Lines changed: 0 additions & 1 deletion
This file was deleted.

tests/test_alignment.py

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
#
2626
# *****************************************************************************
2727

28-
from unittest import TestCase, main
2928
from cstruct import sizeof, typedef, define, CStruct, NATIVE_ORDER
3029

3130
define("UT_NAMESIZE", 32)
@@ -186,30 +185,32 @@ class Foo10(CStruct):
186185
"""
187186

188187

189-
class TestAlignament(TestCase):
190-
def test_utmp_sizeof(self):
191-
self.assertEqual(sizeof("struct Utmp"), 384)
188+
def test_utmp_sizeof():
189+
assert sizeof("struct Utmp") == 384
192190

193-
# http://www.catb.org/esr/structure-packing/
194191

195-
def test_foo1_sizeof(self):
196-
self.assertEqual(sizeof("struct Foo1"), 24)
192+
# http://www.catb.org/esr/structure-packing/
197193

198-
def test_foo2_sizeof(self):
199-
self.assertEqual(sizeof("struct Foo2"), 24)
200194

201-
def test_foo3_sizeof(self):
202-
self.assertEqual(sizeof("struct Foo3"), 16)
195+
def test_foo1_sizeof():
196+
assert sizeof("struct Foo1") == 24
203197

204-
def test_foo4_sizeof(self):
205-
self.assertEqual(sizeof("struct Foo4"), 4)
206198

207-
def test_foo5_sizeof(self):
208-
self.assertEqual(sizeof("struct Foo5"), 24)
199+
def test_foo2_sizeof():
200+
assert sizeof("struct Foo2") == 24
209201

210-
def test_foo10_sizeof(self):
211-
self.assertEqual(sizeof("struct Foo10"), 24)
212202

203+
def test_foo3_sizeof():
204+
assert sizeof("struct Foo3") == 16
213205

214-
if __name__ == '__main__':
215-
main()
206+
207+
def test_foo4_sizeof():
208+
assert sizeof("struct Foo4") == 4
209+
210+
211+
def test_foo5_sizeof():
212+
assert sizeof("struct Foo5") == 24
213+
214+
215+
def test_foo10_sizeof():
216+
assert sizeof("struct Foo10") == 24

tests/test_cstruct.py

Lines changed: 103 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
#
2626
# *****************************************************************************
2727

28-
from unittest import TestCase, main
2928
import cstruct
3029
from cstruct import sizeof, typedef
3130
import io
@@ -645,102 +644,106 @@ class PartitionNested(cstruct.CStruct):
645644
"""
646645

647646

648-
class TestCStruct(TestCase):
649-
def test_len(self):
650-
mbr = MBR()
651-
self.assertEqual(len(mbr), 512)
652-
self.assertEqual(mbr.size, 512)
653-
654-
def test_sizeof(self):
655-
self.assertEqual(sizeof("struct Partition"), sizeof("struct PartitionFlat"))
656-
self.assertEqual(sizeof("struct Partition"), sizeof("struct PartitionNested"))
657-
658-
def test_unpack(self):
659-
mbr = MBR()
660-
f = io.BytesIO(MBR_DATA)
661-
mbr.unpack(f)
662-
self.assertEqual(mbr.signature[0], 0x55)
663-
self.assertEqual(mbr.signature[1], 0xAA)
664-
self.assertEqual(mbr.partitions[0].start.head, 0)
665-
self.assertEqual(mbr.partitions[0].end.head, 0xFE)
666-
self.assertEqual(mbr.partitions[1].start_sect, 0x2117C7)
667-
668-
def test_pack(self):
669-
mbr = MBR(MBR_DATA)
670-
d = mbr.pack()
671-
self.assertEqual(MBR_DATA, d)
672-
mbr.partitions[3].start.head = 123
673-
d1 = mbr.pack()
674-
mbr1 = MBR(d1)
675-
self.assertEqual(mbr1.partitions[3].start.head, 123)
676-
677-
def test_init(self):
678-
p = Position(head=254, sector=63, cyl=134)
679-
mbr = MBR(MBR_DATA)
680-
self.assertEqual(mbr.partitions[0].end.head, p.head)
681-
self.assertEqual(mbr.partitions[0].end.sector, p.sector)
682-
self.assertEqual(mbr.partitions[0].end.cyl, p.cyl)
683-
684-
def test_none(self):
685-
mbr = MBR()
686-
self.assertEqual(mbr.partitions[0].end.sector, 0)
687-
mbr.unpack(None)
688-
self.assertEqual(mbr.partitions[0].end.head, 0)
689-
690-
def test_clear(self):
691-
mbr = MBR()
692-
mbr.unpack(MBR_DATA)
693-
self.assertEqual(mbr.partitions[0].end.head, 0xFE)
694-
mbr.clear()
695-
self.assertEqual(mbr.partitions[0].end.head, 0x00)
696-
697-
def test_inline(self):
698-
TestStruct = cstruct.parse(
699-
'struct TestStruct { unsigned char head; unsigned char sector; unsigned char cyl; }',
700-
__byte_order__=cstruct.LITTLE_ENDIAN,
701-
)
702-
s = TestStruct(head=254, sector=63, cyl=134)
703-
p = Position(head=254, sector=63, cyl=134)
704-
self.assertEqual(s.pack(), p.pack())
705-
706-
def test_dummy(self):
707-
dummy = Dummy()
708-
dummy.c = b'A'
709-
dummy.vc = b'ABCDEFGHIJ'
710-
dummy.i = 123456
711-
for i in range(0, 10):
712-
dummy.vi[i] = i * 10
713-
dummy.f = 123.456
714-
for i in range(0, 10):
715-
dummy.vf[i] = 10.0 / (i + 1)
716-
dummy.vl = list(range(0, 10))
717-
data = dummy.pack()
718-
dummy1 = Dummy(data)
719-
for i in range(0, 10):
720-
dummy1.vl[i] = dummy.vl[i]
721-
self.assertEqual(dummy.pack(), dummy1.pack())
722-
dummy2 = Dummy(data)
723-
dummy2.vf[2] = 79
724-
self.assertNotEqual(dummy.pack(), dummy2.pack())
725-
dummy3 = Dummy(data)
726-
dummy3.vl = list(range(1, 11))
727-
self.assertNotEqual(dummy.pack(), dummy3.pack())
728-
729-
def test_nested(self):
730-
data = os.urandom(sizeof("struct PartitionFlat"))
731-
flat = PartitionFlat(data)
732-
flat.unpack(data)
733-
nested = PartitionNested(data)
734-
nested.unpack(data)
735-
self.assertEqual(flat.status, nested.status)
736-
self.assertEqual(flat.startAddrHead, nested.start.addrHead)
737-
self.assertEqual(flat.startAddrCylSec, nested.start.addrCylSec)
738-
self.assertEqual(flat.partType, nested.partType)
739-
self.assertEqual(flat.endAddrHead, nested.end.addrHead)
740-
self.assertEqual(flat.endAddrCylSec, nested.end.addrCylSec)
741-
self.assertEqual(flat.startLBA, nested.startLBA)
742-
self.assertEqual(flat.endLBA, nested.endLBA)
743-
744-
745-
if __name__ == '__main__':
746-
main()
647+
def test_len():
648+
mbr = MBR()
649+
assert len(mbr) == 512
650+
assert mbr.size == 512
651+
652+
653+
def test_sizeof():
654+
assert sizeof("struct Partition") == sizeof("struct PartitionFlat")
655+
assert sizeof("struct Partition") == sizeof("struct PartitionNested")
656+
657+
658+
def test_unpack():
659+
mbr = MBR()
660+
f = io.BytesIO(MBR_DATA)
661+
mbr.unpack(f)
662+
assert mbr.signature[0] == 0x55
663+
assert mbr.signature[1] == 0xAA
664+
assert mbr.partitions[0].start.head == 0
665+
assert mbr.partitions[0].end.head == 0xFE
666+
assert mbr.partitions[1].start_sect == 0x2117C7
667+
668+
669+
def test_pack():
670+
mbr = MBR(MBR_DATA)
671+
d = mbr.pack()
672+
assert MBR_DATA == d
673+
mbr.partitions[3].start.head = 123
674+
d1 = mbr.pack()
675+
mbr1 = MBR(d1)
676+
assert mbr1.partitions[3].start.head == 123
677+
678+
679+
def test_init():
680+
p = Position(head=254, sector=63, cyl=134)
681+
mbr = MBR(MBR_DATA)
682+
assert mbr.partitions[0].end.head == p.head
683+
assert mbr.partitions[0].end.sector == p.sector
684+
assert mbr.partitions[0].end.cyl == p.cyl
685+
686+
687+
def test_none():
688+
mbr = MBR()
689+
assert mbr.partitions[0].end.sector == 0
690+
mbr.unpack(None)
691+
assert mbr.partitions[0].end.head == 0
692+
693+
694+
def test_clear():
695+
mbr = MBR()
696+
mbr.unpack(MBR_DATA)
697+
assert mbr.partitions[0].end.head == 0xFE
698+
mbr.clear()
699+
assert mbr.partitions[0].end.head == 0x00
700+
701+
702+
def test_inline():
703+
StructT1 = cstruct.parse(
704+
'struct StructT1 { unsigned char head; unsigned char sector; unsigned char cyl; }',
705+
__byte_order__=cstruct.LITTLE_ENDIAN,
706+
)
707+
s = StructT1(head=254, sector=63, cyl=134)
708+
p = Position(head=254, sector=63, cyl=134)
709+
assert s.pack() == p.pack()
710+
711+
712+
def test_dummy():
713+
dummy = Dummy()
714+
dummy.c = b'A'
715+
dummy.vc = b'ABCDEFGHIJ'
716+
dummy.i = 123456
717+
for i in range(0, 10):
718+
dummy.vi[i] = i * 10
719+
dummy.f = 123.456
720+
for i in range(0, 10):
721+
dummy.vf[i] = 10.0 / (i + 1)
722+
dummy.vl = list(range(0, 10))
723+
data = dummy.pack()
724+
dummy1 = Dummy(data)
725+
for i in range(0, 10):
726+
dummy1.vl[i] = dummy.vl[i]
727+
assert dummy.pack() == dummy1.pack()
728+
dummy2 = Dummy(data)
729+
dummy2.vf[2] = 79
730+
assert dummy.pack() != dummy2.pack()
731+
dummy3 = Dummy(data)
732+
dummy3.vl = list(range(1, 11))
733+
assert dummy.pack() != dummy3.pack()
734+
735+
736+
def test_nested():
737+
data = os.urandom(sizeof("struct PartitionFlat"))
738+
flat = PartitionFlat(data)
739+
flat.unpack(data)
740+
nested = PartitionNested(data)
741+
nested.unpack(data)
742+
assert flat.status == nested.status
743+
assert flat.startAddrHead == nested.start.addrHead
744+
assert flat.startAddrCylSec == nested.start.addrCylSec
745+
assert flat.partType == nested.partType
746+
assert flat.endAddrHead == nested.end.addrHead
747+
assert flat.endAddrCylSec == nested.end.addrCylSec
748+
assert flat.startLBA == nested.startLBA
749+
assert flat.endLBA == nested.endLBA

tests/test_define.py

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
#
2626
# *****************************************************************************
2727

28-
from unittest import TestCase, main
28+
import pytest
2929
import cstruct
3030
from cstruct import define, undef, sizeof, typedef
3131

@@ -41,27 +41,27 @@ class Position(cstruct.CStruct):
4141
"""
4242

4343

44-
class TestCaseDefine(TestCase):
45-
def test_sizeof(self):
46-
self.assertEqual(sizeof('int'), 4)
47-
define('INIT_THREAD_SIZE', 2048 * sizeof('long'))
48-
self.assertEqual(cstruct.DEFINES['INIT_THREAD_SIZE'], 16384)
49-
self.assertEqual(sizeof('struct Position'), 3)
50-
self.assertEqual(sizeof('struct Position'), len(Position))
51-
self.assertEqual(sizeof(Position), 3)
52-
self.assertRaises(KeyError, lambda: sizeof('bla'))
53-
self.assertRaises(KeyError, lambda: sizeof('struct Bla'))
44+
def test_sizeof():
45+
assert sizeof('int') == 4
46+
define('INIT_THREAD_SIZE', 2048 * sizeof('long'))
47+
assert cstruct.DEFINES['INIT_THREAD_SIZE'] == 16384
48+
assert sizeof('struct Position') == 3
49+
assert sizeof('struct Position') == len(Position)
50+
assert sizeof(Position) == 3
51+
with pytest.raises(KeyError):
52+
sizeof('bla')
53+
with pytest.raises(KeyError):
54+
sizeof('struct Bla')
5455

55-
def test_define(self):
56-
define('A', 10)
57-
self.assertEqual(cstruct.DEFINES['A'], 10)
58-
undef('A')
59-
self.assertRaises(KeyError, lambda: cstruct.DEFINES['A'])
6056

61-
def test_typedef(self):
62-
typedef('int', 'integer')
63-
self.assertEqual(sizeof('integer'), 4)
57+
def test_define():
58+
define('A', 10)
59+
assert cstruct.DEFINES['A'] == 10
60+
undef('A')
61+
with pytest.raises(KeyError):
62+
cstruct.DEFINES['A']
6463

6564

66-
if __name__ == '__main__':
67-
main()
65+
def test_typedef():
66+
typedef('int', 'integer')
67+
assert sizeof('integer') == 4

0 commit comments

Comments
 (0)