node-nlp
Version:
Library for NLU (Natural Language Understanding) done in Node.js
113 lines (101 loc) • 5.17 kB
JavaScript
/* global describe, it */
var assert = require('assert'),
sprintfjs = require('../src/sprintf.js'),
sprintf = sprintfjs.sprintf
describe('sprintfjs', function() {
var pi = 3.141592653589793
it('should return formated strings for simple placeholders', function() {
assert.equal('%', sprintf('%%'))
assert.equal('10', sprintf('%b', 2))
assert.equal('A', sprintf('%c', 65))
assert.equal('2', sprintf('%d', 2))
assert.equal('2', sprintf('%i', 2))
assert.equal('2', sprintf('%d', '2'))
assert.equal('2', sprintf('%i', '2'))
assert.equal('{"foo":"bar"}', sprintf('%j', {foo: 'bar'}))
assert.equal('["foo","bar"]', sprintf('%j', ['foo', 'bar']))
assert.equal('2e+0', sprintf('%e', 2))
assert.equal('2', sprintf('%u', 2))
assert.equal('4294967294', sprintf('%u', -2))
assert.equal('2.2', sprintf('%f', 2.2))
assert.equal('3.141592653589793', sprintf('%g', pi))
assert.equal('10', sprintf('%o', 8))
assert.equal('37777777770', sprintf('%o', -8))
assert.equal('%s', sprintf('%s', '%s'))
assert.equal('ff', sprintf('%x', 255))
assert.equal('ffffff01', sprintf('%x', -255))
assert.equal('FF', sprintf('%X', 255))
assert.equal('FFFFFF01', sprintf('%X', -255))
assert.equal('Polly wants a cracker', sprintf('%2$s %3$s a %1$s', 'cracker', 'Polly', 'wants'))
assert.equal('Hello world!', sprintf('Hello %(who)s!', {who: 'world'}))
assert.equal('true', sprintf('%t', true))
assert.equal('t', sprintf('%.1t', true))
assert.equal('true', sprintf('%t', 'true'))
assert.equal('true', sprintf('%t', 1))
assert.equal('false', sprintf('%t', false))
assert.equal('f', sprintf('%.1t', false))
assert.equal('false', sprintf('%t', ''))
assert.equal('false', sprintf('%t', 0))
assert.equal('undefined', sprintf('%T', undefined))
assert.equal('null', sprintf('%T', null))
assert.equal('boolean', sprintf('%T', true))
assert.equal('number', sprintf('%T', 42))
assert.equal('string', sprintf('%T', 'This is a string'))
assert.equal('function', sprintf('%T', Math.log))
assert.equal('array', sprintf('%T', [1, 2, 3]))
assert.equal('object', sprintf('%T', {foo: 'bar'}))
assert.equal('regexp', sprintf('%T', /<('[^']*'|'[^']*'|[^''>])*>/))
assert.equal('true', sprintf('%v', true))
assert.equal('42', sprintf('%v', 42))
assert.equal('This is a string', sprintf('%v', 'This is a string'))
assert.equal('1,2,3', sprintf('%v', [1, 2, 3]))
assert.equal('[object Object]', sprintf('%v', {foo: 'bar'}))
assert.equal('/<("[^"]*"|\'[^\']*\'|[^\'">])*>/', sprintf('%v', /<("[^"]*"|'[^']*'|[^'">])*>/))
})
it('should return formated strings for complex placeholders', function() {
// sign
assert.equal('2', sprintf('%d', 2))
assert.equal('-2', sprintf('%d', -2))
assert.equal('+2', sprintf('%+d', 2))
assert.equal('-2', sprintf('%+d', -2))
assert.equal('2', sprintf('%i', 2))
assert.equal('-2', sprintf('%i', -2))
assert.equal('+2', sprintf('%+i', 2))
assert.equal('-2', sprintf('%+i', -2))
assert.equal('2.2', sprintf('%f', 2.2))
assert.equal('-2.2', sprintf('%f', -2.2))
assert.equal('+2.2', sprintf('%+f', 2.2))
assert.equal('-2.2', sprintf('%+f', -2.2))
assert.equal('-2.3', sprintf('%+.1f', -2.34))
assert.equal('-0.0', sprintf('%+.1f', -0.01))
assert.equal('3.14159', sprintf('%.6g', pi))
assert.equal('3.14', sprintf('%.3g', pi))
assert.equal('3', sprintf('%.1g', pi))
assert.equal('-000000123', sprintf('%+010d', -123))
assert.equal('______-123', sprintf("%+'_10d", -123))
assert.equal('-234.34 123.2', sprintf('%f %f', -234.34, 123.2))
// padding
assert.equal('-0002', sprintf('%05d', -2))
assert.equal('-0002', sprintf('%05i', -2))
assert.equal(' <', sprintf('%5s', '<'))
assert.equal('0000<', sprintf('%05s', '<'))
assert.equal('____<', sprintf("%'_5s", '<'))
assert.equal('> ', sprintf('%-5s', '>'))
assert.equal('>0000', sprintf('%0-5s', '>'))
assert.equal('>____', sprintf("%'_-5s", '>'))
assert.equal('xxxxxx', sprintf('%5s', 'xxxxxx'))
assert.equal('1234', sprintf('%02u', 1234))
assert.equal(' -10.235', sprintf('%8.3f', -10.23456))
assert.equal('-12.34 xxx', sprintf('%f %s', -12.34, 'xxx'))
assert.equal('{\n "foo": "bar"\n}', sprintf('%2j', {foo: 'bar'}))
assert.equal('[\n "foo",\n "bar"\n]', sprintf('%2j', ['foo', 'bar']))
// precision
assert.equal('2.3', sprintf('%.1f', 2.345))
assert.equal('xxxxx', sprintf('%5.5s', 'xxxxxx'))
assert.equal(' x', sprintf('%5.1s', 'xxxxxx'))
})
it('should return formated strings for callbacks', function() {
assert.equal('foobar', sprintf('%s', function() { return 'foobar' }))
})
})