summaryrefslogtreecommitdiffstats
path: root/core/test/ch/asynk/tankontank/BoardUtils.java
blob: cea97ff9e183d333659cfe27014bbc3f378c0000 (plain)
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
package ch.asynk.tankontank;

import java.util.List;
import java.util.Vector;

import org.junit.Test;
import org.junit.Before;

import ch.asynk.tankontank.engine.SearchBoard;

import static org.junit.Assert.assertTrue;

public class BoardUtils
{
    private SearchBoard sb;

    @Before
    public void initialize()
    {
        int cols = 10;
        int rows = 9;
        Helpers.FakeBoard fakeBoard = new Helpers.FakeBoard(cols, rows);
        sb = new SearchBoard(fakeBoard, cols, rows);
    }

    @Test
    public void testPaths()
    {
        Helpers.FakePawn p = new Helpers.FakePawn(3);
        List<Vector<SearchBoard.Node>> paths = sb.possiblePaths(p, 2, 2, 4, 3);

        assertTrue(paths.size() == 8);

        for(Vector<SearchBoard.Node> path : paths) {

            assertTrue((path.size() == 3) || (path.size() == 4));
            SearchBoard.Node n = path.get(0);
            assertTrue(n.col == 4);
            assertTrue(n.row == 3);
            n = path.get(path.size() - 1);
            assertTrue(n.col == 2);
            assertTrue(n.row == 2);

            int i = 1;
            if (path.size() == 3) {
                n = path.get(i);
                assertTrue(n.col == 3);
                assertTrue((n.row == 3) || (n.row == 2));
            } else {
                n = path.get(i);
                if (n.col == 2) {
                    i += 1;
                    if (n.row == 1) {
                        n = path.get(i);
                        assert(n.col == 3);
                        assert(n.row == 2);
                    } else {
                        assert(n.col == 3);
                        n = path.get(i);
                        assert(n.col == 2);
                        assert(n.row == 3);
                    }
                } else if (n.col == 3) {
                    i += 1;
                    if (n.row == 2) {
                        n = path.get(i);
                        if (n.col == 2)
                            assert(n.row == 1);
                        else {
                            assert(n.col == 3);
                            assert(n.row == 3);
                        }
                    } else {
                        assert(n.col == 3);
                        n = path.get(i);
                        if (n.col == 2)
                            assert(n.row == 3);
                        else {
                            assert(n.col == 3);
                            assert(n.row == 2);
                        }
                    }
                } else {
                    i += 1;
                    assertTrue(n.col == 4);
                    if (n.row == 4) {
                        n = path.get(i);
                        assert(n.col == 3);
                        assert(n.row == 3);
                    } else {
                        assert(n.row == 2);
                        n = path.get(i);
                        assert(n.col == 3);
                        assert(n.row == 2);
                    }
                }
            }
        }
    }

    @Test
    public void testDistance()
    {

        assertTrue(sb.distance(6, 4, 6, 4) == 0);
        assertTrue(sb.distance(6, 4, 5, 4) == 1);
        assertTrue(sb.distance(6, 4, 6, 5) == 1);
        assertTrue(sb.distance(6, 4, 7, 5) == 1);
        assertTrue(sb.distance(6, 4, 7, 4) == 1);
        assertTrue(sb.distance(6, 4, 6, 3) == 1);
        assertTrue(sb.distance(6, 4, 5, 3) == 1);
        assertTrue(sb.distance(6, 4, 4, 4) == 2);
        assertTrue(sb.distance(6, 4, 5, 5) == 2);
        assertTrue(sb.distance(6, 4, 6, 6) == 2);
        assertTrue(sb.distance(6, 4, 7, 6) == 2);
        assertTrue(sb.distance(6, 4, 8, 6) == 2);
        assertTrue(sb.distance(6, 4, 8, 5) == 2);
        assertTrue(sb.distance(6, 4, 8, 4) == 2);
        assertTrue(sb.distance(6, 4, 7, 3) == 2);
        assertTrue(sb.distance(6, 4, 6, 2) == 2);
        assertTrue(sb.distance(6, 4, 5, 2) == 2);
        assertTrue(sb.distance(6, 4, 4, 2) == 2);
        assertTrue(sb.distance(6, 4, 4, 3) == 2);

        assertTrue(sb.distance(6, 4, 9, 7) == 3);
        assertTrue(sb.distance(6, 4, 10, 8) == 4);
        assertTrue(sb.distance(6, 4, 6, 1) == 3);
        assertTrue(sb.distance(6, 4, 9, 6) == 3);
        assertTrue(sb.distance(6, 4, 9, 5) == 3);
        assertTrue(sb.distance(6, 4, 10, 6) == 4);
        assertTrue(sb.distance(6, 4, 3, 1) == 3);
        assertTrue(sb.distance(6, 4, 2, 0) == 4);

        assertTrue(sb.distance(6, 4, 9, 4) == 3);
        assertTrue(sb.distance(6, 4, 8, 4) == 2);
        assertTrue(sb.distance(6, 4, 9, 5) == 3);
        assertTrue(sb.distance(6, 4, 10, 5) == 4);
        assertTrue(sb.distance(6, 4, 10, 4) == 4);
        assertTrue(sb.distance(6, 4, 9, 3) == 4);
        assertTrue(sb.distance(6, 4, 8, 3) == 3);

        assertTrue(sb.distance(6, 4, 8, 2) == 4);
        assertTrue(sb.distance(6, 4, 7, 2) == 3);
        assertTrue(sb.distance(6, 4, 8, 3) == 3);
        assertTrue(sb.distance(6, 4, 9, 3) == 4);
        assertTrue(sb.distance(6, 4, 9, 2) == 5);
        assertTrue(sb.distance(6, 4, 8, 1) == 5);
        assertTrue(sb.distance(6, 4, 7, 1) == 4);

        assertTrue(sb.distance(6, 4, 2, 2) == 4);
        assertTrue(sb.distance(6, 4, 1, 2) == 5);
        assertTrue(sb.distance(6, 4, 2, 3) == 4);
        assertTrue(sb.distance(6, 4, 3, 3) == 3);
        assertTrue(sb.distance(6, 4, 3, 2) == 3);
        assertTrue(sb.distance(6, 4, 2, 1) == 4);
        assertTrue(sb.distance(6, 4, 1, 1) == 5);

        assertTrue(sb.distance(6, 4, 5, 7) == 4);
        assertTrue(sb.distance(6, 4, 4, 7) == 5);
        assertTrue(sb.distance(6, 4, 5, 8) == 5);
        assertTrue(sb.distance(6, 4, 6, 8) == 4);
        assertTrue(sb.distance(6, 4, 6, 7) == 3);
        assertTrue(sb.distance(6, 4, 5, 6) == 3);
        assertTrue(sb.distance(6, 4, 4, 6) == 4);

        assertTrue(sb.distance(6, 4, 8, 8) == 4);
        assertTrue(sb.distance(6, 4, 7, 8) == 4);
        assertTrue(sb.distance(6, 4, 8, 9) == 5);
        assertTrue(sb.distance(6, 4, 9, 9) == 5);
        assertTrue(sb.distance(6, 4, 9, 8) == 4);
        assertTrue(sb.distance(6, 4, 8, 7) == 3);
        assertTrue(sb.distance(6, 4, 7, 7) == 3);
    }

}