lots of unit tests
This commit is contained in:
		
							parent
							
								
									c028501d66
								
							
						
					
					
						commit
						c3a91411f9
					
				| @ -77,6 +77,7 @@ function boolFromString(value, default_, errName) { | |||||||
|  */ |  */ | ||||||
| function jsonStream(arr, stream) { | function jsonStream(arr, stream) { | ||||||
|     stream = stream || process.stdout; |     stream = stream || process.stdout; | ||||||
|  | 
 | ||||||
|     arr.forEach(function (elem) { |     arr.forEach(function (elem) { | ||||||
|         stream.write(JSON.stringify(elem) + '\n'); |         stream.write(JSON.stringify(elem) + '\n'); | ||||||
|     }); |     }); | ||||||
| @ -89,6 +90,9 @@ function jsonStream(arr, stream) { | |||||||
|  * @param {Array} valid (optional) - an array to validate pairs |  * @param {Array} valid (optional) - an array to validate pairs | ||||||
|  */ |  */ | ||||||
| function kvToObj(kvs, valid) { | function kvToObj(kvs, valid) { | ||||||
|  |     assert.arrayOfString(kvs); | ||||||
|  |     assert.optionalArrayOfString(valid); | ||||||
|  | 
 | ||||||
|     var o = {}; |     var o = {}; | ||||||
|     for (var i = 0; i < kvs.length; i++) { |     for (var i = 0; i < kvs.length; i++) { | ||||||
|         var kv = kvs[i]; |         var kv = kvs[i]; | ||||||
| @ -99,7 +103,7 @@ function kvToObj(kvs, valid) { | |||||||
|                 kv)); |                 kv)); | ||||||
|         var k = kv.slice(0, idx); |         var k = kv.slice(0, idx); | ||||||
|         var v = kv.slice(idx + 1); |         var v = kv.slice(idx + 1); | ||||||
|         if (valid.indexOf(k) === -1) |         if (valid && valid.indexOf(k) === -1) | ||||||
|              throw new errors.UsageError(format( |              throw new errors.UsageError(format( | ||||||
|                 'invalid filter name: "%s" (must be one of "%s")', |                 'invalid filter name: "%s" (must be one of "%s")', | ||||||
|                 k, valid.join('", "'))); |                 k, valid.join('", "'))); | ||||||
|  | |||||||
| @ -23,6 +23,152 @@ var log = require('../lib/log'); | |||||||
| 
 | 
 | ||||||
| // ---- tests
 | // ---- tests
 | ||||||
| 
 | 
 | ||||||
|  | test('objCopy+deepObjCopy', function (t) { | ||||||
|  |     var o1 = {foo: 'bar'}; | ||||||
|  |     var o2 = {arr: [1,2,3]}; | ||||||
|  | 
 | ||||||
|  |     // shallow copy
 | ||||||
|  |     var c1 = common.objCopy(o1); | ||||||
|  |     var c2 = common.objCopy(o2); | ||||||
|  | 
 | ||||||
|  |     t.notEqual(c1, o1); | ||||||
|  |     t.deepEqual(c1, o1); | ||||||
|  | 
 | ||||||
|  |     t.notEqual(c2, o2); | ||||||
|  |     t.deepEqual(c2, o2); | ||||||
|  | 
 | ||||||
|  |     t.equal(c2.arr, o2.arr); | ||||||
|  | 
 | ||||||
|  |     var foo = {}; | ||||||
|  |     common.objCopy(o1, foo); | ||||||
|  |     t.notEqual(foo, o1); | ||||||
|  |     t.deepEqual(foo, o1); | ||||||
|  | 
 | ||||||
|  |     // deep copy
 | ||||||
|  |     var d1 = common.deepObjCopy(o1); | ||||||
|  |     var d2 = common.deepObjCopy(o2); | ||||||
|  | 
 | ||||||
|  |     t.notEqual(d1, o1); | ||||||
|  |     t.deepEqual(d1, o1); | ||||||
|  | 
 | ||||||
|  |     t.notEqual(d2, o2); | ||||||
|  |     t.deepEqual(d2, o2); | ||||||
|  | 
 | ||||||
|  |     t.notEqual(d2.arr, o2.arr); | ||||||
|  |     t.deepEqual(d2.arr, o2.arr); | ||||||
|  | 
 | ||||||
|  |     t.end(); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | test('zeroPad', function (t) { | ||||||
|  |     var zp = common.zeroPad; | ||||||
|  | 
 | ||||||
|  |     t.equal(zp(5, 3), '005'); | ||||||
|  |     t.equal(zp(50, 3), '050'); | ||||||
|  |     t.equal(zp(500, 3), '500'); | ||||||
|  | 
 | ||||||
|  |     t.equal(zp('5', 3), '005'); | ||||||
|  |     t.equal(zp('50', 3), '050'); | ||||||
|  |     t.equal(zp('500', 3), '500'); | ||||||
|  | 
 | ||||||
|  |     t.end(); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | test('boolFromString', function (t) { | ||||||
|  |     var bfs = common.boolFromString; | ||||||
|  | 
 | ||||||
|  |     t.equal(bfs(true), true); | ||||||
|  |     t.equal(bfs('true'), true); | ||||||
|  |     t.equal(bfs('1'), true); | ||||||
|  | 
 | ||||||
|  |     t.equal(bfs(false), false); | ||||||
|  |     t.equal(bfs('false'), false); | ||||||
|  |     t.equal(bfs('0'), false); | ||||||
|  | 
 | ||||||
|  |     t.equal(bfs(undefined, false), false); | ||||||
|  |     t.equal(bfs(undefined, true), true); | ||||||
|  |     t.equal(bfs(undefined, 'foo'), 'foo'); | ||||||
|  | 
 | ||||||
|  |     t.throws(bfs.bind(null, '2')); | ||||||
|  |     t.throws(bfs.bind(null, 500)); | ||||||
|  |     t.throws(bfs.bind(null, Infinity)); | ||||||
|  |     t.throws(bfs.bind(null, NaN)); | ||||||
|  | 
 | ||||||
|  |     t.end(); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | test('jsonStream', function (t) { | ||||||
|  |     // TODO this is a lame excuse for a stream
 | ||||||
|  |     var s = ''; | ||||||
|  |     var stream = { | ||||||
|  |         write: function (o) { s += o; } | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     var obj = [ | ||||||
|  |         'foo', | ||||||
|  |         'bar', | ||||||
|  |         'baz' | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |     common.jsonStream(obj, stream); | ||||||
|  |     t.equal(s, '"foo"\n"bar"\n"baz"\n'); | ||||||
|  | 
 | ||||||
|  |     t.end(); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | test('kvToObj', function (t) { | ||||||
|  |     var arr = ['foo=1', 'bar=2', 'baz=3']; | ||||||
|  |     var o = { | ||||||
|  |         foo: '1', | ||||||
|  |         bar: '2', | ||||||
|  |         baz: '3' | ||||||
|  |     }; | ||||||
|  |     var kv; | ||||||
|  | 
 | ||||||
|  |     // no valid parameter
 | ||||||
|  |     kv = common.kvToObj(arr); | ||||||
|  |     t.deepEqual(kv, o); | ||||||
|  | 
 | ||||||
|  |     // valid parameters
 | ||||||
|  |     kv = common.kvToObj(arr, ['foo', 'bar', 'baz']); | ||||||
|  |     t.deepEqual(kv, o); | ||||||
|  | 
 | ||||||
|  |     // invalid parameters
 | ||||||
|  |     t.throws(function () { | ||||||
|  |         common.kvToObj(arr, ['uh-oh']); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     t.end(); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | test('longAgo', function (t) { | ||||||
|  |     var la = common.longAgo; | ||||||
|  |     var now = new Date(); | ||||||
|  |     var then; | ||||||
|  | 
 | ||||||
|  |     t.equal(la(now, now), '0s'); | ||||||
|  | 
 | ||||||
|  |     then = now - 1000; | ||||||
|  |     t.equal(la(then, now), '1s'); | ||||||
|  | 
 | ||||||
|  |     then = now - 60 * 1000; | ||||||
|  |     t.equal(la(then, now), '1m'); | ||||||
|  | 
 | ||||||
|  |     then = now - 60 * 60 * 1000; | ||||||
|  |     t.equal(la(then, now), '1h'); | ||||||
|  | 
 | ||||||
|  |     then = now - 24 * 60 * 60 * 1000; | ||||||
|  |     t.equal(la(then, now), '1d'); | ||||||
|  | 
 | ||||||
|  |     then = now - 7 * 24 * 60 * 60 * 1000; | ||||||
|  |     t.equal(la(then, now), '1w'); | ||||||
|  | 
 | ||||||
|  |     then = now - 365 * 24 * 60 * 60 * 1000; | ||||||
|  |     t.equal(la(then, now), '1y'); | ||||||
|  | 
 | ||||||
|  |     t.end(); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
| test('humanDurationFromMs', function (t) { | test('humanDurationFromMs', function (t) { | ||||||
|     var humanDurationFromMs = common.humanDurationFromMs; |     var humanDurationFromMs = common.humanDurationFromMs; | ||||||
|     var ms = 1000; |     var ms = 1000; | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user