Websocket
[VSoRC/.git] / node_modules / node-static / node_modules / optimist / node_modules / minimist / test / bool.js
1 var parse = require('../');
2 var test = require('tape');
3
4 test('flag boolean default false', function (t) {
5     var argv = parse(['moo'], {
6         boolean: ['t', 'verbose'],
7         default: { verbose: false, t: false }
8     });
9     
10     t.deepEqual(argv, {
11         verbose: false,
12         t: false,
13         _: ['moo']
14     });
15     
16     t.deepEqual(typeof argv.verbose, 'boolean');
17     t.deepEqual(typeof argv.t, 'boolean');
18     t.end();
19
20 });
21
22 test('boolean groups', function (t) {
23     var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], {
24         boolean: ['x','y','z']
25     });
26     
27     t.deepEqual(argv, {
28         x : true,
29         y : false,
30         z : true,
31         _ : [ 'one', 'two', 'three' ]
32     });
33     
34     t.deepEqual(typeof argv.x, 'boolean');
35     t.deepEqual(typeof argv.y, 'boolean');
36     t.deepEqual(typeof argv.z, 'boolean');
37     t.end();
38 });
39 test('boolean and alias with chainable api', function (t) {
40     var aliased = [ '-h', 'derp' ];
41     var regular = [ '--herp',  'derp' ];
42     var opts = {
43         herp: { alias: 'h', boolean: true }
44     };
45     var aliasedArgv = parse(aliased, {
46         boolean: 'herp',
47         alias: { h: 'herp' }
48     });
49     var propertyArgv = parse(regular, {
50         boolean: 'herp',
51         alias: { h: 'herp' }
52     });
53     var expected = {
54         herp: true,
55         h: true,
56         '_': [ 'derp' ]
57     };
58     
59     t.same(aliasedArgv, expected);
60     t.same(propertyArgv, expected); 
61     t.end();
62 });
63
64 test('boolean and alias with options hash', function (t) {
65     var aliased = [ '-h', 'derp' ];
66     var regular = [ '--herp', 'derp' ];
67     var opts = {
68         alias: { 'h': 'herp' },
69         boolean: 'herp'
70     };
71     var aliasedArgv = parse(aliased, opts);
72     var propertyArgv = parse(regular, opts);
73     var expected = {
74         herp: true,
75         h: true,
76         '_': [ 'derp' ]
77     };
78     t.same(aliasedArgv, expected);
79     t.same(propertyArgv, expected);
80     t.end();
81 });
82
83 test('boolean and alias using explicit true', function (t) {
84     var aliased = [ '-h', 'true' ];
85     var regular = [ '--herp',  'true' ];
86     var opts = {
87         alias: { h: 'herp' },
88         boolean: 'h'
89     };
90     var aliasedArgv = parse(aliased, opts);
91     var propertyArgv = parse(regular, opts);
92     var expected = {
93         herp: true,
94         h: true,
95         '_': [ ]
96     };
97
98     t.same(aliasedArgv, expected);
99     t.same(propertyArgv, expected); 
100     t.end();
101 });
102
103 // regression, see https://github.com/substack/node-optimist/issues/71
104 test('boolean and --x=true', function(t) {
105     var parsed = parse(['--boool', '--other=true'], {
106         boolean: 'boool'
107     });
108
109     t.same(parsed.boool, true);
110     t.same(parsed.other, 'true');
111
112     parsed = parse(['--boool', '--other=false'], {
113         boolean: 'boool'
114     });
115     
116     t.same(parsed.boool, true);
117     t.same(parsed.other, 'false');
118     t.end();
119 });