def __eq__(self, other):
return self.fields == other.fields
+ def __repr__(self):
+ field_reprs = []
+ for name, shape, dir in self:
+ if dir == DIR_NONE:
+ field_reprs.append("({!r}, {!r})".format(name, shape))
+ else:
+ field_reprs.append("({!r}, {!r}, Direction.{})".format(name, shape, dir.name))
+ return "Layout([{}])".format(", ".join(field_reprs))
+
# Unlike most Values, Record *can* be subclassed.
class Record(Value):
])
self.assertEqual(layout["a", "c"], expect)
+ def test_repr(self):
+ self.assertEqual(repr(Layout([("a", 1), ("b", signed(2))])),
+ "Layout([('a', unsigned(1)), ('b', signed(2))])")
+ self.assertEqual(repr(Layout([("a", 1), ("b", [("c", signed(3))])])),
+ "Layout([('a', unsigned(1)), "
+ "('b', Layout([('c', signed(3))]))])")
+
def test_wrong_field(self):
with self.assertRaises(TypeError,
msg="Field (1,) has invalid layout: should be either (name, shape) or "