Skip to content

Commit 9376b93

Browse files
committed
Adding two more tests for state saving
1 parent dec45d1 commit 9376b93

File tree

2 files changed

+50
-0
lines changed

2 files changed

+50
-0
lines changed

Diff for: test/Node/SelectorNodeTest.ts

+25
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,28 @@ test("fails when all children fail", async (assert) => {
8282
mockChild1.verify((m) => m.tick(time), TypeMoq.Times.once());
8383
mockChild2.verify((m) => m.tick(time), TypeMoq.Times.once());
8484
});
85+
86+
test("only evaluates the current node", async (assert) => {
87+
init();
88+
const time = new TimeData();
89+
const mockChild1 = TypeMoq.Mock.ofType<BehaviorTreeNodeInterface>();
90+
mockChild1.setup(async (m) => await m.tick(time))
91+
.returns(() => Promise.resolve(BehaviorTreeStatus.Failure));
92+
const mockChild2 = TypeMoq.Mock.ofType<BehaviorTreeNodeInterface>();
93+
mockChild2.setup(async (m) => await m.tick(time))
94+
.returns(() => Promise.resolve(BehaviorTreeStatus.Running));
95+
const mockChild3 = TypeMoq.Mock.ofType<BehaviorTreeNodeInterface>();
96+
mockChild3.setup(async (m) => await m.tick(time))
97+
.returns(() => Promise.resolve(BehaviorTreeStatus.Success));
98+
99+
testObject.addChild(mockChild1.object);
100+
testObject.addChild(mockChild2.object);
101+
testObject.addChild(mockChild3.object);
102+
103+
assert.is(BehaviorTreeStatus.Running, await testObject.tick(time));
104+
assert.is(BehaviorTreeStatus.Running, await testObject.tick(time));
105+
106+
mockChild1.verify((m) => m.tick(time), TypeMoq.Times.once());
107+
mockChild2.verify((m) => m.tick(time), TypeMoq.Times.exactly(2));
108+
mockChild3.verify((m) => m.tick(time), TypeMoq.Times.never());
109+
});

Diff for: test/Node/SequenceNodeTest.ts

+25
Original file line numberDiff line numberDiff line change
@@ -89,3 +89,28 @@ test("when second child fails, then entire sequence fails", async (assert) => {
8989
mockChild1.verify((m) => m.tick(time), TypeMoq.Times.once());
9090
mockChild2.verify((m) => m.tick(time), TypeMoq.Times.once());
9191
});
92+
93+
test("only evaluates the current node", async (assert) => {
94+
init();
95+
const time = new TimeData();
96+
const mockChild1 = TypeMoq.Mock.ofType<BehaviorTreeNodeInterface>();
97+
mockChild1.setup(async (m) => await m.tick(time))
98+
.returns(() => Promise.resolve(BehaviorTreeStatus.Success));
99+
const mockChild2 = TypeMoq.Mock.ofType<BehaviorTreeNodeInterface>();
100+
mockChild2.setup(async (m) => await m.tick(time))
101+
.returns(() => Promise.resolve(BehaviorTreeStatus.Running));
102+
const mockChild3 = TypeMoq.Mock.ofType<BehaviorTreeNodeInterface>();
103+
mockChild3.setup(async (m) => await m.tick(time))
104+
.returns(() => Promise.resolve(BehaviorTreeStatus.Failure));
105+
106+
testObject.addChild(mockChild1.object);
107+
testObject.addChild(mockChild2.object);
108+
testObject.addChild(mockChild3.object);
109+
110+
assert.is(BehaviorTreeStatus.Running, await testObject.tick(time));
111+
assert.is(BehaviorTreeStatus.Running, await testObject.tick(time));
112+
113+
mockChild1.verify((m) => m.tick(time), TypeMoq.Times.once());
114+
mockChild2.verify((m) => m.tick(time), TypeMoq.Times.exactly(2));
115+
mockChild3.verify((m) => m.tick(time), TypeMoq.Times.never());
116+
});

0 commit comments

Comments
 (0)