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