Skip to content

Commit

Permalink
add running initial "unit-test" for GePlanner
Browse files Browse the repository at this point in the history
  • Loading branch information
svencc committed Sep 12, 2023
1 parent 3318e65 commit 7d98665
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 12 deletions.
9 changes: 6 additions & 3 deletions src/main/java/lib/gecom/GeAgent.java
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,12 @@ public void Update() {
final GeWorldStates agentsBelieves = GeWorld.getInstance().getWorldStates();
if (currentActionStack.isEmpty()) {
for (GeSubgoal subgoal : prioritizedSubgoals) {
currentActionStack.addAll(planner.plan(possibleActions, subgoal.getStatesToReach(), agentsBelieves));
currentGoal = subgoal;
break;
final Optional<Queue<GeAction>> plan = planner.plan(possibleActions, subgoal.getStatesToReach(), agentsBelieves);
if (plan.isPresent()) {
currentActionStack.addAll(plan.get());
currentGoal = subgoal;
break;
}
}
}

Expand Down
10 changes: 10 additions & 0 deletions src/main/java/lib/gecom/GeNullTarget.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,17 @@
package lib.gecom;

import lombok.NoArgsConstructor;
import lombok.NonNull;

import java.util.Optional;

@NoArgsConstructor
public class GeNullTarget implements GeTargetable {

@NonNull
@Override
public Optional<Object> getTargetPosition() {
return Optional.empty();
}

}
16 changes: 8 additions & 8 deletions src/main/java/lib/gecom/GePlanner.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@

import lombok.Getter;
import lombok.NonNull;
import org.springframework.lang.Nullable;

import java.util.*;
import java.util.stream.Collectors;

public class GePlanner {

//@TODO priority queue? compare by costs?
@NonNull
public Queue<GeAction> plan(
public Optional<Queue<GeAction>> plan(
@NonNull final List<GeAction> possibleActions,
@NonNull final HashMap<String, Integer> goal, // @TODO do we have state objects? what are those Maps?????
@NonNull final GeWorldStates worldStates
Expand All @@ -31,7 +31,7 @@ public Queue<GeAction> plan(
if (!success) {
System.out.println("No solution found!");
// @TODO throw exception? and log!
return null;
return Optional.empty();
}

// TODO look to dijkstra's algorithm.... for the following:
Expand All @@ -57,7 +57,7 @@ public Queue<GeAction> plan(
Collections.reverse(result); // TEST THAT

// could return a PriorityQueue with nodes; it is then sorted
return new LinkedList<GeAction>(result);
return Optional.of(new LinkedList<GeAction>(result));
}

private boolean buildGraph(
Expand Down Expand Up @@ -125,19 +125,19 @@ private List<GeAction> subsetOfActions(
//@TODO can we use our old node?
@Getter
public class GeNode {
@NonNull
@Nullable
public final GeNode parent;
@NonNull
public final HashMap<String, Integer> state;
@NonNull
@Nullable
public final GeAction action;
@NonNull
public Float cost;

public GeNode(
@NonNull final GeNode parent,
@Nullable final GeNode parent,
@NonNull final HashMap<String, Integer> state,
@NonNull final GeAction action,
@Nullable final GeAction action,
@NonNull final Float cost
) {
this.parent = parent;
Expand Down
9 changes: 8 additions & 1 deletion src/main/java/lib/gecom/GeTargetable.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
package lib.gecom;

import lombok.NonNull;

import java.util.Optional;

public interface GeTargetable {
Object getTargetPosition();

@NonNull
Optional<Object> getTargetPosition();

}
27 changes: 27 additions & 0 deletions src/test/java/lib/gecom/GePlannerTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package lib.gecom;

import lombok.NonNull;
import org.junit.jupiter.api.Test;

import java.util.*;

import static org.junit.jupiter.api.Assertions.assertTrue;

class GePlannerTest {

@Test
void plan() {
// Arrange
final GePlanner planner = new GePlanner();
@NonNull final List<GeAction> possibleActions = new ArrayList<>();
@NonNull final HashMap<String, Integer> goal = new HashMap<>();
@NonNull final GeWorldStates worldStates = new GeWorldStates();

// Act
final Optional<Queue<GeAction>> planToTest = planner.plan(possibleActions, goal, worldStates);

// Assert
assertTrue(planToTest.isEmpty());
}

}

0 comments on commit 7d98665

Please sign in to comment.