Test für RoundControl fertig

git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@128 72836036-5685-4462-b002-a69064685172
This commit is contained in:
Ida Massow 2011-05-04 23:26:01 +02:00
parent db7489a5c7
commit e2f82f3f28
10 changed files with 296 additions and 36 deletions

View file

@ -1,16 +1,16 @@
package jrummikub.control;
import jrummikub.model.GameState;
import jrummikub.model.IGameState;
import jrummikub.model.IHand;
import jrummikub.model.Player;
import jrummikub.model.Position;
import jrummikub.view.IView;
public class RoundControl {
private GameState gameState;
private IGameState gameState;
private IView view;
public RoundControl(GameState gameState, IView view) {
public RoundControl(IGameState gameState, IView view) {
this.gameState = gameState;
this.view = view;
}

View file

@ -5,7 +5,7 @@ import java.util.ArrayList;
import java.util.List;
/** Class managing the overall and momentary GameState */
public class GameState {
public class GameState implements IGameState {
private ITable table;
private List<Player> players;
private int activePlayer;
@ -22,27 +22,33 @@ public class GameState {
gameHeap = new StoneHeap();
}
@Override
public ITable getTable() {
return table;
}
@Override
public int getPlayerCount() {
return players.size();
}
public Player getPlayer(int i) {
@Override
public IPlayer getPlayer(int i) {
return players.get(i);
}
/** Changes the activePlayer to the next {@link Player} in the list */
@Override
public void nextPlayer() {
activePlayer = (activePlayer + 1) % players.size();
}
public Player getActivePlayer() {
@Override
public IPlayer getActivePlayer() {
return players.get(activePlayer);
}
@Override
public StoneHeap getGameHeap() {
return gameHeap;
}

View file

@ -3,7 +3,7 @@ package jrummikub.model;
import java.awt.Color;
/** Class managing player data. No methods in release 1 */
public class Player {
public class Player implements IPlayer {
private IHand hand;
private Color color;
@ -15,10 +15,12 @@ public class Player {
this.color = color;
}
@Override
public IHand getHand() {
return hand;
}
@Override
public Color getColor() {
return color;
}

View file

@ -1,7 +1,16 @@
package jrummikub.control;
import static org.junit.Assert.*;
import jrummikub.model.GameState;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import jrummikub.model.MockGameState;
import jrummikub.model.MockTable;
import jrummikub.model.Position;
import jrummikub.model.Stone;
import jrummikub.model.StoneSet;
import jrummikub.view.MockView;
import org.junit.Before;
@ -9,13 +18,13 @@ import org.junit.Test;
public class RoundControlTest {
private MockView view;
private GameState testGameState;
private MockGameState testGameState;
private RoundControl testRound;
@Before
public void setup() {
view = new MockView();
testGameState = new GameState();
testGameState = new MockGameState();
testRound = new RoundControl(testGameState, view);
}
@ -27,6 +36,23 @@ public class RoundControlTest {
}
}
private void checkTurnStartSetUp() {
assertNotNull(view.currentPlayerName);
assertNotNull(view.getTablePanel().leftPlayerName);
assertNotNull(view.getTablePanel().topPlayerName);
assertNotNull(view.getTablePanel().rightPlayerName);
assertTrue(view.displayStartTurnPanel);
assertFalse(view.startTurnEvent.listeners.isEmpty());
}
private void resetTurnStart() {
view.currentPlayerName = null;
view.getTablePanel().leftPlayerName = null;
view.getTablePanel().topPlayerName = null;
view.getTablePanel().rightPlayerName = null;
view.displayStartTurnPanel = false;
}
@Test
public void testDeal() {
testRound.deal();
@ -38,11 +64,108 @@ public class RoundControlTest {
testRound.startRound();
checkCorrectlyDealed();
assertNotNull(view.currentPlayerName);
assertNotNull(view.getTablePanel().leftPlayerName);
assertNotNull(view.getTablePanel().topPlayerName);
assertNotNull(view.getTablePanel().rightPlayerName);
assertTrue(view.displayStartTurnPanel);
assertFalse(view.startTurnEvent.listeners.isEmpty());
checkTurnStartSetUp();
}
@Test
public void testTableValidHandChanged() {
testRound.startRound();
MockTable oldTable = testGameState.table;
MockTable newTable = new MockTable();
newTable.valid = true;
oldTable.clonedTable = newTable;
view.startTurnEvent.emit();
assertFalse(view.displayStartTurnPanel);
testGameState.players.get(0).hand.stones.remove(0);
resetTurnStart();
view.getPlayerPanel().endTurnEvent.emit();
assertNotSame(oldTable, testGameState.table);
assertSame(newTable, testGameState.table);
assertEquals(1, testGameState.activePlayer);
checkTurnStartSetUp();
}
@Test
public void testTableInvalidHandChanged() {
testRound.startRound();
MockTable oldTable = testGameState.table;
MockTable newTable = new MockTable();
newTable.valid = false;
oldTable.clonedTable = newTable;
view.startTurnEvent.emit();
assertFalse(view.displayStartTurnPanel);
Stone stone = testGameState.players.get(0).hand.stones.remove(0);
newTable.drop(new StoneSet(stone), new Position(0, 0));
resetTurnStart();
view.getPlayerPanel().endTurnEvent.emit();
assertSame(oldTable, testGameState.table);
assertNotSame(newTable, testGameState.table);
assertEquals(1, testGameState.activePlayer);
assertEquals(14 + 3, testGameState.players.get(0).hand.getSize());
checkTurnStartSetUp();
}
@Test
public void testTableValidHandUnchanged() {
testRound.startRound();
MockTable oldTable = testGameState.table;
MockTable newTable = new MockTable();
newTable.valid = true;
oldTable.clonedTable = newTable;
view.startTurnEvent.emit();
assertFalse(view.displayStartTurnPanel);
resetTurnStart();
view.getPlayerPanel().endTurnEvent.emit();
assertEquals(14 + 1, testGameState.players.get(0).hand.getSize());
assertEquals(1, testGameState.activePlayer);
assertSame(newTable, testGameState.table);
assertNotSame(oldTable, testGameState.table);
checkTurnStartSetUp();
}
@Test
public void testTableInvalidHandUnchanged() {
testRound.startRound();
MockTable oldTable = testGameState.table;
MockTable newTable = new MockTable();
newTable.valid = false;
oldTable.clonedTable = newTable;
view.startTurnEvent.emit();
assertFalse(view.displayStartTurnPanel);
resetTurnStart();
view.getPlayerPanel().endTurnEvent.emit();
assertEquals(14 + 1, testGameState.players.get(0).hand.getSize());
assertEquals(1, testGameState.activePlayer);
assertNotSame(newTable, testGameState.table);
assertSame(oldTable, testGameState.table);
checkTurnStartSetUp();
}
@Test
public void testWinning() {
testRound.startRound();
MockTable oldTable = testGameState.table;
MockTable newTable = new MockTable();
newTable.valid = true;
oldTable.clonedTable = newTable;
view.startTurnEvent.emit();
assertFalse(view.displayStartTurnPanel);
testGameState.players.get(0).hand.stones.clear();
resetTurnStart();
view.getPlayerPanel().endTurnEvent.emit();
assertTrue(view.displayWinPanel);
}
}

View file

@ -8,7 +8,7 @@ import org.junit.Before;
import org.junit.Test;
public class GameStateTest {
private GameState testGame;
private IGameState testGame;
@Before
public void createGame() {

View file

@ -0,0 +1,54 @@
package jrummikub.model;
import java.awt.Color;
import java.util.ArrayList;
import java.util.List;
public class MockGameState implements IGameState {
public MockTable table;
public List<MockPlayer> players;
public int activePlayer;
public StoneHeap gameHeap;
public MockGameState() {
table = new MockTable();
players = new ArrayList<MockPlayer>();
players.add(new MockPlayer(Color.red));
players.add(new MockPlayer(Color.yellow));
players.add(new MockPlayer(Color.green));
players.add(new MockPlayer(Color.black));
activePlayer = 0;
gameHeap = new StoneHeap();
}
@Override
public ITable getTable() {
return table;
}
@Override
public int getPlayerCount() {
return players.size();
}
@Override
public IPlayer getPlayer(int i) {
return players.get(i);
}
/** Changes the activePlayer to the next {@link Player} in the list */
@Override
public void nextPlayer() {
activePlayer = (activePlayer + 1) % players.size();
}
@Override
public IPlayer getActivePlayer() {
return players.get(activePlayer);
}
@Override
public StoneHeap getGameHeap() {
return gameHeap;
}
}

View file

@ -0,0 +1,49 @@
package jrummikub.model;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import jrummikub.util.Pair;
public class MockHand implements IHand {
public List<Stone> stones = new ArrayList<Stone>();
@Override
public Stone pickUp(Position position) {
return null;
}
@Override
public void drop(Stone object, Position position) {
stones.add(object);
}
@Override
public Position getPosition(Stone object) {
// TODO Auto-generated method stub
return null;
}
@Override
public void pickUp(Stone object) {
// TODO Auto-generated method stub
}
@Override
public int getSize() {
return stones.size();
}
@Override
public Iterator<Pair<Stone, Position>> iterator() {
// TODO Auto-generated method stub
return null;
}
public MockHand clone() {
return null;
}
}

View file

@ -0,0 +1,26 @@
package jrummikub.model;
import java.awt.Color;
public class MockPlayer implements IPlayer {
public MockHand hand;
public Color color;
// private String name;
public MockPlayer(Color color) {
hand = new MockHand();
this.color = color;
}
@Override
public IHand getHand() {
return hand;
}
@Override
public Color getColor() {
return color;
}
}

View file

@ -1,15 +1,19 @@
package jrummikub.model;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import jrummikub.util.Pair;
import jrummikub.view.MockStoneCollectionPanel;
public class MockTable implements ITable {
public Map<Stone, StoneSet> findStoneSet = new HashMap<Stone, StoneSet>();
public boolean valid = false;
public MockTable clonedTable;
public List<Pair<StoneSet, Position>> sets = new ArrayList<Pair<StoneSet, Position>>();
@Override
public void pickUpStone(Stone stone) {
// TODO Auto-generated method stub
@ -18,8 +22,7 @@ public class MockTable implements ITable {
@Override
public boolean isValid() {
// TODO Auto-generated method stub
return false;
return valid;
}
@Override
@ -30,8 +33,7 @@ public class MockTable implements ITable {
@Override
public void drop(StoneSet object, Position position) {
// TODO Auto-generated method stub
sets.add(new Pair<StoneSet, Position>(object, position));
}
@Override
@ -43,28 +45,26 @@ public class MockTable implements ITable {
@Override
public void pickUp(StoneSet object) {
// TODO Auto-generated method stub
}
@Override
public Iterator<Pair<StoneSet, Position>> iterator() {
// TODO Auto-generated method stub
return null;
return sets.iterator();
}
@Override
public StoneSet findStoneSet(Stone stone) {
return findStoneSet.get(stone);
}
public MockTable clone() {
return null;
return clonedTable;
}
@Override
public int getSize() {
// TODO Auto-generated method stub
return 0;
return sets.size();
}
}

View file

@ -1,12 +1,12 @@
package jrummikub.view;
import jrummikub.util.Event;
import jrummikub.util.IEvent;
import jrummikub.util.MockEvent;
public class MockPlayerPanel implements IPlayerPanel {
public Event endTurnEvent = new Event();
public MockEvent endTurnEvent = new MockEvent();
public MockHandPanel handPanel = new MockHandPanel();
@Override
public IHandPanel getHandPanel() {
// TODO Auto-generated method stub
@ -16,7 +16,7 @@ public class MockPlayerPanel implements IPlayerPanel {
@Override
public void setTimeLeft(int time) {
// TODO Auto-generated method stub
}
@Override
@ -35,5 +35,5 @@ public class MockPlayerPanel implements IPlayerPanel {
public IEvent getEndTurnEvent() {
return endTurnEvent;
}
}