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' ])
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' ])
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'])
def test_visit_number(self): node = NumberNode(20) traverse_post(node, self.visitor) self.assertEqual(self.visitor.counts, ['number_20'])
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'])
def test_visit_name(self): node = NameNode('id') traverse_post(node, self.visitor) self.assertEqual(self.visitor.counts, ['name'])