Implement hand auto-sort
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@205 72836036-5685-4462-b002-a69064685172
This commit is contained in:
parent
8a3439f736
commit
56b75e037a
3 changed files with 183 additions and 73 deletions
|
@ -10,6 +10,7 @@ import jrummikub.model.IHand;
|
||||||
import jrummikub.model.ITable;
|
import jrummikub.model.ITable;
|
||||||
import jrummikub.model.Position;
|
import jrummikub.model.Position;
|
||||||
import jrummikub.model.Stone;
|
import jrummikub.model.Stone;
|
||||||
|
import jrummikub.model.StoneColor;
|
||||||
import jrummikub.model.StoneSet;
|
import jrummikub.model.StoneSet;
|
||||||
import jrummikub.util.Connection;
|
import jrummikub.util.Connection;
|
||||||
import jrummikub.util.Event;
|
import jrummikub.util.Event;
|
||||||
|
@ -21,27 +22,6 @@ import jrummikub.util.Pair;
|
||||||
import jrummikub.view.IView;
|
import jrummikub.view.IView;
|
||||||
|
|
||||||
public class TurnControl {
|
public class TurnControl {
|
||||||
static class HandStonePositionComparator implements
|
|
||||||
Comparator<Pair<Stone, Position>> {
|
|
||||||
@Override
|
|
||||||
public int compare(Pair<Stone, Position> pair1, Pair<Stone, Position> pair2) {
|
|
||||||
Position pos1 = pair1.getSecond(), pos2 = pair2.getSecond();
|
|
||||||
if (pos1.getY() < pos2.getY()) {
|
|
||||||
return -1;
|
|
||||||
} else if (pos1.getY() > pos2.getY()) {
|
|
||||||
return 1;
|
|
||||||
} else {
|
|
||||||
if (pos1.getX() < pos2.getX()) {
|
|
||||||
return -1;
|
|
||||||
} else if (pos1.getX() > pos2.getX()) {
|
|
||||||
return 1;
|
|
||||||
} else {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private IHand hand;
|
private IHand hand;
|
||||||
private ITable table;
|
private ITable table;
|
||||||
private ITurnTimer timer;
|
private ITurnTimer timer;
|
||||||
|
@ -181,12 +161,41 @@ public class TurnControl {
|
||||||
timer.startTimer();
|
timer.startTimer();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sortByRuns() {
|
private void sortStones(Comparator<Stone> comparator) {
|
||||||
|
List<Stone> stones = new ArrayList<Stone>();
|
||||||
|
for (Pair<Stone, Position> entry : hand) {
|
||||||
|
stones.add(entry.getFirst());
|
||||||
|
}
|
||||||
|
for (Stone stone : stones) {
|
||||||
|
hand.pickUp(stone);
|
||||||
|
}
|
||||||
|
|
||||||
|
Collections.sort(stones, comparator);
|
||||||
|
|
||||||
|
int x = 0, y = 0;
|
||||||
|
for (Stone stone : stones) {
|
||||||
|
hand.drop(stone, new Position(x, y));
|
||||||
|
x++;
|
||||||
|
if (x >= RoundControl.HAND_WIDTH) {
|
||||||
|
x = 0;
|
||||||
|
y++;
|
||||||
|
|
||||||
|
if (y >= RoundControl.HAND_HEIGHT) {
|
||||||
|
throw new ArrayIndexOutOfBoundsException(); // TODO We can't handle
|
||||||
|
// this yet...
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
view.getPlayerPanel().getHandPanel().setStones(hand);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sortByRuns() {
|
||||||
|
sortStones(new RunComparator());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sortByGroups() {
|
private void sortByGroups() {
|
||||||
|
sortStones(new GroupComparator());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void stoneClick(Stone stone, boolean collect) {
|
private void stoneClick(Stone stone, boolean collect) {
|
||||||
|
@ -377,4 +386,95 @@ public class TurnControl {
|
||||||
public IEvent getEndOfTurnEvent() {
|
public IEvent getEndOfTurnEvent() {
|
||||||
return endOfTurnEvent;
|
return endOfTurnEvent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static private int compareJokers(Stone s1, Stone s2) {
|
||||||
|
if (!s1.isJoker() && s2.isJoker()) {
|
||||||
|
return -1;
|
||||||
|
} else if (s1.isJoker() && !s2.isJoker()) {
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static private int compareColors(Stone s1, Stone s2) {
|
||||||
|
if (s1.getColor() == s2.getColor())
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
for (StoneColor color : StoneColor.values()) {
|
||||||
|
if (s1.getColor() == color) {
|
||||||
|
return -1;
|
||||||
|
} else if (s2.getColor() == color) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static private int compareValues(Stone s1, Stone s2) {
|
||||||
|
if (s1.getValue() < s2.getValue()) {
|
||||||
|
return -1;
|
||||||
|
} else if (s1.getValue() > s2.getValue()) {
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class RunComparator implements Comparator<Stone> {
|
||||||
|
@Override
|
||||||
|
public int compare(Stone s1, Stone s2) {
|
||||||
|
int jokerCompare = compareJokers(s1, s2);
|
||||||
|
if (jokerCompare != 0) {
|
||||||
|
return jokerCompare;
|
||||||
|
}
|
||||||
|
|
||||||
|
int colorCompare = compareColors(s1, s2);
|
||||||
|
if (colorCompare != 0) {
|
||||||
|
return colorCompare;
|
||||||
|
}
|
||||||
|
|
||||||
|
return compareValues(s1, s2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class GroupComparator implements Comparator<Stone> {
|
||||||
|
@Override
|
||||||
|
public int compare(Stone s1, Stone s2) {
|
||||||
|
int jokerCompare = compareJokers(s1, s2);
|
||||||
|
if (jokerCompare != 0) {
|
||||||
|
return jokerCompare;
|
||||||
|
}
|
||||||
|
|
||||||
|
int valueCompare = compareValues(s1, s2);
|
||||||
|
if (valueCompare != 0) {
|
||||||
|
return valueCompare;
|
||||||
|
}
|
||||||
|
|
||||||
|
return compareColors(s1, s2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static class HandStonePositionComparator implements
|
||||||
|
Comparator<Pair<Stone, Position>> {
|
||||||
|
@Override
|
||||||
|
public int compare(Pair<Stone, Position> pair1, Pair<Stone, Position> pair2) {
|
||||||
|
Position pos1 = pair1.getSecond(), pos2 = pair2.getSecond();
|
||||||
|
if (pos1.getY() < pos2.getY()) {
|
||||||
|
return -1;
|
||||||
|
} else if (pos1.getY() > pos2.getY()) {
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
if (pos1.getX() < pos2.getX()) {
|
||||||
|
return -1;
|
||||||
|
} else if (pos1.getX() > pos2.getX()) {
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,7 +101,7 @@ class PlayerPanel extends JPanel implements IPlayerPanel {
|
||||||
currentPlayerNameLabel.setVerticalTextPosition(JLabel.CENTER);
|
currentPlayerNameLabel.setVerticalTextPosition(JLabel.CENTER);
|
||||||
leftPanel.add(currentPlayerNameLabel);
|
leftPanel.add(currentPlayerNameLabel);
|
||||||
|
|
||||||
sortByGroupsButton = new JButton("<html><center>Nach Gruppen sortieren");
|
sortByGroupsButton = new JButton("<html><center>Nach Sammlungen sortieren");
|
||||||
sortByGroupsButton.setFont(sortByGroupsButton.getFont().deriveFont(0));
|
sortByGroupsButton.setFont(sortByGroupsButton.getFont().deriveFont(0));
|
||||||
sortByGroupsButton.setMargin(new Insets(0, 0, 0, 0));
|
sortByGroupsButton.setMargin(new Insets(0, 0, 0, 0));
|
||||||
sortByGroupsButton.addActionListener(new ActionListener() {
|
sortByGroupsButton.addActionListener(new ActionListener() {
|
||||||
|
@ -208,7 +208,7 @@ class PlayerPanel extends JPanel implements IPlayerPanel {
|
||||||
int firstLineHeight = (int) ((height - SIDE_PANEL_SEPARATOR) * SIDE_PANEL_FIRST_LINE_HEIGHT);
|
int firstLineHeight = (int) ((height - SIDE_PANEL_SEPARATOR) * SIDE_PANEL_FIRST_LINE_HEIGHT);
|
||||||
int buttonWidth = (width - SIDE_PANEL_SEPARATOR) / 2;
|
int buttonWidth = (width - SIDE_PANEL_SEPARATOR) / 2;
|
||||||
int buttonHeight = height - SIDE_PANEL_SEPARATOR - firstLineHeight;
|
int buttonHeight = height - SIDE_PANEL_SEPARATOR - firstLineHeight;
|
||||||
float fontSize = (float) Math.sqrt(buttonWidth * buttonHeight) / 5;
|
float fontSize = (float) Math.sqrt(buttonWidth * buttonHeight) / 6;
|
||||||
if (fontSize > MAX_BUTTON_FONT_SIZE)
|
if (fontSize > MAX_BUTTON_FONT_SIZE)
|
||||||
fontSize = MAX_BUTTON_FONT_SIZE;
|
fontSize = MAX_BUTTON_FONT_SIZE;
|
||||||
|
|
||||||
|
|
|
@ -112,10 +112,9 @@ public class TurnControlTest {
|
||||||
public void showInitialHand() {
|
public void showInitialHand() {
|
||||||
mockView.displayStartTurnPanel = true;
|
mockView.displayStartTurnPanel = true;
|
||||||
|
|
||||||
List<Pair<Stone, Position>> stones = Arrays
|
List<Pair<Stone, Position>> stones = Arrays.asList(
|
||||||
.asList(new Pair<Stone, Position>(new Stone(RED), new Position(
|
new Pair<Stone, Position>(new Stone(RED), new Position(0, 0)),
|
||||||
0, 0)), new Pair<Stone, Position>(new Stone(BLACK),
|
new Pair<Stone, Position>(new Stone(BLACK), new Position(1, 0)));
|
||||||
new Position(1, 0)));
|
|
||||||
|
|
||||||
mockHand.iterable = stones;
|
mockHand.iterable = stones;
|
||||||
|
|
||||||
|
@ -241,8 +240,8 @@ public class TurnControlTest {
|
||||||
mockView.playerPanel.handPanel.stoneClickEvent.emit(firstStone, true);
|
mockView.playerPanel.handPanel.stoneClickEvent.emit(firstStone, true);
|
||||||
mockView.playerPanel.handPanel.stoneClickEvent.emit(secondStone, true);
|
mockView.playerPanel.handPanel.stoneClickEvent.emit(secondStone, true);
|
||||||
|
|
||||||
mockView.tablePanel.stoneCollectionPanel.stoneClickEvent.emit(
|
mockView.tablePanel.stoneCollectionPanel.stoneClickEvent.emit(firstStone,
|
||||||
firstStone, false);
|
false);
|
||||||
|
|
||||||
assertCollection(Arrays.asList(secondStone));
|
assertCollection(Arrays.asList(secondStone));
|
||||||
}
|
}
|
||||||
|
@ -257,8 +256,8 @@ public class TurnControlTest {
|
||||||
mockView.playerPanel.handPanel.stoneClickEvent.emit(firstStone, true);
|
mockView.playerPanel.handPanel.stoneClickEvent.emit(firstStone, true);
|
||||||
mockView.playerPanel.handPanel.stoneClickEvent.emit(secondStone, true);
|
mockView.playerPanel.handPanel.stoneClickEvent.emit(secondStone, true);
|
||||||
|
|
||||||
mockView.tablePanel.stoneCollectionPanel.stoneClickEvent.emit(
|
mockView.tablePanel.stoneCollectionPanel.stoneClickEvent.emit(firstStone,
|
||||||
firstStone, true);
|
true);
|
||||||
|
|
||||||
assertCollection(Arrays.asList(secondStone, firstStone));
|
assertCollection(Arrays.asList(secondStone, firstStone));
|
||||||
}
|
}
|
||||||
|
@ -273,8 +272,8 @@ public class TurnControlTest {
|
||||||
mockView.playerPanel.handPanel.stoneClickEvent.emit(firstStone, true);
|
mockView.playerPanel.handPanel.stoneClickEvent.emit(firstStone, true);
|
||||||
mockView.playerPanel.handPanel.stoneClickEvent.emit(secondStone, true);
|
mockView.playerPanel.handPanel.stoneClickEvent.emit(secondStone, true);
|
||||||
|
|
||||||
mockView.tablePanel.stoneCollectionPanel.stoneClickEvent.emit(
|
mockView.tablePanel.stoneCollectionPanel.stoneClickEvent.emit(firstStone,
|
||||||
firstStone, true);
|
true);
|
||||||
|
|
||||||
mockView.tablePanel.stoneCollectionPanel.setClickEvent.emit(firstStone,
|
mockView.tablePanel.stoneCollectionPanel.setClickEvent.emit(firstStone,
|
||||||
true);
|
true);
|
||||||
|
@ -376,8 +375,7 @@ public class TurnControlTest {
|
||||||
Stone stone2 = new Stone(2, StoneColor.RED);
|
Stone stone2 = new Stone(2, StoneColor.RED);
|
||||||
Stone stone3 = new Stone(3, StoneColor.RED);
|
Stone stone3 = new Stone(3, StoneColor.RED);
|
||||||
Stone stone4 = new Stone(4, StoneColor.RED);
|
Stone stone4 = new Stone(4, StoneColor.RED);
|
||||||
StoneSet set1 = new StoneSet(Arrays.asList(stone1, stone2, stone3,
|
StoneSet set1 = new StoneSet(Arrays.asList(stone1, stone2, stone3, stone4));
|
||||||
stone4));
|
|
||||||
|
|
||||||
mockTable.findStoneSet.put(stone1, set1);
|
mockTable.findStoneSet.put(stone1, set1);
|
||||||
mockTable.findStoneSet.put(stone3, set1);
|
mockTable.findStoneSet.put(stone3, set1);
|
||||||
|
@ -397,8 +395,7 @@ public class TurnControlTest {
|
||||||
Stone stone2 = new Stone(2, StoneColor.RED);
|
Stone stone2 = new Stone(2, StoneColor.RED);
|
||||||
Stone stone3 = new Stone(3, StoneColor.RED);
|
Stone stone3 = new Stone(3, StoneColor.RED);
|
||||||
Stone stone4 = new Stone(4, StoneColor.RED);
|
Stone stone4 = new Stone(4, StoneColor.RED);
|
||||||
StoneSet set1 = new StoneSet(Arrays.asList(stone1, stone2, stone3,
|
StoneSet set1 = new StoneSet(Arrays.asList(stone1, stone2, stone3, stone4));
|
||||||
stone4));
|
|
||||||
|
|
||||||
mockTable.findStoneSet.put(stone1, set1);
|
mockTable.findStoneSet.put(stone1, set1);
|
||||||
mockTable.findStoneSet.put(stone3, set1);
|
mockTable.findStoneSet.put(stone3, set1);
|
||||||
|
@ -420,8 +417,7 @@ public class TurnControlTest {
|
||||||
Stone stone2 = new Stone(2, StoneColor.RED);
|
Stone stone2 = new Stone(2, StoneColor.RED);
|
||||||
Stone stone3 = new Stone(3, StoneColor.RED);
|
Stone stone3 = new Stone(3, StoneColor.RED);
|
||||||
Stone stone4 = new Stone(4, StoneColor.RED);
|
Stone stone4 = new Stone(4, StoneColor.RED);
|
||||||
StoneSet set1 = new StoneSet(Arrays.asList(stone1, stone2, stone3,
|
StoneSet set1 = new StoneSet(Arrays.asList(stone1, stone2, stone3, stone4));
|
||||||
stone4));
|
|
||||||
|
|
||||||
mockTable.findStoneSet.put(stone1, set1);
|
mockTable.findStoneSet.put(stone1, set1);
|
||||||
mockTable.findStoneSet.put(stone3, set1);
|
mockTable.findStoneSet.put(stone3, set1);
|
||||||
|
@ -608,10 +604,10 @@ public class TurnControlTest {
|
||||||
Stone blackThree = new Stone(3, BLACK);
|
Stone blackThree = new Stone(3, BLACK);
|
||||||
Stone blackFour = new Stone(4, BLACK);
|
Stone blackFour = new Stone(4, BLACK);
|
||||||
Stone blackFive = new Stone(5, BLACK);
|
Stone blackFive = new Stone(5, BLACK);
|
||||||
StoneSet oldSet1 = new StoneSet(Arrays.asList(blueOne, redOne,
|
StoneSet oldSet1 = new StoneSet(Arrays.asList(blueOne, redOne, blackOne,
|
||||||
blackOne, redTwo, redThree, redFour, blackTwo, blackThree));
|
redTwo, redThree, redFour, blackTwo, blackThree));
|
||||||
StoneSet oldSet2 = new StoneSet(Arrays.asList(blueTwo, blackFour,
|
StoneSet oldSet2 = new StoneSet(
|
||||||
blackFive));
|
Arrays.asList(blueTwo, blackFour, blackFive));
|
||||||
table.drop(oldSet1, new Position(0, 0));
|
table.drop(oldSet1, new Position(0, 0));
|
||||||
table.drop(oldSet2, new Position(0, 0));
|
table.drop(oldSet2, new Position(0, 0));
|
||||||
mockHand.drop(blueThree, new Position(0, 0));
|
mockHand.drop(blueThree, new Position(0, 0));
|
||||||
|
@ -724,10 +720,10 @@ public class TurnControlTest {
|
||||||
Stone blackThree = new Stone(3, BLACK);
|
Stone blackThree = new Stone(3, BLACK);
|
||||||
Stone blackFour = new Stone(4, BLACK);
|
Stone blackFour = new Stone(4, BLACK);
|
||||||
Stone blackFive = new Stone(5, BLACK);
|
Stone blackFive = new Stone(5, BLACK);
|
||||||
StoneSet oldSet1 = new StoneSet(Arrays.asList(blueOne, redOne,
|
StoneSet oldSet1 = new StoneSet(Arrays.asList(blueOne, redOne, blackOne,
|
||||||
blackOne, redTwo, redThree, redFour, blackTwo, blackThree));
|
redTwo, redThree, redFour, blackTwo, blackThree));
|
||||||
StoneSet oldSet2 = new StoneSet(Arrays.asList(blueTwo, blackFour,
|
StoneSet oldSet2 = new StoneSet(
|
||||||
blackFive));
|
Arrays.asList(blueTwo, blackFour, blackFive));
|
||||||
table.drop(oldSet1, new Position(0, 0));
|
table.drop(oldSet1, new Position(0, 0));
|
||||||
table.drop(oldSet2, new Position(0, 0));
|
table.drop(oldSet2, new Position(0, 0));
|
||||||
mockHand.drop(blueThree, new Position(0, 0));
|
mockHand.drop(blueThree, new Position(0, 0));
|
||||||
|
@ -840,10 +836,10 @@ public class TurnControlTest {
|
||||||
Stone blackThree = new Stone(3, BLACK);
|
Stone blackThree = new Stone(3, BLACK);
|
||||||
Stone blackFour = new Stone(4, BLACK);
|
Stone blackFour = new Stone(4, BLACK);
|
||||||
Stone blackFive = new Stone(5, BLACK);
|
Stone blackFive = new Stone(5, BLACK);
|
||||||
StoneSet oldSet1 = new StoneSet(Arrays.asList(blueOne, redOne,
|
StoneSet oldSet1 = new StoneSet(Arrays.asList(blueOne, redOne, blackOne,
|
||||||
blackOne, redTwo, redThree, redFour, blackTwo, blackThree));
|
redTwo, redThree, redFour, blackTwo, blackThree));
|
||||||
StoneSet oldSet2 = new StoneSet(Arrays.asList(blueTwo, blackFour,
|
StoneSet oldSet2 = new StoneSet(
|
||||||
blackFive));
|
Arrays.asList(blueTwo, blackFour, blackFive));
|
||||||
table.drop(oldSet1, new Position(0, 0));
|
table.drop(oldSet1, new Position(0, 0));
|
||||||
table.drop(oldSet2, new Position(0, 0));
|
table.drop(oldSet2, new Position(0, 0));
|
||||||
mockHand.drop(blueThree, new Position(0, 0));
|
mockHand.drop(blueThree, new Position(0, 0));
|
||||||
|
@ -910,9 +906,11 @@ public class TurnControlTest {
|
||||||
checkTableDisplay(table);
|
checkTableDisplay(table);
|
||||||
checkHandDisplay(mockHand);
|
checkHandDisplay(mockHand);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSortByGroups() {
|
public void testSortByGroups() {
|
||||||
|
testControl.startTurn();
|
||||||
|
|
||||||
Stone red1 = new Stone(1, StoneColor.RED);
|
Stone red1 = new Stone(1, StoneColor.RED);
|
||||||
Stone blue2 = new Stone(2, StoneColor.BLUE);
|
Stone blue2 = new Stone(2, StoneColor.BLUE);
|
||||||
Stone red4 = new Stone(4, StoneColor.RED);
|
Stone red4 = new Stone(4, StoneColor.RED);
|
||||||
|
@ -939,22 +937,25 @@ public class TurnControlTest {
|
||||||
mockHand.drop(orange13, new Position(0, 0));
|
mockHand.drop(orange13, new Position(0, 0));
|
||||||
mockHand.drop(red11, new Position(0, 0));
|
mockHand.drop(red11, new Position(0, 0));
|
||||||
mockHand.drop(black10, new Position(0, 0));
|
mockHand.drop(black10, new Position(0, 0));
|
||||||
|
|
||||||
mockView.playerPanel.sortByGroupsEvent.emit();
|
mockView.playerPanel.sortByGroupsEvent.emit();
|
||||||
|
|
||||||
List<Pair<Stone, Position>> stones = new ArrayList<Pair<Stone, Position>>(mockHand.stones);
|
List<Pair<Stone, Position>> stones = new ArrayList<Pair<Stone, Position>>(
|
||||||
|
mockHand.stones);
|
||||||
Collections.sort(stones, new TurnControl.HandStonePositionComparator());
|
Collections.sort(stones, new TurnControl.HandStonePositionComparator());
|
||||||
|
|
||||||
assertEquals(stones.size(), 13);
|
assertEquals(stones.size(), 13);
|
||||||
|
|
||||||
assertSame(stones.get(0).getFirst(), blue1);
|
assertSame(stones.get(0).getFirst(), blue1);
|
||||||
assertSame(stones.get(1).getFirst(), red1);
|
assertSame(stones.get(1).getFirst(), red1);
|
||||||
assertSame(stones.get(2).getFirst(), blue2);
|
assertSame(stones.get(2).getFirst(), blue2);
|
||||||
assertSame(stones.get(3).getFirst(), red3);
|
assertSame(stones.get(3).getFirst(), red3);
|
||||||
|
|
||||||
assertTrue(stones.get(4).getFirst() == blue4 || stones.get(4).getFirst() == blue4a);
|
assertTrue(stones.get(4).getFirst() == blue4
|
||||||
assertTrue(stones.get(5).getFirst() == blue4 || stones.get(5).getFirst() == blue4a);
|
|| stones.get(4).getFirst() == blue4a);
|
||||||
|
assertTrue(stones.get(5).getFirst() == blue4
|
||||||
|
|| stones.get(5).getFirst() == blue4a);
|
||||||
|
|
||||||
assertSame(stones.get(6).getFirst(), red4);
|
assertSame(stones.get(6).getFirst(), red4);
|
||||||
assertSame(stones.get(7).getFirst(), black5);
|
assertSame(stones.get(7).getFirst(), black5);
|
||||||
assertSame(stones.get(8).getFirst(), black10);
|
assertSame(stones.get(8).getFirst(), black10);
|
||||||
|
@ -962,10 +963,14 @@ public class TurnControlTest {
|
||||||
assertSame(stones.get(10).getFirst(), red11);
|
assertSame(stones.get(10).getFirst(), red11);
|
||||||
assertSame(stones.get(11).getFirst(), orange13);
|
assertSame(stones.get(11).getFirst(), orange13);
|
||||||
assertSame(stones.get(12).getFirst(), joker);
|
assertSame(stones.get(12).getFirst(), joker);
|
||||||
|
|
||||||
|
checkHandDisplay(mockHand);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSortByRuns() {
|
public void testSortByRuns() {
|
||||||
|
testControl.startTurn();
|
||||||
|
|
||||||
Stone red1 = new Stone(1, StoneColor.RED);
|
Stone red1 = new Stone(1, StoneColor.RED);
|
||||||
Stone blue2 = new Stone(2, StoneColor.BLUE);
|
Stone blue2 = new Stone(2, StoneColor.BLUE);
|
||||||
Stone red4 = new Stone(4, StoneColor.RED);
|
Stone red4 = new Stone(4, StoneColor.RED);
|
||||||
|
@ -992,28 +997,33 @@ public class TurnControlTest {
|
||||||
mockHand.drop(orange13, new Position(0, 0));
|
mockHand.drop(orange13, new Position(0, 0));
|
||||||
mockHand.drop(red11, new Position(0, 0));
|
mockHand.drop(red11, new Position(0, 0));
|
||||||
mockHand.drop(black10, new Position(0, 0));
|
mockHand.drop(black10, new Position(0, 0));
|
||||||
|
|
||||||
mockView.playerPanel.sortByRunsEvent.emit();
|
mockView.playerPanel.sortByRunsEvent.emit();
|
||||||
|
|
||||||
List<Pair<Stone, Position>> stones = new ArrayList<Pair<Stone, Position>>(mockHand.stones);
|
List<Pair<Stone, Position>> stones = new ArrayList<Pair<Stone, Position>>(
|
||||||
|
mockHand.stones);
|
||||||
Collections.sort(stones, new TurnControl.HandStonePositionComparator());
|
Collections.sort(stones, new TurnControl.HandStonePositionComparator());
|
||||||
|
|
||||||
assertEquals(stones.size(), 13);
|
assertEquals(stones.size(), 13);
|
||||||
|
|
||||||
assertSame(stones.get(0).getFirst(), black5);
|
assertSame(stones.get(0).getFirst(), black5);
|
||||||
assertSame(stones.get(1).getFirst(), black10);
|
assertSame(stones.get(1).getFirst(), black10);
|
||||||
assertSame(stones.get(2).getFirst(), orange10);
|
assertSame(stones.get(2).getFirst(), orange10);
|
||||||
assertSame(stones.get(3).getFirst(), orange13);
|
assertSame(stones.get(3).getFirst(), orange13);
|
||||||
assertSame(stones.get(4).getFirst(), blue1);
|
assertSame(stones.get(4).getFirst(), blue1);
|
||||||
assertSame(stones.get(5).getFirst(), blue2);
|
assertSame(stones.get(5).getFirst(), blue2);
|
||||||
|
|
||||||
assertTrue(stones.get(6).getFirst() == blue4 || stones.get(6).getFirst() == blue4a);
|
assertTrue(stones.get(6).getFirst() == blue4
|
||||||
assertTrue(stones.get(7).getFirst() == blue4 || stones.get(7).getFirst() == blue4a);
|
|| stones.get(6).getFirst() == blue4a);
|
||||||
|
assertTrue(stones.get(7).getFirst() == blue4
|
||||||
|
|| stones.get(7).getFirst() == blue4a);
|
||||||
|
|
||||||
assertSame(stones.get(8).getFirst(), red1);
|
assertSame(stones.get(8).getFirst(), red1);
|
||||||
assertSame(stones.get(9).getFirst(), red3);
|
assertSame(stones.get(9).getFirst(), red3);
|
||||||
assertSame(stones.get(10).getFirst(), red4);
|
assertSame(stones.get(10).getFirst(), red4);
|
||||||
assertSame(stones.get(11).getFirst(), red11);
|
assertSame(stones.get(11).getFirst(), red11);
|
||||||
assertSame(stones.get(12).getFirst(), joker);
|
assertSame(stones.get(12).getFirst(), joker);
|
||||||
|
|
||||||
|
checkHandDisplay(mockHand);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue