UNPKG

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.

165 lines (150 loc) 3.83 kB
'use strict'; describe('Service: TreeNodeItemProperty', function () { // load the service's module beforeEach(() => angular.mock.module('editorApp')); // instantiate service let TreeNodeItemProperty; beforeEach(() => inject(function (_TreeNodeItemProperty_) { TreeNodeItemProperty = _TreeNodeItemProperty_; })); it('isSet should return true if properties object contains the specified property', function () { let item = { properties: { prop1: 'value1' } }; let res = TreeNodeItemProperty.isSet(item, 'prop1'); expect(res).toBe(true); }); it('isSet should return false if properties object contains the specified property', function () { let item = { properties: { prop1: 'value1' } }; let res = TreeNodeItemProperty.isSet(item, 'prop1XX'); expect(res).toBe(false); }); it('value should return default value for unset property', function () { let item = { properties: { propXX: 'value1' }, $meta: { desc: { properties: [{ name: 'prop1', default: 'def1' }] } } }; let res = TreeNodeItemProperty.value(item, 'prop1'); expect(res).toBe('def1'); }); it('value should return value for set property', function () { let item = { properties: { prop1: 'value1' }, $meta: { desc: { properties: [{ name: 'prop1', default: 'def1' }] } } }; let res = TreeNodeItemProperty.value(item, 'prop1'); expect(res).toBe('value1'); }); it('value should set value for unset property', function () { let item = { $meta: { desc: { properties: [{ name: 'prop1', default: 'def1', type: 'string' }] } } }; TreeNodeItemProperty.value(item, 'prop1', 'newValue1'); expect(item.properties.prop1).toBe('newValue1'); }); it('value should set value for set property', function () { let item = { properties: { prop1: 'value1' }, $meta: { desc: { properties: [ { name: 'prop1', type: 'string' } ] } } }; TreeNodeItemProperty.value(item, 'prop1', 'newValue1'); expect(item.properties.prop1).toBe('newValue1'); }); it('reset should remove property and also remove properties obj if empty', function () { let item = { properties: { prop1: 'value1' } }; TreeNodeItemProperty.reset(item, 'prop1'); expect(item.properties).not.toBeDefined(); }); it('reset should remove property and not remove properties obj if not empty', function () { let item = { properties: { prop1: 'value1', prop2: 'value2' } }; TreeNodeItemProperty.reset(item, 'prop1'); expect(item.properties).toBeDefined(); expect(item.properties.prop1).not.toBeDefined(); }); it('desc should return desc obj', function () { let item = { properties: { prop1: 'value1' }, $meta: { desc: { properties: [{ name: 'prop1', default: 'def1' }] } } }; var res = TreeNodeItemProperty.desc(item, 'prop1'); expect(res).toBe(item.$meta.desc.properties[0]); }); it('default should return default property value', function () { let item = { properties: { prop1: 'value1' }, $meta: { desc: { properties: [{ name: 'prop1', default: 'def1' }] } } }; var res = TreeNodeItemProperty.default(item, 'prop1'); expect(res).toBe('def1'); }); });