node-nlp
Version:
Library for NLU (Natural Language Understanding) done in Node.js
61 lines (50 loc) • 1.96 kB
JavaScript
/* global describe, it */
var assert = require('assert'),
sprintfjs = require('../src/sprintf.js'),
sprintf = sprintfjs.sprintf,
vsprintf = sprintfjs.vsprintf
function should_throw(format,args,err) {
assert.throws(function() { vsprintf(format,args) }, err)
}
function should_not_throw(format,args) {
assert.doesNotThrow(function() { vsprintf(format,args) })
}
describe('sprintfjs cache', function() {
it('should not throw Error (cache consistency)', function() {
// redefine object properties to ensure that is not affect to the cache
sprintf('hasOwnProperty')
sprintf('constructor')
should_not_throw('%s', ['caching...'])
should_not_throw('%s', ['crash?'])
})
})
describe('sprintfjs', function() {
it('should throw SyntaxError for placeholders', function() {
should_throw('%', [], SyntaxError)
should_throw('%A', [], SyntaxError)
should_throw('%s%', [], SyntaxError)
should_throw('%(s', [], SyntaxError)
should_throw('%)s', [], SyntaxError)
should_throw('%$s', [], SyntaxError)
should_throw('%()s', [], SyntaxError)
should_throw('%(12)s', [], SyntaxError)
})
var numeric = 'bcdiefguxX'.split('')
numeric.forEach(function(specifier) {
var fmt = sprintf('%%%s',specifier)
it(fmt + ' should throw TypeError for invalid numbers', function() {
should_throw(fmt, [], TypeError)
should_throw(fmt, ['str'], TypeError)
should_throw(fmt, [{}], TypeError)
should_throw(fmt, ['s'], TypeError)
})
it(fmt + ' should not throw TypeError for something implicitly castable to number', function() {
should_not_throw(fmt, [1/0])
should_not_throw(fmt, [true])
should_not_throw(fmt, [[1]])
should_not_throw(fmt, ['200'])
should_not_throw(fmt, [null])
})
})
})