Made command system and DFS usage more intuitive.

This commit is contained in:
2020-05-11 12:48:16 -05:00
parent 73adefdc7f
commit 19552f1a2b
11 changed files with 107 additions and 120 deletions

View File

@@ -15,7 +15,6 @@ import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.TestInstance.Lifecycle;
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Point2;
import ca.recrown.islandsurvivalcraft.utilities.pathfinding.CoordinateTargetValidatable;
import ca.recrown.islandsurvivalcraft.utilities.pathfinding.CoordinateValidatable;
/**
@@ -24,7 +23,7 @@ import ca.recrown.islandsurvivalcraft.utilities.pathfinding.CoordinateValidatabl
@TestInstance(Lifecycle.PER_CLASS)
public class DepthFirstSearchTest {
private class Validator implements CoordinateValidatable, CoordinateTargetValidatable {
private class Validator implements CoordinateValidatable {
private byte[][] map;
public Validator(byte[][] map) {
@@ -39,15 +38,24 @@ public class DepthFirstSearchTest {
return false;
}
}
}
private class TargetValidator implements CoordinateValidatable {
private byte[][] map;
public TargetValidator(byte[][] map) {
this.map = map;
}
@Override
public boolean isCoordinateTarget(Point2 point) {
public boolean validate(Point2 point) {
try {
return map[point.y][point.x] == 2;
} catch (IndexOutOfBoundsException e) {
return false;
}
}
}
private byte[][] mapA;
@@ -139,7 +147,8 @@ public class DepthFirstSearchTest {
public void testDFSFindEndNodeMapBValid() {
DepthFirstSearch dfs = new DepthFirstSearch(new Point2(3, 0), new Point2(0, 0));
Validator validator = new Validator(mapB);
dfs.buildToGoal(validator, validator);
TargetValidator targetValidator = new TargetValidator(mapB);
dfs.buildToGoal(validator, targetValidator);
assertTrue(dfs.getResult() != null);
assertEquals(1, dfs.getResult().x);
assertEquals(2, dfs.getResult().y);
@@ -148,8 +157,9 @@ public class DepthFirstSearchTest {
@Test
public void testDFSFindEndNodeMapDValid() {
Validator validator = new Validator(mapD);
TargetValidator targetValidator = new TargetValidator(mapD);
DepthFirstSearch dfs = new DepthFirstSearch(new Point2(0, 0), new Point2(0, 0));
dfs.buildToGoal(validator, validator);
dfs.buildToGoal(validator, targetValidator);
assertTrue(dfs.getResult() != null);
assertEquals(0, dfs.getResult().x);
assertEquals(3, dfs.getResult().y);
@@ -158,8 +168,9 @@ public class DepthFirstSearchTest {
@Test
public void testDFSFindEndNodeMapHValid() {
Validator validator = new Validator(mapH);
TargetValidator targetValidator = new TargetValidator(mapH);
DepthFirstSearch dfs = new DepthFirstSearch(new Point2(3, 0), new Point2(0, 0));
dfs.buildToGoal(validator, validator);
dfs.buildToGoal(validator, targetValidator);
assertTrue(dfs.getResult() != null);
assertEquals(95, dfs.getResult().x);
@@ -169,8 +180,9 @@ public class DepthFirstSearchTest {
@Test
public void testDFSFindEndNodeMapHInvalidLimited() {
Validator validator = new Validator(mapH);
TargetValidator targetValidator = new TargetValidator(mapH);
DepthFirstSearch dfs = new DepthFirstSearch(new Point2(3, 0), new Point2(0, 0), null, 128);
dfs.buildToGoal(validator, validator);
dfs.buildToGoal(validator, targetValidator);
assertFalse(dfs.getResult() != null);
}
@@ -178,16 +190,18 @@ public class DepthFirstSearchTest {
@Test
public void testDFSFindEndNodeMapEInvalid() {
Validator validator = new Validator(mapE);
TargetValidator targetValidator = new TargetValidator(mapE);
DepthFirstSearch dfs = new DepthFirstSearch(new Point2(0, 0), new Point2(0, 0), null, 128);
dfs.buildToGoal(validator, validator);
dfs.buildToGoal(validator, targetValidator);
assertFalse(dfs.getResult() != null);
}
@Test
public void testDFSFindEndNodeMapFValid() {
Validator validator = new Validator(mapF);
TargetValidator targetValidator = new TargetValidator(mapF);
DepthFirstSearch dfs = new DepthFirstSearch(new Point2(0, 0), new Point2(0, 0), null, 1024);
dfs.buildToGoal(validator, validator);
dfs.buildToGoal(validator, targetValidator);
assertTrue(dfs.getResult() != null);
assertEquals(26, dfs.getResult().x);
assertEquals(32, dfs.getResult().y);
@@ -196,16 +210,18 @@ public class DepthFirstSearchTest {
@Test
public void testDFSFindEndNodeMapGInvalid() {
Validator validator = new Validator(mapG);
TargetValidator targetValidator = new TargetValidator(mapG);
DepthFirstSearch dfs = new DepthFirstSearch(new Point2(0, 0), new Point2(0, 0), null, 128);
dfs.buildToGoal(validator, validator);
dfs.buildToGoal(validator, targetValidator);
assertFalse(dfs.getResult() != null);
}
@Test
public void testDFSFindEndNodeMapHWithAssistValid() {
Validator validator = new Validator(mapH);
TargetValidator targetValidator = new TargetValidator(mapH);
DepthFirstSearch dfs = new DepthFirstSearch(new Point2(3, 0), new Point2(95, 49), null, 0);
dfs.buildToGoal(validator, validator);
dfs.buildToGoal(validator, targetValidator);
assertTrue(dfs.getResult() != null);
assertEquals(95, dfs.getResult().x);
assertEquals(49, dfs.getResult().y);
@@ -214,8 +230,9 @@ public class DepthFirstSearchTest {
@Test
public void testDFSFindEndNodeMapHWithoutAssistValid() {
Validator validator = new Validator(mapH);
TargetValidator targetValidator = new TargetValidator(mapH);
DepthFirstSearch dfs = new DepthFirstSearch(new Point2(3, 0), new Point2(0, 0), null, 0);
dfs.buildToGoal(validator, validator);
dfs.buildToGoal(validator, targetValidator);
assertTrue(dfs.getResult() != null);
assertEquals(95, dfs.getResult().x);
assertEquals(49, dfs.getResult().y);