-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_calculators.py
More file actions
81 lines (72 loc) · 1.69 KB
/
test_calculators.py
File metadata and controls
81 lines (72 loc) · 1.69 KB
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
import pytest
from calculators import (
CalcLexer,
PNCalcParser,
PNCalculator,
RPNCalcParser,
RPNCalculator,
)
@pytest.mark.parametrize(
"expression, result",
[
("2 3 +", 5),
("9 5 -", 4),
("3 4 *", 12),
("15 5 /", 3),
("2 1 + 3 *", 9),
("4 10 5 / +", 6),
("10 132 9 3 + -11 * / * 17 + 5 +", 12),
],
)
def test_rpn(expression, result):
calculator = RPNCalculator()
out = calculator.eval(expression)
assert result == out
@pytest.mark.parametrize(
"expression, result",
[
("+ 2 3", 5),
("- 9 5", 4),
("* 3 4", 12),
("/ 15 5", 3),
("+ 2 1 * 3", 9),
("/ 10 5 + 4", 6),
("* + 1 3 2", 8),
],
)
def test_pn(expression, result):
calculator = PNCalculator()
out = calculator.eval(expression)
assert result == out
@pytest.mark.parametrize(
"expression, result",
[
("+ 2 3", 5),
("- 9 5", 4),
("* 3 4", 12),
("/ 15 5", 3),
],
)
def test_pn_sly(expression, result, capsys):
lexer = CalcLexer()
parser = PNCalcParser()
out = parser.parse(lexer.tokenize(expression))
captured = capsys.readouterr()
assert result == float(captured.out.strip())
@pytest.mark.parametrize(
"expression, result",
[
("2 3 +", 5),
("9 5 -", 4),
("3 4 *", 12),
("15 5 /", 3),
("2 1 + 3 *", 9),
("4 10 5 / +", 6),
],
)
def test_rpn_sly(expression, result, capsys):
lexer = CalcLexer()
parser = RPNCalcParser()
out = parser.parse(lexer.tokenize(expression))
captured = capsys.readouterr()
assert result == float(captured.out.strip())