Initial commit
[yaffs-website] / 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 array with options hash', function (t) {
84     var aliased = [ '-h', 'derp' ];
85     var regular = [ '--herp', 'derp' ];
86     var alt = [ '--harp', 'derp' ];
87     var opts = {
88         alias: { 'h': ['herp', 'harp'] },
89         boolean: 'h'
90     };
91     var aliasedArgv = parse(aliased, opts);
92     var propertyArgv = parse(regular, opts);
93     var altPropertyArgv = parse(alt, opts);
94     var expected = {
95         harp: true,
96         herp: true,
97         h: true,
98         '_': [ 'derp' ]
99     };
100     t.same(aliasedArgv, expected);
101     t.same(propertyArgv, expected);
102     t.same(altPropertyArgv, expected);
103     t.end();
104 });
105
106 test('boolean and alias using explicit true', function (t) {
107     var aliased = [ '-h', 'true' ];
108     var regular = [ '--herp',  'true' ];
109     var opts = {
110         alias: { h: 'herp' },
111         boolean: 'h'
112     };
113     var aliasedArgv = parse(aliased, opts);
114     var propertyArgv = parse(regular, opts);
115     var expected = {
116         herp: true,
117         h: true,
118         '_': [ ]
119     };
120
121     t.same(aliasedArgv, expected);
122     t.same(propertyArgv, expected); 
123     t.end();
124 });
125
126 // regression, see https://github.com/substack/node-optimist/issues/71
127 test('boolean and --x=true', function(t) {
128     var parsed = parse(['--boool', '--other=true'], {
129         boolean: 'boool'
130     });
131
132     t.same(parsed.boool, true);
133     t.same(parsed.other, 'true');
134
135     parsed = parse(['--boool', '--other=false'], {
136         boolean: 'boool'
137     });
138     
139     t.same(parsed.boool, true);
140     t.same(parsed.other, 'false');
141     t.end();
142 });
143
144 test('boolean --boool=true', function (t) {
145     var parsed = parse(['--boool=true'], {
146         default: {
147             boool: false
148         },
149         boolean: ['boool']
150     });
151
152     t.same(parsed.boool, true);
153     t.end();
154 });
155
156 test('boolean --boool=false', function (t) {
157     var parsed = parse(['--boool=false'], {
158         default: {
159           boool: true
160         },
161         boolean: ['boool']
162     });
163
164     t.same(parsed.boool, false);
165     t.end();
166 });