behaviortree
Version:
A JavaScript implementation of Behavior Trees. They are useful for implementing AIs. For Browsers and NodeJS.
35 lines (34 loc) • 1.44 kB
JavaScript
;
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 InvertDecorator_1 = __importDefault(require("./InvertDecorator"));
const Task_1 = __importDefault(require("../Task"));
describe('InvertDecorator', () => {
const task = new Task_1.default({
run(blackboard) {
return blackboard.result;
}
});
let invertedTask;
beforeEach(() => {
invertedTask = new InvertDecorator_1.default({ node: task });
});
it('has a nodeType', () => {
expect(invertedTask.nodeType).toEqual('InvertDecorator');
});
it('inverts SUCCESS and FAILURES', () => {
expect(invertedTask.run({ result: constants_1.SUCCESS })).toEqual(constants_1.FAILURE);
expect(invertedTask.run({ result: constants_1.FAILURE })).toEqual(constants_1.SUCCESS);
});
it('does not change RUNNING responses', () => {
expect(invertedTask.run({ result: constants_1.RUNNING })).toEqual(constants_1.RUNNING);
});
it('does not change RUNNING response on Branch nodes', () => {
const result = { total: constants_1.RUNNING, state: [constants_1.FAILURE, constants_1.RUNNING] };
expect(invertedTask.run({ result })).toEqual(result);
});
});