Add test for no limits

git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@411 72836036-5685-4462-b002-a69064685172
This commit is contained in:
Matthias Schiffer 2011-06-11 03:15:15 +02:00
parent f4972b339b
commit acc1b64fe7

View file

@ -24,6 +24,8 @@ public class StoneSetTest {
private GameSettings lessColorSettings = new GameSettings(); private GameSettings lessColorSettings = new GameSettings();
private GameSettings higherValueSettings = new GameSettings(); private GameSettings higherValueSettings = new GameSettings();
private GameSettings lowerValueSettings = new GameSettings(); private GameSettings lowerValueSettings = new GameSettings();
private GameSettings noLimitsSettings = new GameSettings();
private GameSettings noLimitsLowerValueSettings = new GameSettings();
/** */ /** */
@Before @Before
@ -33,6 +35,9 @@ public class StoneSetTest {
StoneColor.BLUE, StoneColor.RED, StoneColor.BLACK))); StoneColor.BLUE, StoneColor.RED, StoneColor.BLACK)));
higherValueSettings.setHighestValue(17); higherValueSettings.setHighestValue(17);
lowerValueSettings.setHighestValue(10); lowerValueSettings.setHighestValue(10);
noLimitsSettings.setNoLimits(true);
noLimitsLowerValueSettings.setHighestValue(10);
noLimitsLowerValueSettings.setNoLimits(true);
} }
private void assertSet(StoneSet.Type expectedType, Integer expectedValue, private void assertSet(StoneSet.Type expectedType, Integer expectedValue,
@ -48,22 +53,29 @@ public class StoneSetTest {
public void doubleJokerValid() { public void doubleJokerValid() {
// 3 Stones // 3 Stones
// JJZ // JJZ
assertSet(GROUP, 3, Arrays.asList(new Stone(RED), new Stone(BLACK), assertSet(GROUP, 3,
new Stone(1, BLACK)), defaultSettings); Arrays.asList(new Stone(RED), new Stone(BLACK), new Stone(1, BLACK)),
defaultSettings);
// JZJ // JZJ
assertSet(GROUP, 3, Arrays.asList(new Stone(RED), new Stone(1, BLACK), assertSet(GROUP, 3,
new Stone(BLACK)), defaultSettings); Arrays.asList(new Stone(RED), new Stone(1, BLACK), new Stone(BLACK)),
defaultSettings);
// ZJJ // ZJJ
assertSet(RUN, 6, Arrays.asList(new Stone(1, RED), new Stone(RED), assertSet(RUN, 6,
new Stone(BLACK)), defaultSettings); Arrays.asList(new Stone(1, RED), new Stone(RED), new Stone(BLACK)),
assertSet(RUN, 33, Arrays.asList(new Stone(10, RED), new Stone(RED), defaultSettings);
new Stone(BLACK)), defaultSettings); assertSet(RUN, 33,
assertSet(GROUP, 30, Arrays.asList(new Stone(10, RED), new Stone(RED), Arrays.asList(new Stone(10, RED), new Stone(RED), new Stone(BLACK)),
new Stone(BLACK)), lowerValueSettings); defaultSettings);
assertSet(GROUP, 39, Arrays.asList(new Stone(13, RED), new Stone(RED), assertSet(GROUP, 30,
new Stone(BLACK)), defaultSettings); Arrays.asList(new Stone(10, RED), new Stone(RED), new Stone(BLACK)),
assertSet(RUN, 42, Arrays.asList(new Stone(13, RED), new Stone(RED), lowerValueSettings);
new Stone(BLACK)), higherValueSettings); assertSet(GROUP, 39,
Arrays.asList(new Stone(13, RED), new Stone(RED), new Stone(BLACK)),
defaultSettings);
assertSet(RUN, 42,
Arrays.asList(new Stone(13, RED), new Stone(RED), new Stone(BLACK)),
higherValueSettings);
// 4 Stones // 4 Stones
// JJZZ // JJZZ
assertSet(GROUP, 4, Arrays.asList(new Stone(RED), new Stone(BLACK), assertSet(GROUP, 4, Arrays.asList(new Stone(RED), new Stone(BLACK),
@ -73,9 +85,8 @@ public class StoneSetTest {
// ZZJJ // ZZJJ
assertSet(RUN, 10, Arrays.asList(new Stone(1, RED), new Stone(2, RED), assertSet(RUN, 10, Arrays.asList(new Stone(1, RED), new Stone(2, RED),
new Stone(BLACK), new Stone(RED)), defaultSettings); new Stone(BLACK), new Stone(RED)), defaultSettings);
assertSet(GROUP, 4, Arrays.asList(new Stone(1, RED), assertSet(GROUP, 4, Arrays.asList(new Stone(1, RED), new Stone(1, BLACK),
new Stone(1, BLACK), new Stone(BLACK), new Stone(RED)), new Stone(BLACK), new Stone(RED)), defaultSettings);
defaultSettings);
// ZJZJ // ZJZJ
assertSet(GROUP, 4, Arrays.asList(new Stone(1, RED), new Stone(BLACK), assertSet(GROUP, 4, Arrays.asList(new Stone(1, RED), new Stone(BLACK),
new Stone(1, BLACK), new Stone(RED)), defaultSettings); new Stone(1, BLACK), new Stone(RED)), defaultSettings);
@ -97,62 +108,100 @@ public class StoneSetTest {
assertSet(RUN, 10, Arrays.asList(new Stone(1, RED), new Stone(RED), assertSet(RUN, 10, Arrays.asList(new Stone(1, RED), new Stone(RED),
new Stone(BLACK), new Stone(4, RED)), defaultSettings); new Stone(BLACK), new Stone(4, RED)), defaultSettings);
// More than 4 stones // More than 4 stones
assertSet(GROUP, 6, Arrays.asList(new Stone(1, RED), assertSet(GROUP, 6, Arrays.asList(new Stone(1, RED), new Stone(1, BLUE),
new Stone(1, BLUE), new Stone(1, GREEN), new Stone(1, BLACK), new Stone(1, GREEN), new Stone(1, BLACK), new Stone(BLACK), new Stone(
new Stone(BLACK), new Stone(RED)), moreColorSettings); RED)), moreColorSettings);
} }
/** */ /** */
@Test @Test
public void groups() { public void groups() {
assertSet(GROUP, 3, Arrays.asList(new Stone(1, RED), assertSet(GROUP, 3, Arrays.asList(new Stone(1, RED), new Stone(1, BLACK),
new Stone(1, BLACK), new Stone(1, BLUE)), defaultSettings); new Stone(1, BLUE)), defaultSettings);
assertSet(GROUP, 3, Arrays.asList(new Stone(1, RED), assertSet(GROUP, 3, Arrays.asList(new Stone(1, RED), new Stone(1, BLACK),
new Stone(1, BLACK), new Stone(1, BLUE)), lessColorSettings); new Stone(1, BLUE)), lessColorSettings);
assertSet(GROUP, 4, Arrays.asList(new Stone(1, RED), assertSet(GROUP, 4, Arrays.asList(new Stone(1, RED), new Stone(1, BLACK),
new Stone(1, BLACK), new Stone(1, BLUE), new Stone(1, ORANGE)), new Stone(1, BLUE), new Stone(1, ORANGE)), defaultSettings);
defaultSettings); assertSet(GROUP, 6, Arrays.asList(new Stone(1, RED), new Stone(1, GREEN),
assertSet(GROUP, 6, Arrays.asList(new Stone(1, RED), new Stone(1, GRAY), new Stone(1, BLACK), new Stone(1, BLUE), new Stone(
new Stone(1, GREEN), new Stone(1, GRAY), new Stone(1, BLACK), 1, ORANGE)), moreColorSettings);
new Stone(1, BLUE), new Stone(1, ORANGE)), moreColorSettings);
} }
/** */ /** */
@Test @Test
public void runs() { public void runs() {
assertSet(RUN, 6, Arrays.asList(new Stone(1, RED), new Stone(2, RED), assertSet(RUN, 6,
new Stone(3, RED)), defaultSettings); Arrays.asList(new Stone(1, RED), new Stone(2, RED), new Stone(3, RED)),
assertSet(RUN, 6, Arrays.asList(new Stone(1, RED), new Stone(2, RED),
new Stone(3, RED)), lowerValueSettings);
assertSet(RUN, 6, Arrays.asList(new Stone(1, RED), new Stone(2, RED),
new Stone(3, RED)), higherValueSettings);
assertSet(RUN, 22, Arrays.asList(new Stone(4, BLUE),
new Stone(5, BLUE), new Stone(6, BLUE), new Stone(7, BLUE)),
defaultSettings); defaultSettings);
assertSet(RUN, 42, Arrays.asList(new Stone(13, RED), assertSet(RUN, 6,
new Stone(14, RED), new Stone(15, RED)), higherValueSettings); Arrays.asList(new Stone(1, RED), new Stone(2, RED), new Stone(3, RED)),
lowerValueSettings);
assertSet(RUN, 6,
Arrays.asList(new Stone(1, RED), new Stone(2, RED), new Stone(3, RED)),
higherValueSettings);
assertSet(RUN, 22, Arrays.asList(new Stone(4, BLUE), new Stone(5, BLUE),
new Stone(6, BLUE), new Stone(7, BLUE)), defaultSettings);
assertSet(RUN, 42, Arrays.asList(new Stone(13, RED), new Stone(14, RED),
new Stone(15, RED)), higherValueSettings);
} }
/** */ /** */
@Test @Test
public void singleJoker() { public void singleJoker() {
// ZJZ // ZJZ
assertSet(GROUP, 3, Arrays.asList(new Stone(1, RED), new Stone(BLACK), assertSet(
new Stone(1, BLACK)), defaultSettings); GROUP,
assertSet(RUN, 6, Arrays.asList(new Stone(1, RED), new Stone(RED), 3,
new Stone(3, RED)), defaultSettings); Arrays.asList(new Stone(1, RED), new Stone(BLACK), new Stone(1, BLACK)),
defaultSettings);
assertSet(RUN, 6,
Arrays.asList(new Stone(1, RED), new Stone(RED), new Stone(3, RED)),
defaultSettings);
// JZZ // JZZ
assertSet(GROUP, 3, Arrays.asList(new Stone(RED), new Stone(1, RED), assertSet(GROUP, 3,
new Stone(1, BLACK)), defaultSettings); Arrays.asList(new Stone(RED), new Stone(1, RED), new Stone(1, BLACK)),
assertSet(RUN, 6, Arrays.asList(new Stone(RED), new Stone(2, RED), defaultSettings);
new Stone(3, RED)), defaultSettings); assertSet(RUN, 6,
Arrays.asList(new Stone(RED), new Stone(2, RED), new Stone(3, RED)),
defaultSettings);
// ZZJ // ZZJ
assertSet(GROUP, 3, Arrays.asList(new Stone(1, RED), assertSet(
new Stone(1, BLACK), new Stone(BLACK)), defaultSettings); GROUP,
assertSet(RUN, 6, Arrays.asList(new Stone(1, RED), new Stone(2, RED), 3,
new Stone(RED)), defaultSettings); Arrays.asList(new Stone(1, RED), new Stone(1, BLACK), new Stone(BLACK)),
assertSet(RUN, 39, Arrays.asList(new Stone(12, RED), defaultSettings);
new Stone(13, RED), new Stone(RED)), higherValueSettings); assertSet(RUN, 6,
Arrays.asList(new Stone(1, RED), new Stone(2, RED), new Stone(RED)),
defaultSettings);
assertSet(RUN, 39,
Arrays.asList(new Stone(12, RED), new Stone(13, RED), new Stone(RED)),
higherValueSettings);
}
@Test
public void noLimitsTest() {
assertSet(RUN, 16,
Arrays.asList(new Stone(RED), new Stone(1, RED), new Stone(2, RED)),
noLimitsSettings);
assertSet(RUN, 26,
Arrays.asList(new Stone(12, RED), new Stone(13, RED), new Stone(RED)),
noLimitsSettings);
assertSet(RUN, 20,
Arrays.asList(new Stone(9, RED), new Stone(10, RED), new Stone(RED)),
noLimitsLowerValueSettings);
assertSet(RUN, 28, Arrays.asList(new Stone(RED), new Stone(BLACK),
new Stone(1, RED), new Stone(2, RED)), noLimitsSettings);
assertSet(RUN, 26, Arrays.asList(new Stone(12, RED), new Stone(13, RED),
new Stone(1, RED)), noLimitsSettings);
assertSet(
RUN,
16,
Arrays.asList(new Stone(13, RED), new Stone(1, RED), new Stone(2, RED)),
noLimitsSettings);
assertSet(INVALID, 0,
Arrays.asList(new Stone(13, RED), new Stone(RED), new Stone(1, RED)),
noLimitsSettings);
} }
// invalid // invalid
@ -162,65 +211,87 @@ public class StoneSetTest {
assertSet(INVALID, 0, Arrays.asList(new Stone(RED), new Stone(BLACK), assertSet(INVALID, 0, Arrays.asList(new Stone(RED), new Stone(BLACK),
new Stone(1, BLACK), new Stone(1, RED)), lessColorSettings); new Stone(1, BLACK), new Stone(1, RED)), lessColorSettings);
// More than 4 stones // More than 4 stones
assertSet(INVALID, 0, Arrays.asList(new Stone(1, RED), new Stone(1, assertSet(INVALID, 0, Arrays.asList(new Stone(1, RED), new Stone(1, BLUE),
BLUE), new Stone(1, GREEN), new Stone(1, BLACK), new Stone(1, new Stone(1, GREEN), new Stone(1, BLACK), new Stone(1, VIOLET),
VIOLET), new Stone(1, ORANGE), new Stone(1, AQUA), new Stone( new Stone(1, ORANGE), new Stone(1, AQUA), new Stone(BLACK), new Stone(
BLACK), new Stone(RED)), moreColorSettings); RED)), moreColorSettings);
} }
/** */ /** */
@Test @Test
public void outOfBounds() { public void outOfBounds() {
assertSet(INVALID, 0, Arrays.asList(new Stone(RED), new Stone(1, RED), assertSet(INVALID, 0,
new Stone(2, RED)), defaultSettings); Arrays.asList(new Stone(RED), new Stone(1, RED), new Stone(2, RED)),
assertSet(INVALID, 0, Arrays.asList(new Stone(12, RED), new Stone(13, defaultSettings);
RED), new Stone(RED)), defaultSettings); assertSet(INVALID, 0,
assertSet(INVALID, 0, Arrays.asList(new Stone(9, RED), new Stone(10, Arrays.asList(new Stone(12, RED), new Stone(13, RED), new Stone(RED)),
RED), new Stone(RED)), lowerValueSettings); defaultSettings);
assertSet(INVALID, 0,
Arrays.asList(new Stone(9, RED), new Stone(10, RED), new Stone(RED)),
lowerValueSettings);
assertSet(INVALID, 0, Arrays.asList(new Stone(RED), new Stone(BLACK), assertSet(INVALID, 0, Arrays.asList(new Stone(RED), new Stone(BLACK),
new Stone(1, RED), new Stone(2, RED)), defaultSettings); new Stone(1, RED), new Stone(2, RED)), defaultSettings);
assertSet(INVALID, 0, Arrays.asList(new Stone(12, RED), new Stone(13, RED),
new Stone(1, RED)), defaultSettings);
assertSet(
INVALID,
0,
Arrays.asList(new Stone(13, RED), new Stone(1, RED), new Stone(2, RED)),
defaultSettings);
} }
/** */ /** */
@Test @Test
public void sameColor() { public void sameColor() {
assertSet(INVALID, 0, Arrays.asList(new Stone(1, RED), assertSet(
new Stone(1, RED), new Stone(1, BLUE)), defaultSettings); INVALID,
assertSet(INVALID, 0, Arrays.asList(new Stone(1, RED), new Stone(1, 0,
BLUE), new Stone(1, BLACK), new Stone(1, ORANGE), Arrays.asList(new Stone(1, RED), new Stone(1, RED), new Stone(1, BLUE)),
new Stone(RED)), defaultSettings); defaultSettings);
assertSet(INVALID, 0, Arrays.asList(new Stone(1, RED), new Stone(1, assertSet(INVALID, 0, Arrays.asList(new Stone(1, RED), new Stone(1, BLUE),
BLUE), new Stone(1, GREEN), new Stone(1, BLACK), new Stone(1, new Stone(1, BLACK), new Stone(1, ORANGE), new Stone(RED)),
VIOLET), new Stone(1, GRAY), new Stone(1, ORANGE), new Stone( defaultSettings);
1, AQUA), new Stone(RED)), moreColorSettings); assertSet(INVALID, 0, Arrays.asList(new Stone(1, RED), new Stone(1, BLUE),
new Stone(1, GREEN), new Stone(1, BLACK), new Stone(1, VIOLET),
new Stone(1, GRAY), new Stone(1, ORANGE), new Stone(1, AQUA),
new Stone(RED)), moreColorSettings);
} }
/** */ /** */
@Test @Test
public void incorrectOrder() { public void incorrectOrder() {
assertSet(INVALID, 0, Arrays.asList(new Stone(4, RED), assertSet(INVALID, 0,
new Stone(6, RED), new Stone(5, RED)), defaultSettings); Arrays.asList(new Stone(4, RED), new Stone(6, RED), new Stone(5, RED)),
assertSet(INVALID, 0, Arrays.asList(new Stone(4, RED), defaultSettings);
new Stone(6, RED), new Stone(RED)), defaultSettings); assertSet(INVALID, 0,
assertSet(INVALID, 0, Arrays.asList(new Stone(4, RED), new Stone(RED), Arrays.asList(new Stone(4, RED), new Stone(6, RED), new Stone(RED)),
new Stone(5, RED)), defaultSettings); defaultSettings);
assertSet(INVALID, 0,
Arrays.asList(new Stone(4, RED), new Stone(RED), new Stone(5, RED)),
defaultSettings);
} }
/** */ /** */
@Test @Test
public void otherInvalid() { public void otherInvalid() {
assertSet(INVALID, 0, Arrays.asList(new Stone(4, RED),
new Stone(5, RED), new Stone(7, RED)), defaultSettings);
assertSet(INVALID, 0, Arrays.asList(new Stone(4, RED), new Stone(5,
BLUE), new Stone(6, RED)), defaultSettings);
assertSet(INVALID, 0, assertSet(INVALID, 0,
Arrays.asList(new Stone(4, RED), new Stone(5, RED)), Arrays.asList(new Stone(4, RED), new Stone(5, RED), new Stone(7, RED)),
defaultSettings);
assertSet(
INVALID,
0,
Arrays.asList(new Stone(4, RED), new Stone(5, BLUE), new Stone(6, RED)),
defaultSettings);
assertSet(INVALID, 0, Arrays.asList(new Stone(4, RED), new Stone(5, RED)),
defaultSettings);
assertSet(
INVALID,
0,
Arrays.asList(new Stone(4, BLUE), new Stone(5, RED), new Stone(6, RED)),
defaultSettings); defaultSettings);
assertSet(INVALID, 0, Arrays.asList(new Stone(4, BLUE), new Stone(5,
RED), new Stone(6, RED)), defaultSettings);
// Regression test: // Regression test:
assertSet(INVALID, 0, Arrays.asList(new Stone(12, ORANGE), new Stone( assertSet(INVALID, 0, Arrays.asList(new Stone(12, ORANGE), new Stone(12,
12, BLACK), new Stone(7, BLUE)), defaultSettings); BLACK), new Stone(7, BLUE)), defaultSettings);
} }
/** */ /** */
@ -231,12 +302,11 @@ public class StoneSetTest {
defaultSettings); defaultSettings);
assertSet(GROUP, 4 * 13, Arrays.asList(new Stone(RED), new Stone(RED), assertSet(GROUP, 4 * 13, Arrays.asList(new Stone(RED), new Stone(RED),
new Stone(RED), new Stone(RED)), defaultSettings); new Stone(RED), new Stone(RED)), defaultSettings);
assertSet(RUN, 13 + 12 + 11 + 10 + 9, assertSet(RUN, 13 + 12 + 11 + 10 + 9, Arrays.asList(new Stone(RED),
Arrays.asList(new Stone(RED), new Stone(RED), new Stone(RED), new Stone(RED), new Stone(RED), new Stone(RED), new Stone(RED)),
new Stone(RED), new Stone(RED)), defaultSettings);
assertSet(RUN, 5 * 10, Arrays.asList(new Stone(RED), new Stone(RED),
new Stone(RED), new Stone(RED), new Stone(12, RED)),
defaultSettings); defaultSettings);
assertSet(RUN, 5 * 10, Arrays.asList(new Stone(RED), new Stone(RED),
new Stone(RED), new Stone(RED), new Stone(12, RED)), defaultSettings);
} }
/** */ /** */