對於沒有通過單元測試的類,我實在是放心不下,因而我給Junko寫了單元測試,代碼以下:java
/** * <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代碼:ide
/** * <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; } }