-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtest.py
82 lines (66 loc) · 3.66 KB
/
test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
'''
Created on 25-08-2013
@author: mgalka
'''
import unittest
import RPN
def substract(a, b):
return a-b
def add(a, b):
return a + b
def multiply(a, b):
return a * b
def divide(a, b):
return a / b
class TestInfixConversionToRPN(unittest.TestCase):
def setUp(self):
self.operators = [
RPN.RPNOperator("+", priority=1, number_of_operands=2, call=add),
RPN.RPNOperator("-", priority=1, number_of_operands=2, call=substract),
RPN.RPNOperator("*", priority=2, number_of_operands=2, call=multiply),
RPN.RPNOperator("/", priority=2, number_of_operands=2, call=divide)
]
self.long_operators = [
RPN.RPNOperator("++", priority=1, number_of_operands=2, call=add),
RPN.RPNOperator("---", priority=1, number_of_operands=2, call=substract),
RPN.RPNOperator("****", priority=2, number_of_operands=2, call=multiply),
RPN.RPNOperator("///", priority=2, number_of_operands=2, call=divide)
]
def testExpressionWithOneOperator(self):
infix_expression = "2+2"
parser = RPN.RPNParser(self.operators, open_parenthesis='(', close_parenthesis=')')
rpn_expr = parser.generate_rpn_expression(infix_expression)
self.assertEqual(str(rpn_expr), "2 2 +")
def testExpressionWithSymbolsLongerThanOneChar(self):
infix_expression = "25+2-132"
parser = RPN.RPNParser(self.operators, open_parenthesis='(', close_parenthesis=')')
rpn_expr = parser.generate_rpn_expression(infix_expression)
self.assertEqual(str(rpn_expr), "25 2 + 132 -")
def testInfixExpressionToList(self):
infix_expression = '(12*4)+5'
expected_result = ['(','12',self.operators[2],'4',')',self.operators[0],'5']
parser = RPN.RPNParser(self.operators, open_parenthesis='(', close_parenthesis=')')
self.assertEqual(parser._infix_to_list(infix_expression), expected_result)
def testInfixExpressionToListWithLongParenthesisSymbols(self):
infix_expression = '((12*4)))+5'
expected_result = ['((','12',self.operators[2],'4',')))',self.operators[0],'5']
parser = RPN.RPNParser(self.operators, open_parenthesis='((', close_parenthesis=')))')
self.assertEqual(parser._infix_to_list(infix_expression), expected_result)
def testInfixExpressionToListWithLongOperatorSymbols(self):
infix_expression = '(12****4)++5'
expected_result = ['(','12',self.long_operators[2],'4',')',self.long_operators[0],'5']
parser = RPN.RPNParser(self.long_operators, open_parenthesis='(', close_parenthesis=')')
self.assertEqual(parser._infix_to_list(infix_expression), expected_result)
def testInfixExpressionToListWithLiteralsBeginingLikeOperator(self):
infix_expression = '(12****4)+5'
expected_result = ['(','12',self.long_operators[2],'4',')','+5']
parser = RPN.RPNParser(self.long_operators, open_parenthesis='(', close_parenthesis=')')
self.assertEqual(parser._infix_to_list(infix_expression), expected_result)
def testInfixExpressionToListWithLongOperatorSymbolsAndLongParenthesis(self):
infix_expression = '((12****4))++5'
expected_result = ['((','12',self.long_operators[2],'4','))',self.long_operators[0],'5']
parser = RPN.RPNParser(self.long_operators, open_parenthesis='((', close_parenthesis='))')
self.assertEqual(parser._infix_to_list(infix_expression), expected_result)
if __name__ == "__main__":
#import sys;sys.argv = ['', 'Test.testName']
unittest.main()