对于没有经过单元测试的类,我实在是放心不下,于是我给Junko写了单元测试,代码如下:
/**
* <p>Title: JunkoTest.java</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2007</p>
* @author Tunie
* @date 2014年9月16日
* @version 1.0
*/
public class JunkoTest extends TestCase {
public void testJudgeResult() {
List<Card> list = new ArrayList<Card>();
list.add(new Card(CardType.CARD_A));
list.add(new Card(CardType.CARD_K));
list.add(new Card(CardType.CARD_Q));
list.add(new Card(CardType.CARD_J));
list.add(new Card(CardType.CARD_10));
list.add(new Card(CardType.CARD_9));
CardGroup cardGroup = new CardGroup();
cardGroup.addAll(list);
HandCard junko = new Junko();
boolean result = junko.judge(cardGroup);
assertEquals(true, result);
}
}
结果被我测出问题来了,问题有两个,一个就是对牌数量的判断,一个是那个循环位置的处理,列出最新的Junko代码:
/**
* <p>Title: Junko.java</p>
* <p>Description: 顺子</p>
* <p>Copyright: Copyright (c) 2007</p>
* @author Tunie
* @date 2014年9月16日
* @version 1.0
*/
public class Junko extends HandCard {
public Junko() {
setType(HandCardType.JUNKO);
}
@Override
protected boolean determineConditions(CardGroup cardGroup) {
return cardGroup.size() >= 5;
}
@Override
protected boolean judgeResult(CardGroup cardGroup) {
cardGroup.doSort(CardGroupSortType.DECREASE);
boolean result = true;
int score = cardGroup.getCard(0).getType();
for(int i = 1; i <cardGroup.size() ; i ++ ) {
score --;
if(score != cardGroup.getCard(i).getType()){
result = false;
break;
}
}
return result;
}
}