parent
656db317d2
commit
a6e33abc5f
|
@ -516,7 +516,8 @@ class Value(metaclass=ABCMeta):
|
|||
"""
|
||||
if not isinstance(amount, int):
|
||||
raise TypeError("Rotate amount must be an integer, not {!r}".format(amount))
|
||||
amount %= len(self)
|
||||
if len(self) != 0:
|
||||
amount %= len(self)
|
||||
return Cat(self[-amount:], self[:-amount]) # meow :3
|
||||
|
||||
def rotate_right(self, amount):
|
||||
|
@ -534,7 +535,8 @@ class Value(metaclass=ABCMeta):
|
|||
"""
|
||||
if not isinstance(amount, int):
|
||||
raise TypeError("Rotate amount must be an integer, not {!r}".format(amount))
|
||||
amount %= len(self)
|
||||
if len(self) != 0:
|
||||
amount %= len(self)
|
||||
return Cat(self[amount:], self[:amount])
|
||||
|
||||
def eq(self, value):
|
||||
|
|
|
@ -321,6 +321,10 @@ class ValueTestCase(FHDLTestCase):
|
|||
"(cat (slice (const 9'd256) 1:9) (slice (const 9'd256) 0:1))")
|
||||
self.assertRepr(Const(256).rotate_left(-7),
|
||||
"(cat (slice (const 9'd256) 7:9) (slice (const 9'd256) 0:7))")
|
||||
self.assertRepr(Const(0, 0).rotate_left(3),
|
||||
"(cat (slice (const 0'd0) 0:0) (slice (const 0'd0) 0:0))")
|
||||
self.assertRepr(Const(0, 0).rotate_left(-3),
|
||||
"(cat (slice (const 0'd0) 0:0) (slice (const 0'd0) 0:0))")
|
||||
|
||||
def test_rotate_left_wrong(self):
|
||||
with self.assertRaisesRegex(TypeError,
|
||||
|
@ -336,6 +340,10 @@ class ValueTestCase(FHDLTestCase):
|
|||
"(cat (slice (const 9'd256) 8:9) (slice (const 9'd256) 0:8))")
|
||||
self.assertRepr(Const(256).rotate_right(-7),
|
||||
"(cat (slice (const 9'd256) 2:9) (slice (const 9'd256) 0:2))")
|
||||
self.assertRepr(Const(0, 0).rotate_right(3),
|
||||
"(cat (slice (const 0'd0) 0:0) (slice (const 0'd0) 0:0))")
|
||||
self.assertRepr(Const(0, 0).rotate_right(-3),
|
||||
"(cat (slice (const 0'd0) 0:0) (slice (const 0'd0) 0:0))")
|
||||
|
||||
def test_rotate_right_wrong(self):
|
||||
with self.assertRaisesRegex(TypeError,
|
||||
|
|
Loading…
Reference in a new issue