|
@@ -48,21 +48,20 @@ class TestDataflow(unittest.TestCase):
|
|
|
def test_dag_unary(self):
|
|
def test_dag_unary(self):
|
|
|
dag = Dag(B([S('command', 'neg.d', '$rd', '$rs')]))
|
|
dag = Dag(B([S('command', 'neg.d', '$rd', '$rs')]))
|
|
|
expect = Dag([])
|
|
expect = Dag([])
|
|
|
- expect.nodes = [DagLeaf('$rs'), DagNode('neg.d', '$rd', DagLeaf('$rs'))]
|
|
|
|
|
-
|
|
|
|
|
|
|
+ expect.nodes = [DagLeaf('$rs'), DagNode('neg.d', '$rd', \
|
|
|
|
|
+ DagLeaf('$rs'))]
|
|
|
|
|
+
|
|
|
self.assertEqualDag(dag, expect)
|
|
self.assertEqualDag(dag, expect)
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
def test_dag_binary(self):
|
|
def test_dag_binary(self):
|
|
|
dag = Dag(B([S('command', 'addu', '$rd', '$r1', '$r2')]))
|
|
dag = Dag(B([S('command', 'addu', '$rd', '$r1', '$r2')]))
|
|
|
expect = Dag([])
|
|
expect = Dag([])
|
|
|
- expect.nodes = [DagLeaf('$r1'),
|
|
|
|
|
- DagLeaf('$r2'),
|
|
|
|
|
|
|
+ expect.nodes = [DagLeaf('$r1'),
|
|
|
|
|
+ DagLeaf('$r2'),
|
|
|
DagNode('addu', '$rd', DagLeaf('$r1'), DagLeaf('$r2'))]
|
|
DagNode('addu', '$rd', DagLeaf('$r1'), DagLeaf('$r2'))]
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
self.assertEqualDag(dag, expect)
|
|
self.assertEqualDag(dag, expect)
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
# def test_dag_combinednode(self):
|
|
# def test_dag_combinednode(self):
|
|
|
# dag = Dag(B([S('command', 'mult', '$rd1', '$r1', '$r2'),
|
|
# dag = Dag(B([S('command', 'mult', '$rd1', '$r1', '$r2'),
|
|
|
# S('command', 'mult', '$rd2', '$r1', '$r2')]))
|
|
# S('command', 'mult', '$rd2', '$r1', '$r2')]))
|
|
@@ -74,16 +73,15 @@ class TestDataflow(unittest.TestCase):
|
|
|
# expect.nodes = [DagLeaf('$r1'),
|
|
# expect.nodes = [DagLeaf('$r1'),
|
|
|
# DagLeaf('$r2'),
|
|
# DagLeaf('$r2'),
|
|
|
# multnode]
|
|
# multnode]
|
|
|
-#
|
|
|
|
|
|
|
+#
|
|
|
# self.assertEqualDag(dag, expect)
|
|
# self.assertEqualDag(dag, expect)
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
def assertEqualDag(self, dag1, dag2):
|
|
def assertEqualDag(self, dag1, dag2):
|
|
|
self.assertEqual(len(dag1.nodes), len(dag2.nodes))
|
|
self.assertEqual(len(dag1.nodes), len(dag2.nodes))
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
for node1, node2 in zip(dag1.nodes, dag2.nodes):
|
|
for node1, node2 in zip(dag1.nodes, dag2.nodes):
|
|
|
self.assertEqualNodes(node1, node2)
|
|
self.assertEqualNodes(node1, node2)
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
def assertEqualNodes(self, node1, node2):
|
|
def assertEqualNodes(self, node1, node2):
|
|
|
if isinstance(node1, DagLeaf):
|
|
if isinstance(node1, DagLeaf):
|
|
|
self.assertIsInstance(node2, DagLeaf)
|
|
self.assertIsInstance(node2, DagLeaf)
|
|
@@ -91,9 +89,9 @@ class TestDataflow(unittest.TestCase):
|
|
|
elif isinstance(node2, DagLeaf):
|
|
elif isinstance(node2, DagLeaf):
|
|
|
raise AssertionError
|
|
raise AssertionError
|
|
|
else:
|
|
else:
|
|
|
- self.assertEqual(node1.op , node2.op)
|
|
|
|
|
|
|
+ self.assertEqual(node1.op, node2.op)
|
|
|
self.assertEqual(node1.labels, node2.labels)
|
|
self.assertEqual(node1.labels, node2.labels)
|
|
|
self.assertEqual(len(node1.nodes), len(node2.nodes))
|
|
self.assertEqual(len(node1.nodes), len(node2.nodes))
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
for child1, child2 in zip(node1.nodes, node2.nodes):
|
|
for child1, child2 in zip(node1.nodes, node2.nodes):
|
|
|
self.assertEqualNodes(child1, child2)
|
|
self.assertEqualNodes(child1, child2)
|