1 /* 2 * Tests getopt() itself. 3 */ 4 var mod_path = require('path'); 5 require.paths.unshift(mod_path.dirname(__dirname) + '/lib'); 6 7 var mod_sys = require('sys'); 8 var mod_getopt = require('getopt'); 9 var mod_assert = require('assert'); 10 11 var test_cases = [ { 12 optstr: '', 13 argv: [], 14 result: [] 15 }, { 16 optstr: ':', 17 argv: [], 18 result: [] 19 }, { 20 optstr: ':l', 21 argv: [], 22 result: [] 23 }, { 24 optstr: ':l:', 25 argv: [], 26 result: [] 27 }, { 28 optstr: ':las', 29 argv: [], 30 result: [] 31 }, { 32 optstr: ':l:a:s:', 33 argv: [], 34 result: [] 35 }, { 36 optstr: ':l(long)', 37 argv: [], 38 result: [] 39 }, { 40 optstr: ':l:(long)', 41 argv: ['cmd', 'script', '-l', 'arg1', '--long=q', 'b', '--long', 'foo'], 42 result: [ 43 { option: 'l', optarg: 'arg1' }, 44 { option: 'l', optarg: 'q' } 45 ] 46 }, { 47 optstr: 'l:(long)(longer)', 48 argv: [], 49 result: [] 50 }, { 51 optstr: ':la:r(recurse)(recur)f:(file)(filename)q', 52 argv: [], 53 result: [] 54 } ]; 55 56 var parser, ii, arg, result; 57 for (ii = 0; ii < test_cases.length; ii++) { 58 console.log('test case %s: "%s" with argv = "%s"', ii + 1, 59 test_cases[ii].optstr, test_cases[ii].argv); 60 parser = new mod_getopt.BasicParser(test_cases[ii].optstr, 61 test_cases[ii].argv); 62 console.log(parser.gop_tokens); 63 64 result = []; 65 while ((arg = parser.getopt()) !== undefined) 66 result.push(arg); 67 68 mod_assert.deepEqual(test_cases[ii].result, result); 69 } 70 71 console.log('%s test cases passed', test_cases.length);