1
2 package jp.sourceforge.rpn_computer.test;
3
4 import jp.sourceforge.rpn_computer.RpnCommandList;
5 import jp.sourceforge.rpn_computer.RpnCompiler;
6 import jp.sourceforge.rpn_computer.RpnComputer;
7 import jp.sourceforge.rpn_computer.RpnNode;
8 import jp.sourceforge.rpn_computer.RpnParser;
9 import junit.framework.TestCase;
10
11 /**
12 * {@link RpnComputer}クラスに関するテストを行います。
13 *
14 * @author uguu@users.sourceforge.jp
15 */
16 public class RpnComputerTest extends TestCase {
17
18 /**
19 * インスタンスを初期化します。
20 *
21 * @param name
22 * テストの名前。
23 */
24 public RpnComputerTest(String name) {
25 super(name);
26 }
27
28 /**
29 * 正常系テスト1。
30 */
31 public void testNormal1() {
32 String exp = "1 + 2";
33
34 RpnParser parser = new RpnParser();
35 RpnNode node = parser.parse(exp);
36
37 RpnCompiler compiler = new RpnCompiler();
38 RpnCommandList cl = compiler.compile(node);
39
40 RpnComputer computer = new RpnComputer();
41 double resultValue = computer.compute(cl);
42
43 assertEquals(3, resultValue, 0);
44 }
45
46 /**
47 * 正常系テスト2。
48 */
49 public void testNormal2() {
50 String exp = "(12.34 + 56.78) * 3.14";
51
52 RpnParser parser = new RpnParser();
53 RpnNode node = parser.parse(exp);
54
55 RpnCompiler compiler = new RpnCompiler();
56 RpnCommandList cl = compiler.compile(node);
57
58 RpnComputer computer = new RpnComputer();
59 double resultValue = computer.compute(cl);
60
61 assertEquals(217.0368, resultValue, 0.00000000001);
62 }
63
64 /**
65 * 正常系テスト3。
66 */
67 public void testNormal3() {
68 String exp = "(12.34 + 56.78) * 3.14";
69
70 RpnComputer computer = new RpnComputer();
71 double resultValue = computer.compute(exp);
72
73 assertEquals(217.0368, resultValue, 0.00000000001);
74 }
75
76 /**
77 * 異常系テスト1。 commandListがnullのときに{@link NullPointerException}例外がスローされることを確認します。
78 */
79 public void testFail1() {
80 RpnComputer comp = new RpnComputer();
81 try {
82 comp.compute((RpnCommandList) null);
83 fail();
84 } catch (NullPointerException e) {
85 assertEquals("commandListがnullです。", e.getMessage());
86 }
87 }
88 }