Wei Lu
10 years ago
12 changed files with 130 additions and 48 deletions
@ -0,0 +1,34 @@ |
|||
module.exports = function enforce(type, value) { |
|||
switch (type) { |
|||
case 'Array': { |
|||
if (Array.isArray(value)) return |
|||
break |
|||
} |
|||
|
|||
case 'Boolean': { |
|||
if (typeof value === 'boolean') return |
|||
break |
|||
} |
|||
|
|||
case 'Buffer': { |
|||
if (Buffer.isBuffer(value)) return |
|||
break |
|||
} |
|||
|
|||
case 'Number': { |
|||
if (typeof value === 'number') return |
|||
break |
|||
} |
|||
|
|||
case 'String': { |
|||
if (typeof value === 'string') return |
|||
break |
|||
} |
|||
|
|||
default: { |
|||
if (value instanceof type) return |
|||
} |
|||
} |
|||
|
|||
throw new TypeError('Expected ' + (type.name || type) + ', got ' + value) |
|||
} |
@ -0,0 +1,28 @@ |
|||
var assert = require('assert') |
|||
var enforceType = require('../src/types') |
|||
|
|||
function CustomType() {} |
|||
|
|||
var types = ['Array', 'Boolean', 'Buffer', 'Number', 'String', CustomType] |
|||
var values = [[], true, new Buffer(1), 1234, 'foobar', new CustomType()] |
|||
|
|||
describe('enforceType', function() { |
|||
types.forEach(function(type, i) { |
|||
describe(type, function() { |
|||
values.forEach(function(value, j) { |
|||
if (j === i) { |
|||
it('passes for ' + types[j], function() { |
|||
enforceType(type, value) |
|||
}) |
|||
|
|||
} else { |
|||
it('fails for ' + types[j], function() { |
|||
assert.throws(function() { |
|||
enforceType(type, value) |
|||
}, new RegExp('Expected ' + (type.name || type) + ', got ')) |
|||
}) |
|||
} |
|||
}) |
|||
}) |
|||
}) |
|||
}) |
Loading…
Reference in new issue