hdl._ast: fix _value_repr computation.

Fixes fallout from #1165.
This commit is contained in:
Wanda 2024-03-25 14:41:20 +01:00 committed by Catherine
parent 11f7b887ad
commit efcd9a4538
5 changed files with 33 additions and 11 deletions

View file

@ -1321,6 +1321,7 @@ class SignalTestCase(FHDLTestCase):
s = Signal(decoder=Color)
self.assertEqual(s.decoder(1), "RED/1")
self.assertEqual(s.decoder(3), "3")
self.assertRepr(s._value_repr, "(Repr(FormatEnum(Color), (sig s), ()),)")
def test_enum(self):
s1 = Signal(UnsignedEnum)
@ -1328,6 +1329,7 @@ class SignalTestCase(FHDLTestCase):
s2 = Signal(SignedEnum)
self.assertEqual(s2.shape(), signed(2))
self.assertEqual(s2.decoder(SignedEnum.FOO), "FOO/-1")
self.assertRepr(s2._value_repr, "(Repr(FormatEnum(SignedEnum), (sig s2), ()),)")
def test_const_wrong(self):
s1 = Signal()
@ -1335,6 +1337,10 @@ class SignalTestCase(FHDLTestCase):
r"^Value \(sig s1\) cannot be converted to an Amaranth constant$"):
Const.cast(s1)
def test_value_repr(self):
s = Signal()
self.assertRepr(s._value_repr, "(Repr(FormatInt(), (sig s), ()),)")
class ClockSignalTestCase(FHDLTestCase):
def test_domain(self):

View file

@ -458,6 +458,11 @@ class ViewTestCase(FHDLTestCase):
self.assertIsInstance(cv, Signal)
self.assertEqual(cv.shape(), unsigned(3))
self.assertEqual(cv.name, "v")
self.assertRepr(cv._value_repr, """
(Repr(FormatInt(), (sig v), ()),
Repr(FormatInt(), (slice (sig v) 0:1), ('a',)),
Repr(FormatInt(), (slice (sig v) 1:3), ('b',)))
""")
def test_construct_signal_init(self):
v1 = Signal(data.StructLayout({"a": unsigned(1), "b": unsigned(2)}),

View file

@ -137,6 +137,7 @@ class EnumTestCase(FHDLTestCase):
B = -3
a = Signal(EnumA)
self.assertRepr(a, "(sig a)")
self.assertRepr(a._value_repr, "(Repr(FormatEnum(EnumA), (sig a), ()),)")
def test_enum_view(self):
class EnumA(Enum, shape=signed(4)):