Commit c43b02ec authored by Jayke Meijer's avatar Jayke Meijer

Added unittest for movA-A replacement, fixed replace.

parent 59b9d767
......@@ -13,6 +13,7 @@ def optimize_global(statements):
# mov $regA, $regA -> --- remove it
if s.is_command('move') and s[0] == s[1]:
print "Let me fix that", s
statements.replace(1, [])
continue
......
......@@ -21,6 +21,9 @@ class Statement:
arguments."""
return self.stype == other.stype and self.name == other.name \
and self.args == other.args
def __len__(self):
return len(self.args)
def __str__(self): # pragma: nocover
return '<Statement type=%s name=%s args=%s>' \
......@@ -115,8 +118,10 @@ class Block:
"""Replace the given range start-(start + count) with the given
statement list, and move the pointer to the first statement after the
replacement."""
if self.pointer == 0:
raise Exception('No statement have been read yet.')
if start == None:
start = self.pointer
start = self.pointer - 1
before = self.statements[:start]
after = self.statements[start + count:]
......
......@@ -9,5 +9,11 @@ class TestOptimize(unittest.TestCase):
def setUp(self):
pass
def test_(self):
pass
def test_optimize_global_movaa(self):
foo = S('command', 'foo')
bar = S('command', 'baz')
block = B([foo, \
S('command', 'move', '$regA', '$regA'),
bar])
optimize_global(block)
self.assertEquals(block.statements, [foo, bar])
......@@ -67,6 +67,7 @@ class TestStatement(unittest.TestCase):
self.assertEqual(self.block.peek(), S('comment', 'bar'))
def test_replace(self):
self.block.read()
self.block.replace(1, [S('command', 'foobar')])
self.assertEqual(self.block.pointer, 1)
self.assertEqual(self.block.statements, [S('command', 'foobar'), \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment