| /* |
| * Utilities: A classic collection of JavaScript utilities |
| * Copyright 2112 Matthew Eernisse (mde@fleegix.org) |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| */ |
| var SortedCollection = require('../lib/sorted_collection').SortedCollection |
| , assert = require('assert') |
| , tests; |
| |
| tests = { |
| |
| 'test no default value': function () { |
| // Set up a collection, no default value for new items |
| var c = new SortedCollection(); |
| // Add some items |
| c.addItem('testA', 'AAAA'); |
| c.addItem('testB', 'BBBB'); |
| c.addItem('testC', 'CCCC'); |
| // Test count |
| assert.equal(3, c.count); |
| // Test getItem by string key |
| var item = c.getItem('testC'); |
| assert.equal('CCCC', item); |
| // Test getItem by index number |
| var item = c.getItem(1); |
| assert.equal('BBBB', item); |
| // Test setItem by string key |
| c.setItem('testA', 'aaaa'); |
| var item = c.getItem('testA'); |
| assert.equal('aaaa', item); |
| // Test setItem by index number |
| c.setItem(2, 'cccc'); |
| var item = c.getItem(2); |
| assert.equal('cccc', item); |
| } |
| |
| , 'test default value': function () { |
| // Set up a collection, default value for new items is 'foo' |
| var c = new SortedCollection('foo'); |
| // Add an item with no value -- should get |
| // default value |
| c.addItem('testA'); |
| // Add some items with empty/falsey values -- |
| // should be set to desired values |
| c.addItem('testB', null); |
| c.addItem('testC', false); |
| // Test getItem for default value |
| var item = c.getItem('testA'); |
| assert.equal('foo', item); |
| var item = c.getItem('testB'); |
| assert.equal(null, item); |
| var item = c.getItem('testC'); |
| assert.equal(false, item); |
| } |
| |
| , 'test each': function () { |
| var c = new SortedCollection() |
| , str = ''; |
| // Add an item with no value -- should get |
| // default value |
| c.addItem('a', 'A'); |
| c.addItem('b', 'B'); |
| c.addItem('c', 'C'); |
| c.addItem('d', 'D'); |
| c.each(function (val, key) { |
| str += val + key; |
| }); |
| assert.equal('AaBbCcDd', str); |
| } |
| |
| , 'test removing an item': function () { |
| var c = new SortedCollection() |
| , str = ''; |
| // Add an item with no value -- should get |
| // default value |
| c.addItem('a', 'A'); |
| c.addItem('b', 'B'); |
| c.addItem('c', 'C'); |
| c.addItem('d', 'D'); |
| assert.equal(4, c.count); |
| |
| omg = c.removeItem('c'); |
| assert.equal(3, c.count); |
| |
| c.each(function (val, key) { |
| str += val + key; |
| }); |
| assert.equal('AaBbDd', str); |
| } |
| |
| , 'test clone': function () { |
| var c = new SortedCollection() |
| , copy; |
| c.addItem('a', 'A'); |
| c.addItem('b', 'B'); |
| copy = c.clone(); |
| assert.equal(2, copy.count); |
| assert.equal('A', copy.getItem('a')); |
| } |
| |
| }; |
| |
| module.exports = tests; |