owl-bt
Version:
owl-bt is editor for Behavior trees. It has been inspired by Unreal engine behavior trees in a way, that it supports special node items like decorators and services. This makes trees smaller and much more readable.
95 lines (86 loc) • 2.09 kB
JavaScript
'use strict';
describe('Service: TreeNodeDtoConverter', function() {
// load the service's module
beforeEach(() => angular.mock.module('editorApp'));
// instantiate service
let TreeNodeDtoConverter;
beforeEach(() => inject(function(_TreeNodeDtoConverter_) {
TreeNodeDtoConverter = _TreeNodeDtoConverter_;
}));
it('convert should clone node and all its subnodes+subitems; convert all property collections and remove meta inf + remove empty arrays/properties', function() {
let node = {
type: 'sequence',
$meta: {
id: 1,
version: 1
},
properties: {},
decorators: [{
type: 'd1',
properties: {
prop1: 'value1',
prop2: 'value2'
}
}],
services: [{
type: 's1',
properties: {
prop1: 'value1',
prop2: 'value2'
}
}],
childNodes: [{
type: 'chn1',
$meta: {
id: 2,
version: 1
},
properties: {
prop1: 'value1',
prop2: 'value2'
},
decorators: [],
services: [],
childNodes: []
}]
};
let res = TreeNodeDtoConverter.convert(node);
expect(res).not.toBe(node);
expect(res.decorators[0]).not.toBe(node.decorators[0]);
expect(res.services[0]).not.toBe(node.services[0]);
expect(res.childNodes[0]).not.toBe(node.childNodes[0]);
expect(res).toEqual({
type: 'sequence',
decorators: [{
type: 'd1',
properties: [{
name: 'prop1',
value: 'value1'
}, {
name: 'prop2',
value: 'value2'
}]
}],
services: [{
type: 's1',
properties: [{
name: 'prop1',
value: 'value1'
}, {
name: 'prop2',
value: 'value2'
}]
}],
childNodes: [{
type: 'chn1',
properties: [{
name: 'prop1',
value: 'value1'
}, {
name: 'prop2',
value: 'value2'
}]
}]
});
});
});