Init Commit: Moved bproto to seperate repo
This commit is contained in:
80
test/compiler/test_bitfields.py
Normal file
80
test/compiler/test_bitfields.py
Normal file
@@ -0,0 +1,80 @@
|
||||
import sys
|
||||
sys.path.append('src/')
|
||||
|
||||
from nameHandling.base import ComponentName
|
||||
from protocol_components.bitfields import FactoryBitfield, Bitfield
|
||||
from errors import BprotoDuplicateNameError, BprotoDuplicateBitfieldPositionError, BprotoCompilerError
|
||||
from nameHandling.base import NameStyleBproto
|
||||
|
||||
|
||||
def test_bitfield_factory():
|
||||
fatory = FactoryBitfield()
|
||||
fatory.add_bit("BIT #1", 0)
|
||||
fatory.add_bit("BIT #4", None)
|
||||
fatory.add_bit("BIT #2", 1)
|
||||
fatory.add_bit("BIT #5", 4)
|
||||
fatory.add_bit("BIT #6", None)
|
||||
fatory.add_bit("BIT #3", 2)
|
||||
fatory.add_bit("BIT #7", 6)
|
||||
|
||||
bitfield: Bitfield = fatory.assemble("TestBitfield")
|
||||
|
||||
assert bitfield.name == "TestBitfield"
|
||||
assert isinstance(bitfield.name, ComponentName)
|
||||
assert isinstance(bitfield.get_name(), ComponentName)
|
||||
assert isinstance(bitfield.get_identifier(), ComponentName)
|
||||
|
||||
assert bitfield.bits == {
|
||||
NameStyleBproto.fromStr("BIT #1"): 0,
|
||||
NameStyleBproto.fromStr("BIT #2"): 1,
|
||||
NameStyleBproto.fromStr("BIT #3"): 2,
|
||||
NameStyleBproto.fromStr("BIT #4"): 3,
|
||||
NameStyleBproto.fromStr("BIT #5"): 4,
|
||||
NameStyleBproto.fromStr("BIT #6"): 5,
|
||||
NameStyleBproto.fromStr("BIT #7"): 6,
|
||||
}
|
||||
assert isinstance(list(bitfield.bits.keys())[0], ComponentName)
|
||||
|
||||
|
||||
def test_bitfield_factory_failure_cases_duplicate_name():
|
||||
factory = FactoryBitfield()
|
||||
|
||||
factory.add_bit("BIT #1", 0)
|
||||
factory.add_bit("BIT #1", 1)
|
||||
factory.add_bit("BIT #2", 2)
|
||||
|
||||
try:
|
||||
factory.assemble("TestBitfield")
|
||||
assert False
|
||||
except BprotoCompilerError as e:
|
||||
assert isinstance(e, BprotoDuplicateNameError)
|
||||
|
||||
|
||||
def test_bitfield_factory_failure_cases_duplicate_position():
|
||||
factory = FactoryBitfield()
|
||||
|
||||
factory.add_bit("BIT #1", 0)
|
||||
factory.add_bit("BIT #2", 1)
|
||||
factory.add_bit("BIT #3", 1)
|
||||
|
||||
try:
|
||||
factory.assemble("TestBitfield")
|
||||
assert False
|
||||
except BprotoCompilerError as e:
|
||||
assert isinstance(e, BprotoDuplicateBitfieldPositionError)
|
||||
|
||||
|
||||
def test_bitfield_size_calculation():
|
||||
bitfield = Bitfield("TestBitfield")
|
||||
|
||||
bitfield.length = 7
|
||||
assert bitfield.get_size_bytes() == 1
|
||||
|
||||
bitfield.length = 0
|
||||
assert bitfield.get_size_bytes() == 1
|
||||
|
||||
bitfield.length = 8
|
||||
assert bitfield.get_size_bytes() == 1
|
||||
|
||||
bitfield.length = 9
|
||||
assert bitfield.get_size_bytes() == 2
|
||||
Reference in New Issue
Block a user