Add unit test for assertions
This commit is contained in:
parent
c7b86c7556
commit
9baae154cb
7 changed files with 94 additions and 17 deletions
77
test/unit/assert.js
Normal file
77
test/unit/assert.js
Normal file
|
@ -0,0 +1,77 @@
|
|||
const a = require('../../src/assert')
|
||||
|
||||
describe('Assert', function() {
|
||||
|
||||
it('mathnum', function() {
|
||||
a.mathnum('1')().should.equal(1)
|
||||
a.mathnum('1 + 2')().should.equal(3)
|
||||
a.mathnum('nope').should.throw('symbol')
|
||||
})
|
||||
|
||||
it('assert', function() {
|
||||
a.assert.bind(this, false, 'msg').should.throw('msg')
|
||||
a.assert.bind(this, true, 'msg').should.not.throw('msg')
|
||||
})
|
||||
|
||||
it('type', function() {
|
||||
// a more complete `typeof` operator
|
||||
a.type(undefined)().should.equal('undefined')
|
||||
a.type(null)().should.equal('null')
|
||||
a.type(false)().should.equal('boolean')
|
||||
a.type(0)().should.equal('number')
|
||||
a.type(3.14)().should.equal('number')
|
||||
a.type('arst')().should.equal('string')
|
||||
a.type('1 + 2')().should.equal('number') // formulas are also numbers here!
|
||||
a.type('arst')({arst: 2}).should.equal('number') // and variables count, too!
|
||||
a.type([])().should.equal('array')
|
||||
a.type({})().should.equal('object')
|
||||
})
|
||||
|
||||
it('sane', function() {
|
||||
a.sane('arst', 'name', 'string')().should.equal('arst')
|
||||
a.sane('arst', 'name', 'number').should.throw('name')
|
||||
a.sane('arst', 'name', 'number')({arst: 2}).should.equal(2)
|
||||
})
|
||||
|
||||
it('unexpected', function() {
|
||||
const good_keys = ['good']
|
||||
a.unexpected.bind(this, [], 'name', good_keys).should.throw('object')
|
||||
a.unexpected.bind(this, {}, 'name', good_keys).should.not.throw()
|
||||
a.unexpected.bind(this, {good: true}, 'name', good_keys).should.not.throw()
|
||||
a.unexpected.bind(this, {good: true, bad: true}, 'name', good_keys).should.throw('bad')
|
||||
})
|
||||
|
||||
it('in', function() {
|
||||
a.in('match', 'name', ['match']).should.equal('match')
|
||||
a.in.bind(this, 'not.a.match', 'name', ['match']).should.throw('name')
|
||||
})
|
||||
|
||||
it('arr', function() {
|
||||
// non-arrays are bad
|
||||
a.arr('val', 'name', 0, 'string', '').should.throw('array')
|
||||
// arrays are good
|
||||
a.arr(['val'], 'name', 0, 'string', '')().should.deep.equal(['val'])
|
||||
// length check works
|
||||
a.arr(['val'], 'name', 2, 'string', '').should.throw('length')
|
||||
// defaults get filled
|
||||
a.arr([undefined, 'val'], 'name', 2, 'string', 'def')().should.deep.equal(['def', 'val'])
|
||||
// mathnums are supported
|
||||
a.arr(['1 + 2'], 'name', 0, 'number', '')().should.deep.equal([3])
|
||||
|
||||
// arr derivatives
|
||||
a.strarr(['val'], 'name').should.deep.equal(a.arr(['val'], 'name', 0, 'string', '')())
|
||||
a.numarr([1], 'name', 1)().should.deep.equal(a.arr([1], 'name', 1, 'number', 0)())
|
||||
a.xy([1, 2], 'name')().should.deep.equal(a.arr([1, 2], 'name', 2, 'number', 0)())
|
||||
|
||||
// wh adds array expansion
|
||||
a.wh([1, 2], 'name')().should.deep.equal(a.arr([1, 2], 'name', 2, 'number', 0)())
|
||||
a.wh(1, 'name')().should.deep.equal(a.arr([1, 1], 'name', 2, 'number', 0)())
|
||||
|
||||
// trbl adds 1->4 and 2->4 array expansions
|
||||
a.trbl([1, 2, 3, 4], 'name')().should.deep.equal(a.arr([1, 2, 3, 4], 'name', 4, 'number', 0)())
|
||||
a.trbl(1, 'name')().should.deep.equal(a.arr([1, 1, 1, 1], 'name', 4, 'number', 0)())
|
||||
// the 2->4 is "inverted", because 2 number usually mean x,y, so the first is the horizontal
|
||||
// while for 4, it start with top, which is vertical
|
||||
a.trbl([1, 2], 'name')().should.deep.equal(a.arr([2, 1, 2, 1], 'name', 4, 'number', 0)())
|
||||
})
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue