1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 package com.buckosoft.fibs.domain;
57
58 import junit.framework.TestCase;
59
60 import org.junit.Test;
61
62 import com.buckosoft.fibs.domain.Board;
63
64
65
66
67
68
69
70 public class TestBoard extends TestCase {
71
72 private Board board = null;
73
74
75 private String fibsBoard = "board:You:someplayer:3:0:0:1:-2:0:0:0:0:5:0:3:0:0:0:-5:5:0:0:0:-3:0:-5:0:0:0:0:2:2:1:4:4:0:0:1:1:1:0:1:-1:0:25:0:0:0:0:2:0:0:0";
76
77 private String fibsBoard0 = "board:You:dickbalaska:35:5:7:0:3:3:2:1:3:1:0:0:0:0:0:0:0:0:0:0:0:0:-4:-3:-2:-1:-3:-2:0:-1:1:4:0:0:1:1:1:0:-1:1:25:0:0:2:0:0:2:0:0:0";
78
79 private String fibsBoard1 = "board:You:dickbalaska:35:5:7:0:3:3:2:1:3:1:0:0:0:0:0:0:0:0:0:0:0:0:-4:-3:-2:-1:-3:-2:0:-1:6:2:0:0:1:1:1:0:-1:1:25:0:0:2:0:0:2:0:0:0";
80
81 private String fibsBoard2 = "board:You:dickbalaska:35:5:7:0:3:3:2:1:3:1:0:0:0:0:0:0:0:0:0:0:0:0:-4:-3:-2:-1:-3:-2:0:-1:6:2:0:0:1:1:1:0:-1:1:25:0:1:2:3:4:2:0:0:0";
82
83 private String fibsBoard3 = "board:You:dickbalaska:35:5:7:0:3:3:2:1:3:1:0:0:0:0:0:0:0:0:0:0:0:0:-4:-3:-2:-1:-3:-2:0:-1:1:2:0:0:1:1:1:1:-1:1:25:0:0:2:0:0:2:0:0:0";
84
85 private String fibsBoard4 = "board:You:someplayer:3:0:0:1:-2:0:0:0:0:5:0:3:0:0:0:-5:5:0:0:0:-3:0:-5:0:0:0:0:2:2:1:4:4:0:0:1:0:1:0:1:-1:0:25:0:0:0:0:2:0:0:0";
86
87 private String fibsBoard5 = "board:blitzxz:blotsalot:5:0:1:0:0:2:-2:0:2:3:3:2:3:0:0:0:0:0:0:0:-1:-1:-3:-2:-2:-2:-2:0:0:-1:0:0:0:0:2:1:0:0:-1:1:25:0:0:0:0:0:2:3:0:0";
88
89 private String fibsBoard6 = "board:blitzxz:blotsalot:5:4:1:0:0:2:-2:0:2:3:3:2:3:0:0:0:0:0:0:0:-1:-1:-3:-2:-2:-2:-2:0:0:-1:0:0:0:0:0:0:0:0:-1:1:25:0:0:0:0:0:2:3:0:0";
90
91 private String fibsBoard8 = "board:You:dickbalaska:35:5:7:0:3:3:2:1:3:1:0:0:0:0:0:0:0:0:0:0:0:0:-4:-3:-2:-1:-3:-2:0:-1:0:0:2:6:1:1:1:0:-1:1:25:0:0:2:0:0:2:0:0:0";
92
93
94 private String fibsBoard7 = "board:dooldoo:asl:5:0:0:0:3:0:2:0:0:0:0:0:0:-2:0:-2:0:0:-1:0:0:0:-6:-2:-2:0:0:0:0:-1:0:0:0:0:2:1:0:0:-1:1:25:0:0:10:0:0:2:4:0:0";
95 private String fibsBoardR0= "board:AverageMark:SuperDaveK:5:0:0:-1:2:0:2:0:-1:2:0:3:0:0:0:-3:4:0:-1:0:-2:0:-5:-2:0:2:0:0:0:-1:4:1:0:0:1:1:1:0:-1:1:25:0:0:0:1:0:2:5:0:0";
96 private String fibsBoardR1= "board:AverageMark:SuperDaveK:5:3:1:0:6:2:3:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:-2:0:-4:-2:3:0:1:2:2:0:0:2:1:0:0:1:-1:0:25:0:7:0:0:4:5:0:0";
97
98 private int[] initialPositions = new int[] {0,2,0,0,0,0,-5,0,-3,0,0,0,5,-5,0,0,0,3,0,5,0,0,0,0,-2};
99
100 protected void setUp() {
101 board = new Board();
102 }
103
104 @Test
105 public void testParseFibsBoard() {
106 board.parseFibsBoard(fibsBoard0);
107 assertEquals("You", board.getPlayerName()[0]);
108 }
109
110 @Test
111 public void testGetDice() {
112 int[][] dice;
113 board = new Board();
114 dice = board.getDice();
115 assertEquals(0, dice[0][0]);
116 assertEquals(0, dice[0][1]);
117 assertEquals(0, dice[1][0]);
118 assertEquals(0, dice[1][1]);
119 board.parseFibsBoard(fibsBoard);
120 dice = board.getDice();
121 assertEquals(4, dice[0][0]);
122 assertEquals(4, dice[0][1]);
123 }
124
125 @Test
126 public void testSetSortDice() {
127 int[][] dice;
128 board.setSortDice(true);
129 board.parseFibsBoard(fibsBoard0);
130 dice = board.getDice();
131 assertEquals(4, dice[0][0]);
132 assertEquals(1, dice[0][1]);
133 board.parseFibsBoard(fibsBoard1);
134 dice = board.getDice();
135 assertEquals(6, dice[0][0]);
136 assertEquals(2, dice[0][1]);
137
138 board.setSortDice(false);
139 board.parseFibsBoard(fibsBoard0);
140 dice = board.getDice();
141 assertEquals(1, dice[0][0]);
142 assertEquals(4, dice[0][1]);
143 board.setSortDice(true);
144 dice = board.getDice();
145 assertEquals(4, dice[0][0]);
146 assertEquals(1, dice[0][1]);
147 board.parseFibsBoard(fibsBoard1);
148 dice = board.getDice();
149 assertEquals(6, dice[0][0]);
150 assertEquals(2, dice[0][1]);
151 board.parseFibsBoard(fibsBoard8);
152 dice = board.getDice();
153 assertEquals(6, dice[1][0]);
154 assertEquals(2, dice[1][1]);
155 board.setSortDice(false);
156 board.parseFibsBoard(fibsBoard8);
157 dice = board.getDice();
158 assertEquals(2, dice[1][0]);
159 assertEquals(6, dice[1][1]);
160 board.setSortDice(true);
161 assertEquals(6, dice[1][0]);
162 assertEquals(2, dice[1][1]);
163 }
164
165 @Test
166 public void testGetPoints() {
167 int i;
168 board.parseFibsBoard(fibsBoard0);
169 int[] points = board.getPoints();
170 int[] expected0 = new int[] { 0,3,3,2,1,3,1,0,0,0,0,0,0,0,0,0,0,0,0,-4,-3,-2,-1,-3,-2,0 };
171 for (i=0; i<expected0.length; i++) {
172 assertEquals(expected0[i], points[i]);
173 }
174 }
175
176 @Test
177 public void testGetBar() {
178 int[] bar;
179 board.parseFibsBoard(fibsBoard);
180 bar = board.getBar();
181 assertEquals(0, bar[0]);
182 assertEquals(0, bar[1]);
183 board.parseFibsBoard(fibsBoard2);
184 bar = board.getBar();
185 assertEquals(3, bar[0]);
186 assertEquals(4, bar[1]);
187 }
188
189 @Test
190 public void testGetHome() {
191 int[] home;
192 board.parseFibsBoard(fibsBoard);
193 home = board.getHome();
194 assertEquals(0, home[0]);
195 assertEquals(0, home[1]);
196 board.parseFibsBoard(fibsBoard2);
197 home = board.getHome();
198 assertEquals(1, home[0]);
199 assertEquals(2, home[1]);
200 }
201
202 @Test
203 public void testGetWasDoubled() {
204 boolean[] wd;
205
206 wd = board.getWasDoubled();
207 assertFalse(wd[0]);
208 assertFalse(wd[1]);
209 board.parseFibsBoard(fibsBoard3);
210 wd = board.getWasDoubled();
211 assertFalse(wd[0]);
212
213 }
214
215
216 @Test
217 public void testIsYouMayDouble() {
218 board.parseFibsBoard(fibsBoard);
219 assertTrue(board.isYouMayDouble());
220 board.parseFibsBoard(fibsBoard4);
221 assertFalse(board.isYouMayDouble());
222 assertTrue(board.isOpponentMayDouble());
223 }
224
225 @Test
226 public void testIsYouPlaying() {
227 board.parseFibsBoard(fibsBoard);
228 assertTrue(board.isYouPlaying());
229 board.parseFibsBoard(fibsBoard5);
230 assertFalse(board.isYouPlaying());
231 }
232
233 @Test
234 public void testIsYourMove() {
235 board.parseFibsBoard(fibsBoard);
236 assertTrue(board.isYourMove());
237 board.parseFibsBoard(fibsBoard6);
238 assertFalse(board.isYourMove());
239 }
240
241 @Test
242 public void testPlayerName() {
243 board.parseFibsBoard(fibsBoard);
244 String[] p = board.getPlayerName();
245 assertEquals("You", p[0]);
246 assertEquals("someplayer", p[1]);
247 board.parseFibsBoard(fibsBoard5);
248 p = board.getPlayerName();
249 assertEquals("blitzxz", p[0]);
250 assertEquals("blotsalot", p[1]);
251
252 board.setPlayerName(0, "Testx");
253 assertEquals("Testx", board.getPlayerName()[0]);
254 board.setPlayerName(1, "Testz");
255 assertEquals("Testz", board.getPlayerName()[1]);
256 assertEquals("Testx", board.getPlayerName()[0]);
257 }
258
259 @Test
260 public void testXOFromName() {
261 board.parseFibsBoard(fibsBoard);
262 assertEquals(Board.O, board.getXOFromName("You"));
263 assertEquals(Board.X, board.getXOFromName("someplayer"));
264 assertEquals(Board.XOnot, board.getXOFromName("nobody"));
265 }
266
267 @Test
268 public void testDirectionFromName() {
269 board.parseFibsBoard(fibsBoard);
270 assertEquals(-1, board.getDirectionFromName("You"));
271 assertEquals(1, board.getDirectionFromName("someplayer"));
272 }
273
274 @Test
275 public void testGetMatchLength() {
276 board.parseFibsBoard(fibsBoard);
277 assertEquals(3, board.getMatchLength());
278 board.parseFibsBoard(fibsBoard1);
279 assertEquals(35, board.getMatchLength());
280 }
281
282 @Test
283 public void testGetMatchScore() {
284 board.parseFibsBoard(fibsBoard);
285 int[] ms = board.getMatchScore();
286 assertEquals(0, ms[0]);
287 assertEquals(0, ms[1]);
288 board.parseFibsBoard(fibsBoard6);
289 ms = board.getMatchScore();
290 assertEquals(4, ms[0]);
291 assertEquals(1, ms[1]);
292 }
293
294
295 private boolean checkStartPositions() {
296 int[] p = board.getPoints();
297 for (int i=1; i<=24; i++) {
298 if (p[i] != initialPositions[i])
299 return(false);
300 }
301 return(true);
302 }
303 @Test
304 public void testSetStartPositions() {
305 board.parseFibsBoard(fibsBoard6);
306 assertFalse(checkStartPositions());
307 board.setStartPositions();
308 assertTrue(checkStartPositions());
309 }
310
311 @Test
312 public void testGetXO() {
313 board.parseFibsBoard(fibsBoard);
314 assertEquals(1, board.getXO());
315 }
316
317 private boolean isClearDice() {
318 int[][] d = board.getDice();
319 if (d[0][0] != 0
320 || d[0][1] != 0
321 || d[1][0] != 0
322 || d[1][1] != 0)
323 return(false);
324 return(true);
325 }
326 @Test
327 public void testClearDice() {
328 board.parseFibsBoard(fibsBoard);
329 assertFalse(isClearDice());
330 board.clearDice();
331 assertTrue(isClearDice());
332 }
333
334 @Test
335 public void testGetWhosTurn() {
336 board = new Board();
337 assertEquals(0, board.getWhosTurn());
338 board.parseFibsBoard(fibsBoard);
339 assertEquals(1, board.getWhosTurn());
340 board.parseFibsBoard(fibsBoard1);
341 assertEquals(-1, board.getWhosTurn());
342 }
343
344 @Test
345 public void testGetCube() {
346 board.parseFibsBoard(fibsBoard);
347 assertEquals(1, board.getCube());
348 board.parseFibsBoard(fibsBoard5);
349 assertEquals(2, board.getCube());
350 }
351
352 @Test
353 public void testGetHasCube() {
354 board.parseFibsBoard(fibsBoard);
355 assertEquals(-1, board.getHasCube());
356 board.parseFibsBoard(fibsBoard5);
357 assertEquals(1, board.getHasCube());
358 }
359
360 @Test
361 public void testGetDirection() {
362 board.parseFibsBoard(fibsBoard);
363 assertEquals(-1, board.getDirection());
364 }
365 @Test
366 public void testSetAcceptDeclineDouble() {
367
368 assertFalse(board.isAcceptDeclineDouble());
369 board.setAcceptDeclineDouble();
370 assertTrue(board.isAcceptDeclineDouble());
371 }
372
373 @Test
374 public void testIsAcceptDeclineDouble() {
375
376 assertFalse(board.isAcceptDeclineDouble());
377 board.setAcceptDeclineDouble();
378 assertTrue(board.isAcceptDeclineDouble());
379 }
380
381 @Test
382 public void testIsYourTurnToRollOrDouble() {
383
384 assertFalse(board.isYourTurnToRollOrDouble());
385 board.setYourTurnToRollOrDouble(true);
386 assertTrue(board.isYourTurnToRollOrDouble());
387 board.setYourTurnToRollOrDouble(false);
388 assertFalse(board.isYourTurnToRollOrDouble());
389 }
390
391 @Test
392 public void testSetYourTurnToRollOrDouble() {
393
394 assertFalse(board.isYourTurnToRollOrDouble());
395 board.setYourTurnToRollOrDouble(true);
396 assertTrue(board.isYourTurnToRollOrDouble());
397 board.setYourTurnToRollOrDouble(false);
398 assertFalse(board.isYourTurnToRollOrDouble());
399 }
400
401 @Test
402 public void testIsAcceptDeclineResign() {
403 board.setAcceptDeclineResign(false);
404 assertFalse(board.isAcceptDeclineResign());
405 board.setAcceptDeclineResign(true);
406 assertTrue(board.isAcceptDeclineResign());
407
408 }
409
410 @Test
411 public void testWhoIsResigning() {
412 board.setWhoIsResigning(0);
413 assertEquals(0, board.getWhoIsResigning());
414 board.setWhoIsResigning(1);
415 assertEquals(1, board.getWhoIsResigning());
416 }
417
418 @Test
419 public void testResigningPoints() {
420 board.setResigningPoints(2);
421 assertEquals(2, board.getResigningPoints());
422 board.setResigningPoints(3);
423 assertEquals(3, board.getResigningPoints());
424 }
425
426 @Test
427 public void testOnMatchOver() {
428 board.onMatchOver("Betty", "5-1");
429 int[] ms = board.getMatchScore();
430 assertEquals(1, ms[0]);
431 assertEquals(5, ms[1]);
432 board.onMatchOver("You", "3-2");
433 ms = board.getMatchScore();
434 assertEquals(3, ms[0]);
435 assertEquals(2, ms[1]);
436 }
437
438 @Test
439 public void testGetPipCount() {
440 board.parseFibsBoard(fibsBoard);
441 int[] pc = board.getPipCount();
442 assertEquals(167, pc[0]);
443 assertEquals(167, pc[1]);
444 }
445
446 @Test
447 public void testIsRace() {
448 board.parseFibsBoard(fibsBoard);
449 assertFalse(board.isRace());
450 board.parseFibsBoard(fibsBoard2);
451 assertFalse(board.isRace());
452 board.parseFibsBoard(fibsBoard6);
453 assertFalse(board.isRace());
454 board.parseFibsBoard(fibsBoard7);
455 assertTrue(board.isRace());
456 board.parseFibsBoard(fibsBoardR0);
457 assertFalse(board.isRace());
458 board.parseFibsBoard(fibsBoardR1);
459 assertFalse(board.isRace());
460 }
461
462 @Test
463 public void testClone() {
464 Board b = new Board();
465 b.parseFibsBoard(fibsBoard);
466 Board b2 = b.clone();
467 assertEquals(b.getXO(), b2.getXO());
468 assertEquals(b.getMatchLength(), b2.getMatchLength());
469 assertEquals(b.getMatchScore()[0], b2.getMatchScore()[0]);
470 assertEquals(b.getMatchScore()[1], b2.getMatchScore()[1]);
471 assertEquals(b.getDice()[0][0], b2.getDice()[0][0]);
472 assertEquals(b.getDice()[0][1], b2.getDice()[0][1]);
473 assertEquals(b.getDice()[1][0], b2.getDice()[1][0]);
474 assertEquals(b.getDice()[1][1], b2.getDice()[1][1]);
475 assertNotSame(b.getDice(), b2.getDice());
476 assertEquals(b.getDirection(), b2.getDirection());
477 assertEquals(b.getPlayerName()[0], b2.getPlayerName()[0]);
478 assertEquals(b.getPlayerName()[1], b2.getPlayerName()[1]);
479 for (int i=0; i<26; i++)
480 assertEquals(b.getPoints()[i], b2.getPoints()[i]);
481 assertEquals(b.getBar()[0], b2.getBar()[0]);
482 assertEquals(b.getBar()[1], b2.getBar()[1]);
483 assertEquals(b.getHome()[0], b2.getHome()[0]);
484 assertEquals(b.getHome()[1], b2.getHome()[1]);
485 assertEquals(b.getWhosTurn(), b2.getWhosTurn());
486 assertEquals(b.getCube(), b2.getCube());
487 assertEquals(b.getHasCube(), b2.getHasCube());
488 assertEquals(b.isYouMayDouble(), b2.isYouMayDouble());
489 assertEquals(b.isAcceptDeclineDouble(), b2.isAcceptDeclineDouble());
490 assertEquals(b.isAcceptDeclineResign(), b2.isAcceptDeclineResign());
491 assertEquals(b.isOpponentMayDouble(), b2.isOpponentMayDouble());
492 assertEquals(b.isRace(), b2.isRace());
493 assertEquals(b.isYouMayDouble(), b2.isYouMayDouble());
494 assertEquals(b.isYouPlaying(), b2.isYouPlaying());
495 assertEquals(b.isYourMove(), b2.isYourMove());
496 assertEquals(b.isYourTurnToRollOrDouble(), b2.isYourTurnToRollOrDouble());
497 }
498 }