lib.memory: Add missing __eq__ to signature types.

This commit is contained in:
Wanda 2024-02-28 09:56:34 +01:00 committed by Catherine
parent c6bc9b47ef
commit 8af9fe2606
2 changed files with 28 additions and 0 deletions

View file

@ -110,6 +110,12 @@ class WritePort:
def granularity(self):
return self._granularity
def __eq__(self, other):
return (type(self) is type(other) and
self.addr_width == other.addr_width and
self.shape == other.shape and
self.granularity == other.granularity)
def __repr__(self):
granularity = f", granularity={self.granularity}" if self.granularity is not None else ""
return f"WritePort.Signature(addr_width={self.addr_width}, shape={self.shape}{granularity})"
@ -213,6 +219,11 @@ class ReadPort:
def shape(self):
return self._shape
def __eq__(self, other):
return (type(self) is type(other) and
self.addr_width == other.addr_width and
self.shape == other.shape)
def __repr__(self):
return f"ReadPort.Signature(addr_width={self.addr_width}, shape={self.shape})"

View file

@ -83,6 +83,16 @@ class WritePortTestCase(FHDLTestCase):
"^Granularity must divide data array length$"):
WritePort.Signature(addr_width=2, shape=ArrayLayout(8, 8), granularity=3)
def test_signature_eq(self):
sig = WritePort.Signature(addr_width=2, shape=8)
self.assertEqual(sig, WritePort.Signature(addr_width=2, shape=8))
self.assertNotEqual(sig, WritePort.Signature(addr_width=2, shape=7))
self.assertNotEqual(sig, WritePort.Signature(addr_width=1, shape=8))
self.assertNotEqual(sig, WritePort.Signature(addr_width=2, shape=8, granularity=8))
sig = WritePort.Signature(addr_width=2, shape=8, granularity=4)
self.assertEqual(sig, WritePort.Signature(addr_width=2, shape=8, granularity=4))
self.assertNotEqual(sig, WritePort.Signature(addr_width=2, shape=8, granularity=8))
def test_constructor(self):
signature = WritePort.Signature(shape=MyStruct, addr_width=4)
port = WritePort(signature, memory=None, domain="sync")
@ -171,6 +181,13 @@ class ReadPortTestCase(FHDLTestCase):
"^`addr_width` must be a non-negative int, not -2$"):
ReadPort.Signature(addr_width=-2, shape=8)
def test_signature_eq(self):
sig = ReadPort.Signature(addr_width=2, shape=8)
self.assertEqual(sig, ReadPort.Signature(addr_width=2, shape=8))
self.assertNotEqual(sig, ReadPort.Signature(addr_width=2, shape=7))
self.assertNotEqual(sig, ReadPort.Signature(addr_width=1, shape=8))
self.assertNotEqual(sig, WritePort.Signature(addr_width=2, shape=8))
def test_constructor(self):
signature = ReadPort.Signature(shape=MyStruct, addr_width=4)
port = ReadPort(signature, memory=None, domain="sync")