UNPKG

behaviortree

Version:

A JavaScript implementation of Behavior Trees. They are useful for implementing AIs. For Browsers and NodeJS.

50 lines (49 loc) 2.08 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-env jest */ const constants_1 = require("./constants"); const Decorator_1 = __importDefault(require("./Decorator")); const Task_1 = __importDefault(require("./Task")); describe('Decorator', () => { it('does nothing by itself', () => { const task = new Task_1.default({ run(blackboard) { return blackboard.result; } }); expect(task.run({ result: constants_1.SUCCESS })).toEqual(constants_1.SUCCESS); expect(task.run({ result: constants_1.FAILURE })).toEqual(constants_1.FAILURE); expect(task.run({ result: constants_1.RUNNING })).toEqual(constants_1.RUNNING); const decoratedTask = new Decorator_1.default({ node: task }); expect(decoratedTask.run({ result: constants_1.SUCCESS })).toEqual(constants_1.SUCCESS); expect(decoratedTask.run({ result: constants_1.FAILURE })).toEqual(constants_1.FAILURE); expect(decoratedTask.run({ result: constants_1.RUNNING })).toEqual(constants_1.RUNNING); }); it('can have a start and end callback', () => { const blackboard = { start: 0, end: 0, result: constants_1.RUNNING }; const task = new Task_1.default({ run(blackboard) { return blackboard.result; } }); const decoratedTask = new Decorator_1.default({ start: function (b) { ++b.start; }, end: function (b) { ++b.end; }, node: task }); decoratedTask.run(blackboard); expect(blackboard.start).toEqual(1); expect(blackboard.end).toEqual(0); blackboard.result = constants_1.FAILURE; decoratedTask.run(blackboard, { rerun: true }); expect(blackboard.start).toEqual(1); expect(blackboard.end).toEqual(1); }); });