1+ package com .wonu606 .calculator ;
2+
3+ import static org .assertj .core .api .Assertions .assertThat ;
4+
5+ import com .wonu606 .calculator .calculator .Calculator ;
6+ import com .wonu606 .calculator .calculator .PostfixCalculator ;
7+ import java .util .Arrays ;
8+ import java .util .List ;
9+ import org .junit .jupiter .api .DisplayName ;
10+ import org .junit .jupiter .api .Test ;
11+
12+ class PostCalculatorTest {
13+
14+ @ Test
15+ @ DisplayName ("연산자가 1개일 경우" )
16+ void testSingle () {
17+ // given
18+ Calculator calculator = new PostfixCalculator ();
19+ List <String > actualList = Arrays .asList ("-3" , "5.0" , "+" );
20+ double expected = -3 + 5.0 ;
21+
22+ // when
23+ double result = calculator .calculate (actualList );
24+
25+ // then
26+ assertThat (result ).isEqualTo (expected );
27+ }
28+
29+ @ Test
30+ @ DisplayName ("같은 우선 순위일 경우" )
31+ void testPrecedenceEquals () {
32+ // given
33+ Calculator calculator = new PostfixCalculator ();
34+ List <String > actualList = Arrays .asList ("3" , "5" , "+" , "2" , "-" );
35+ double expected = 3 + 5 - 2 ;
36+
37+ // when
38+ double result = calculator .calculate (actualList );
39+
40+ // then
41+ assertThat (result ).isEqualTo (expected );
42+ }
43+
44+ @ Test
45+ @ DisplayName ("높은 우선 순위가 뒤에 올 경우" )
46+ void testHigherPrecedenceFollows () {
47+ // given
48+ Calculator calculator = new PostfixCalculator ();
49+ List <String > actualList = Arrays .asList ("3" , "5" , "2" , "*" , "+" );
50+ double expected = 3 + 5 * 2 ;
51+
52+ // when
53+ double result = calculator .calculate (actualList );
54+
55+ // then
56+ assertThat (result ).isEqualTo (expected );
57+ }
58+
59+ @ Test
60+ @ DisplayName ("높은 우선 순위가 앞에 올 경우" )
61+ void testHigherPrecedenceComesFirst () {
62+ // given
63+ Calculator calculator = new PostfixCalculator ();
64+ List <String > actualList = Arrays .asList ("3" , "5" , "*" , "2" , "+" );
65+ double expected = 3 * 5 + 2 ;
66+
67+ // when
68+ double result = calculator .calculate (actualList );
69+
70+ // then
71+ assertThat (result ).isEqualTo (expected );
72+ }
73+
74+ @ Test
75+ @ DisplayName ("소수가 나올 경우" )
76+ void testIfFraction () {
77+ // given
78+ Calculator calculator = new PostfixCalculator ();
79+ List <String > actualList = Arrays .asList ("3" , "5" , "/" , "2" , "+" );
80+ double expected = 3.0 / 5 + 2 ;
81+
82+ // when
83+ double result = calculator .calculate (actualList );
84+
85+ // then
86+ assertThat (result ).isEqualTo (expected );
87+ }
88+ }
0 commit comments