UNPKG

@skele/core

Version:

Core package of the Skele framework. Element definitions, registrations and traversal.

1 lines 3.01 kB
'use strict';var _immutable=require("immutable");var _Registry=_interopRequireWildcard(require("../Registry"));function _interopRequireWildcard(obj){if(obj&&obj.__esModule){return obj;}else{var newObj={};if(obj!=null){for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key)){var desc=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):{};if(desc.get||desc.set){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}}newObj.default=obj;return newObj;}}describe('adaptKey',function(){it('properly adapts keys',function(){expect((0,_Registry.adaptKey)(null)).toEqual(null);expect((0,_Registry.adaptKey)([])).toEqual([]);expect((0,_Registry.adaptKey)((0,_immutable.List)([]))).toEqual([]);expect((0,_Registry.adaptKey)(_immutable.List.of('one','two','three'))).toEqual(['one','two','three']);expect((0,_Registry.adaptKey)(_immutable.List.of('one','two','three','four','five','six','seven'))).toEqual(['one','two','three','four','five','six','seven']);});});describe('Registry',function(){var registry=new _Registry.default();afterEach(function(){return registry.reset();});it('can be created and used in key-value (map) fashion',function(){expect(registry.get('detective')).toEqual(undefined);registry.register('detective','Sherlock Holmes');expect(registry.get('detective')).toEqual('Sherlock Holmes');});it('allows arrays for keys',function(){registry.register(['a','b'],1);expect(registry.get('detective')).toBeUndefined();expect(registry.get(['a','c'])).toBeUndefined();expect(registry.get(['a','b'])).toEqual(1);});it('allows lists for keys; can be used interexchangeably with arrays',function(){registry.register(['a','b'],1);registry.register(_immutable.List.of('c','d'),2);expect(registry.get(_immutable.List.of('a','b'))).toEqual(1);expect(registry.get(_immutable.List.of('c','d'))).toEqual(2);expect(registry.get(['c','d'])).toEqual(2);});it('makes treats X and [X] equivalently',function(){registry.register('a',1);registry.register(['b'],2);expect(registry.get('a')).toEqual(1);expect(registry.get(['a'])).toEqual(1);expect(registry.get('b')).toEqual(2);expect(registry.get(['b'])).toEqual(2);});it('when using lists, performs lookups by lessening the specificity',function(){registry.register('a',1);registry.register(['a','b'],2);expect(registry.get('a')).toEqual(1);expect(registry.get(['a','b'])).toEqual(2);expect(registry.get(['a','c'])).toEqual(1);expect(registry.get(['a','c','b'])).toEqual(1);expect(registry.get(['a','b','c'])).toEqual(2);});it('it allows the empty list as a key, (effectively used as default value)',function(){registry.register([],-1);registry.register(['x'],1);expect(registry.get([])).toEqual(-1);expect(registry.get('xyz')).toEqual(-1);expect(registry.get('x')).toEqual(1);expect(registry.get(['x','y'])).toEqual(1);expect(registry.get(['y','x'])).toEqual(-1);});it('forgets older registrations',function(){registry.register('x',1);registry.register('x',2);expect(registry.get('x')).toEqual(2);});});