1 /*
2 * Tests internal state of the parser.
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 silent: false,
14 options: {},
15 aliases: {},
16 }, {
17 optstr: ':',
18 silent: true,
19 options: {},
20 aliases: {},
21 }, {
22 optstr: ':l',
23 silent: true,
24 options: { l: false },
25 aliases: {},
26 }, {
27 optstr: ':l:',
28 silent: true,
29 options: { l: true },
30 aliases: {},
31 }, {
32 optstr: ':las',
33 silent: true,
34 options: { l: false, a: false, s: false },
35 aliases: {},
36 }, {
37 optstr: ':l:a:s:',
38 silent: true,
39 options: { l: true, a: true, s: true },
40 aliases: {},
41 }, {
42 optstr: ':l(long)',
43 silent: true,
44 options: { l: false },
45 aliases: { long: 'l' },
46 }, {
47 optstr: ':l:(long)',
48 silent: true,
49 options: { l: true },
50 aliases: { long: 'l' },
51 }, {
52 optstr: 'l:(long)(longer)',
53 silent: false,
54 options: { l: true },
55 aliases: { long: 'l', longer: 'l' },
56 }, {
57 optstr: ':la:r(recurse)(recur)f:(file)(filename)q',
58 silent: true,
59 options: { l: false, a: true, r: false, f: true, q: false },
60 aliases: { recurse: 'r', recur: 'r', file: 'f', filename: 'f' }
61 } ];
62
63 var parser, ii;
64 for (ii = 0; ii < test_cases.length; ii++) {
65 console.log('test case %s: "%s"', ii + 1, test_cases[ii].optstr);
66 parser = new mod_getopt.BasicParser(test_cases[ii].optstr, []);
67 mod_assert.ok(test_cases[ii].silent === parser.gop_silent);
68 mod_assert.deepEqual(test_cases[ii].options,
69 parser.gop_options);
70 mod_assert.deepEqual(test_cases[ii].aliases,
71 parser.gop_aliases);
72 }
73
74 console.log('%s test cases passed', test_cases.length);