Skip to content

Commit ae17d01

Browse files
committed
✅ assert that GOAP plan is in the correct order
1 parent 3205722 commit ae17d01

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

tests/goap.spec.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#include <string>
2+
13
#include "doctest.h"
24

35
#include "../include/aitoolkit/goap.hpp"
@@ -9,6 +11,7 @@ struct blackboard_type {
911
int food;
1012
int gold;
1113
int stone;
14+
std::string plan_order;
1215
};
1316

1417
bool operator==(const blackboard_type& a, const blackboard_type& b) {
@@ -48,6 +51,7 @@ class chop_wood final : public action<blackboard_type> {
4851

4952
virtual void apply_effects(blackboard_type& blackboard, bool dry_run) const override {
5053
blackboard.wood += 1;
54+
blackboard.plan_order += "W";
5155
}
5256
};
5357

@@ -67,6 +71,7 @@ class build_storage final : public action<blackboard_type> {
6771
virtual void apply_effects(blackboard_type& blackboard, bool dry_run) const override {
6872
blackboard.have_storage = true;
6973
blackboard.wood -= 10;
74+
blackboard.plan_order += "B";
7075
}
7176
};
7277

@@ -82,6 +87,7 @@ class gather_food final : public action<blackboard_type> {
8287

8388
virtual void apply_effects(blackboard_type& blackboard, bool dry_run) const override {
8489
blackboard.food += 1;
90+
blackboard.plan_order += "F";
8591
}
8692
};
8793

@@ -97,6 +103,7 @@ class mine_gold final : public action<blackboard_type> {
97103

98104
virtual void apply_effects(blackboard_type& blackboard, bool dry_run) const override {
99105
blackboard.gold += 1;
106+
blackboard.plan_order += "G";
100107
}
101108
};
102109

@@ -112,6 +119,7 @@ class mine_stone final : public action<blackboard_type> {
112119

113120
virtual void apply_effects(blackboard_type& blackboard, bool dry_run) const override {
114121
blackboard.stone += 1;
122+
blackboard.plan_order += "S";
115123
}
116124
};
117125

@@ -152,6 +160,7 @@ TEST_CASE("goap planning") {
152160
p.run_next(initial);
153161
}
154162
CHECK(initial == goal);
163+
CHECK(initial.plan_order.starts_with("WWWWWWWWWWB"));
155164
}
156165

157166
SUBCASE("planner fails to find a plan") {

0 commit comments

Comments
 (0)