1
+ package com .andlvovsky .lines .BoardAnalyzer ;
2
+
3
+ import com .andlvovsky .lines .analyzer .BoardAnalyzer ;
4
+ import com .andlvovsky .lines .board .Board ;
5
+ import com .andlvovsky .lines .game .Move ;
6
+ import com .andlvovsky .lines .meta .Colors ;
7
+ import com .andlvovsky .lines .testutil .BoardParser ;
8
+
9
+ import org .junit .Test ;
10
+
11
+ import static com .andlvovsky .lines .analyzer .BoardAnalyzer .isValidMove ;
12
+ import static org .junit .Assert .assertEquals ;
13
+ import static org .junit .Assert .assertFalse ;
14
+ import static org .junit .Assert .assertTrue ;
15
+
16
+ public class BoardAnalyzerTest {
17
+ private String nonColorBoardRepresentation =
18
+ "o...oooo." +
19
+ "...o.oo.." +
20
+ "..o...o.." +
21
+ "oo.....o." +
22
+ "...o...o." +
23
+ "..o..o..." +
24
+ "ooo..o..." +
25
+ "..o...o.." +
26
+ "o.o..o..." ;
27
+ private Board nonColorBoard = BoardParser .fromString (nonColorBoardRepresentation );
28
+
29
+ @ Test
30
+ public void recognizeValidMoves () {
31
+ assertTrue (isValidMove (nonColorBoard , new Move (0 , 0 , 0 , 1 )));
32
+ assertTrue (isValidMove (nonColorBoard , new Move (0 , 0 , 2 , 0 )));
33
+ assertTrue (isValidMove (nonColorBoard , new Move (6 , 1 , 8 , 8 )));
34
+ assertTrue (isValidMove (nonColorBoard , new Move (8 , 5 , 0 , 8 )));
35
+ assertTrue (isValidMove (nonColorBoard , new Move (4 , 3 , 3 , 5 )));
36
+ }
37
+
38
+ @ Test
39
+ public void recognizeInvalidMovesWhenNoPath () {
40
+ assertFalse (isValidMove (nonColorBoard , new Move (0 , 0 , 3 , 4 )));
41
+ assertFalse (isValidMove (nonColorBoard , new Move (8 , 0 , 4 , 5 )));
42
+ assertFalse (isValidMove (nonColorBoard , new Move (0 , 0 , 7 , 0 )));
43
+ }
44
+
45
+ @ Test
46
+ public void recognizeInvalidMovesOtherCases () {
47
+ assertFalse (isValidMove (nonColorBoard , new Move (0 , 0 , 0 , 4 )));
48
+ assertFalse (isValidMove (nonColorBoard , new Move (0 , 1 , 0 , 4 )));
49
+ assertFalse (isValidMove (nonColorBoard , new Move (0 , 1 , 1 , 1 )));
50
+ assertFalse (isValidMove (nonColorBoard , new Move (0 , 1 , -5 , 1 )));
51
+ assertFalse (isValidMove (nonColorBoard , new Move (10 , 1 , 5 , 1 )));
52
+ }
53
+
54
+ @ Test
55
+ public void removeBallsHorizontal () {
56
+ Board board = new Board ();
57
+ for (int i = 0 ; i < 6 ; i ++)
58
+ board .addBall (i + 1 , 2 , Colors .BALLS .get (0 ));
59
+ BoardAnalyzer .removeBallsAndCalculateAddingScore (board );
60
+ assertEquals (81 , BoardAnalyzer .countEmptyCells (board ));
61
+ }
62
+
63
+ @ Test
64
+ public void removeBallsVertical () {
65
+ Board board = new Board ();
66
+ for (int i = 0 ; i < 5 ; i ++)
67
+ board .addBall (1 , i + 2 , Colors .BALLS .get (0 ));
68
+ BoardAnalyzer .removeBallsAndCalculateAddingScore (board );
69
+ assertEquals (81 , BoardAnalyzer .countEmptyCells (board ));
70
+ }
71
+
72
+ @ Test
73
+ public void removeBallsMainDiagonal () {
74
+ Board board = new Board ();
75
+ for (int i = 0 ; i < 6 ; i ++)
76
+ board .addBall (i + 1 , i + 2 , Colors .BALLS .get (0 ));
77
+ BoardAnalyzer .removeBallsAndCalculateAddingScore (board );
78
+ assertEquals (81 , BoardAnalyzer .countEmptyCells (board ));
79
+ }
80
+
81
+ @ Test
82
+ public void removeBallsAntiDiagonal () {
83
+ Board board = new Board ();
84
+ for (int i = 0 ; i < 5 ; i ++)
85
+ board .addBall (i + 1 , 7 - i , Colors .BALLS .get (0 ));
86
+ BoardAnalyzer .removeBallsAndCalculateAddingScore (board );
87
+ assertEquals (81 , BoardAnalyzer .countEmptyCells (board ));
88
+ }
89
+
90
+ @ Test
91
+ public void notRemoveBallsSmallSequence () {
92
+ Board board = new Board ();
93
+ for (int i = 0 ; i < 4 ; i ++)
94
+ board .addBall (i + 2 , 2 , Colors .BALLS .get (0 ));
95
+ BoardAnalyzer .removeBallsAndCalculateAddingScore (board );
96
+ assertEquals (77 , BoardAnalyzer .countEmptyCells (board ));
97
+ }
98
+
99
+ @ Test
100
+ public void notRemoveBallsNotSequence () {
101
+ Board board = new Board ();
102
+ board .addBall (0 , 0 , Colors .BALLS .get (0 ));
103
+ board .addBall (4 , 5 , Colors .BALLS .get (0 ));
104
+ board .addBall (8 , 3 , Colors .BALLS .get (0 ));
105
+ board .addBall (2 , 2 , Colors .BALLS .get (0 ));
106
+ board .addBall (7 , 1 , Colors .BALLS .get (0 ));
107
+ BoardAnalyzer .removeBallsAndCalculateAddingScore (board );
108
+ assertEquals (76 , BoardAnalyzer .countEmptyCells (board ));
109
+ }
110
+ }
0 commit comments