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);