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