예제 #1
0
 def test_visit_power(self):
     node = PowerNode(funcall(20), sum_node_for_num(4))
     traverse_post(node, self.visitor)
     print(self.visitor.counts)
     self.assertEqual(self.visitor.counts, [
         'number_20', 'func_', 'number_4', 'func_', 'power', 'mult', 'sum',
         'power'
     ])
예제 #2
0
 def test_visit_sum(self):
     node = SumNode(mult_node_for_num(30),
                    SumSub(SignNode('+'), mult_node_for_num(10)))
     traverse_post(node, self.visitor)
     print(self.visitor.counts)
     self.assertEqual(self.visitor.counts, [
         'number_30', 'func_', 'power', 'mult', 'sign', 'number_10',
         'func_', 'power', 'mult', 'sum-sub', 'sum'
     ])
예제 #3
0
 def test_visit_funcall(self):
     node = FuncallNode(NameNode('sin'), sum_node_for_num(40))
     traverse_post(node, self.visitor)
     self.assertEqual(
         self.visitor.counts,
         ['name', 'number_40', 'func_', 'power', 'mult', 'sum', 'func_sin'])
예제 #4
0
 def test_visit_number(self):
     node = NumberNode(20)
     traverse_post(node, self.visitor)
     self.assertEqual(self.visitor.counts, ['number_20'])
예제 #5
0
 def test_visit_mult(self):
     node = MultNode(power_node_for_num(20))
     traverse_post(node, self.visitor)
     self.assertEqual(self.visitor.counts,
                      ['number_20', 'func_', 'power', 'mult'])
예제 #6
0
 def test_visit_name(self):
     node = NameNode('id')
     traverse_post(node, self.visitor)
     self.assertEqual(self.visitor.counts, ['name'])