顺便抽了一些测试,还没有发现实现的问题,但是程序对于异常输入的处理还是欠缺的.
再接再厉.
public void testHZToNum() {
String hz = "十九亿";
long l = new HZToNum(hz).turnAll();
assertEquals(1900000000L, l);
hz = "七亿";
l = new HZToNum(hz).turnAll();
assertEquals(700000000L, l);
hz = "七亿五千万";
l = new HZToNum(hz).turnAll();
assertEquals(750000000L, l);
hz = "七亿五千三百万";
l = new HZToNum(hz).turnAll();
assertEquals(753000000L, l);
hz = "七亿五千三百二十万";
l = new HZToNum(hz).turnAll();
assertEquals(753200000L, l);
hz = "七亿五千三百二十二万";
l = new HZToNum(hz).turnAll();
assertEquals(753220000L, l);
hz = "七亿五千三百二十二万六千";
l = new HZToNum(hz).turnAll();
assertEquals(753226000L, l);
hz = "七亿五千三百二十二万六千八百";
l = new HZToNum(hz).turnAll();
assertEquals(753226800L, l);
hz = "七亿五千三百二十二万六千八百九十";
l = new HZToNum(hz).turnAll();
assertEquals(753226890L, l);
hz = "七亿五千三百二十二万六千八百九十九";
l = new HZToNum(hz).turnAll();
assertEquals(753226899L, l);
hz = "五千万";
l = new HZToNum(hz).turnAll();
assertEquals(50000000L, l);
hz = "五百万";
l = new HZToNum(hz).turnAll();
assertEquals(5000000L, l);
hz = "五十万";
l = new HZToNum(hz).turnAll();
assertEquals(500000L, l);
hz = "七亿一千零一";
l = new HZToNum(hz).turnAll();
assertEquals(700001001L, l);
}
楼上的,先不说实现得好不好,但是至少实现得不对,一个测试就出错了.
public class TestHZToNum extends TestCase {
public TestHZToNum(String name) {super(name);}
public void testHZToNum() {
String hz = "十九亿";
long l = new HZToNum(hz).turnAll();
assertEquals(1900000000L, l);
}
}
运行测试的结果:
=======================================================
.F
Time: 0.017
There was 1 failure:
1) testHZToNum(TestHZToNum)junit.framework.AssertionFailedError: expected:<1900000000> but was:<900000000>
at TestHZToNum.testHZToNum(TestHZToNum.java:20)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at com.intellij.rt.execution.junit.TextTestRunner.main(TextTestRunner.java:12)