| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | /* * tst.basic.js: tests various valid invocation */var mod_assert = require('assert');var mod_extsprintf = require('../lib/extsprintf');var mod_path = require('path');var sprintf = mod_extsprintf.sprintf;var testcases = [ {    'name': 'empty string',    'args': [ '' ],    'result': ''}, {    'name': '%s: basic',    'args': [ '%s', 'foo' ],    'result': 'foo'}, {    'name': '%s: not first',    'args': [ 'hello %s\n', 'world' ],    'result': 'hello world\n'}, {    'name': '%s: right-aligned',    'args': [ 'hello %10s\n', 'world' ],    'result': 'hello      world\n'}, {    'name': '%s: left-aligned',    'args': [ 'hello %-10sagain\n', 'world' ],    'result': 'hello world     again\n'}, {    'name': '%d: basic, positive',    'args': [ '%d', 17 ],    'result': '17'}, {    'name': '%d: basic, zero',    'args': [ '%d', 0 ],    'result': '0'}, {    'name': '%d: basic, floating point value',    'args': [ '%d', 17.3 ],    'result': '17'}, {    'name': '%d: basic, negative',    'args': [ '%d', -3 ],    'result': '-3'}, {    'name': '%d: right-aligned',    'args': [ '%4d', 17 ],    'result': '  17'}, {    'name': '%d: right-aligned, zero-padded',    'args': [ '%04d', 17 ],    'result': '0017'}, {    'name': '%d: left-aligned',    'args': [ '%-4d', 17 ],    'result': '17  '}, {    'name': '%x: basic',    'args': [ '%x', 18],    'result': '12'}, {    'name': '%x: zero-padded, right-aligned',    'args': [ '%08x', 0xfeedface ],    'result': 'feedface'}, {    'name': '%d: with plus sign',    'args': [ '%+d', 17 ],    'result': '+17'}, {    'name': '%f: basic',    'args': [ '%f', 3.2 ],    'result': '3.2'}, {    'name': '%f: right-aligned',    'args': [ '%5f', 3.2 ],    'result': '  3.2'}, {    'name': '%%: basic',    'args': [ '%%' ],    'result': '%'}, {    'name': 'complex',    'args': [ 'one %s %8s %-3d bytes past 0x%04x, which was %6f%%%s%5s',        'program', 'wrote', -2, 0x30, 3.7, ' plus', 'over' ],    'result': 'one program    wrote -2  bytes past 0x0030, which was    ' +        '3.7% plus over'} ];function main(verbose) {	/*	 * Create one test case with a very large input string.	 */	var input = '1234';	while (input.length < 100 * 1024) {		input += input;	}	testcases.push({	    'name': 'long string argument (' + input.length + ' characters)',	    'args': [ '%s', input ],	    'result': input	});	testcases.forEach(function (tc) {		var result;		console.error('test case: %s', tc.name);		result = sprintf.apply(null, tc.args);		if (verbose) {			console.error('    args:   %s', JSON.stringify(tc.args));			console.error('    result: %s', result);		}		mod_assert.equal(tc.result, result);	});	console.log('%s tests passed', mod_path.basename(__filename));}main(process.argv.length > 2 && process.argv[2] == '-v');
 |