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 }