OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library parse_test; | 5 library parse_test; |
6 | 6 |
7 import 'package:unittest/unittest.dart'; | 7 import 'package:unittest/unittest.dart'; |
8 import 'package:args/args.dart'; | 8 import 'package:args/args.dart'; |
9 import 'utils.dart'; | 9 import 'utils.dart'; |
10 | 10 |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 throwsFormat(parser, ['--no-strum']); | 98 throwsFormat(parser, ['--no-strum']); |
99 }); | 99 }); |
100 }); | 100 }); |
101 | 101 |
102 group('callbacks', () { | 102 group('callbacks', () { |
103 test('for present flags are invoked with the value', () { | 103 test('for present flags are invoked with the value', () { |
104 var a; | 104 var a; |
105 var parser = new ArgParser(); | 105 var parser = new ArgParser(); |
106 parser.addFlag('a', callback: (value) => a = value); | 106 parser.addFlag('a', callback: (value) => a = value); |
107 | 107 |
108 var args = parser.parse(['--a']); | 108 parser.parse(['--a']); |
109 expect(a, isTrue); | 109 expect(a, isTrue); |
110 }); | 110 }); |
111 | 111 |
112 test('for absent flags are invoked with the default value', () { | 112 test('for absent flags are invoked with the default value', () { |
113 var a; | 113 var a; |
114 var parser = new ArgParser(); | 114 var parser = new ArgParser(); |
115 parser.addFlag('a', defaultsTo: false, | 115 parser.addFlag('a', defaultsTo: false, callback: (value) => a = value); |
116 callback: (value) => a = value); | |
117 | 116 |
118 var args = parser.parse([]); | 117 parser.parse([]); |
119 expect(a, isFalse); | 118 expect(a, isFalse); |
120 }); | 119 }); |
121 | 120 |
122 test('are invoked even if the flag is not present', () { | 121 test('are invoked even if the flag is not present', () { |
123 var a = 'not called'; | 122 var a = 'not called'; |
124 var parser = new ArgParser(); | 123 var parser = new ArgParser(); |
125 parser.addFlag('a', callback: (value) => a = value); | 124 parser.addFlag('a', callback: (value) => a = value); |
126 | 125 |
127 var args = parser.parse([]); | 126 parser.parse([]); |
128 expect(a, isFalse); | 127 expect(a, isFalse); |
129 }); | 128 }); |
130 | 129 |
131 test('for present options are invoked with the value', () { | 130 test('for present options are invoked with the value', () { |
132 var a; | 131 var a; |
133 var parser = new ArgParser(); | 132 var parser = new ArgParser(); |
134 parser.addOption('a', callback: (value) => a = value); | 133 parser.addOption('a', callback: (value) => a = value); |
135 | 134 |
136 var args = parser.parse(['--a=v']); | 135 parser.parse(['--a=v']); |
137 expect(a, equals('v')); | 136 expect(a, equals('v')); |
138 }); | 137 }); |
139 | 138 |
140 test('for absent options are invoked with the default value', () { | 139 test('for absent options are invoked with the default value', () { |
141 var a; | 140 var a; |
142 var parser = new ArgParser(); | 141 var parser = new ArgParser(); |
143 parser.addOption('a', defaultsTo: 'v', | 142 parser.addOption('a', defaultsTo: 'v', callback: (value) => a = value); |
144 callback: (value) => a = value); | |
145 | 143 |
146 var args = parser.parse([]); | 144 parser.parse([]); |
147 expect(a, equals('v')); | 145 expect(a, equals('v')); |
148 }); | 146 }); |
149 | 147 |
150 test('are invoked even if the option is not present', () { | 148 test('are invoked even if the option is not present', () { |
151 var a = 'not called'; | 149 var a = 'not called'; |
152 var parser = new ArgParser(); | 150 var parser = new ArgParser(); |
153 parser.addOption('a', callback: (value) => a = value); | 151 parser.addOption('a', callback: (value) => a = value); |
154 | 152 |
155 var args = parser.parse([]); | 153 parser.parse([]); |
156 expect(a, isNull); | 154 expect(a, isNull); |
157 }); | 155 }); |
158 | 156 |
159 test('for multiple present, allowMultiple, options are invoked with ' | 157 test('for multiple present, allowMultiple, options are invoked with ' |
160 'value as a list', () { | 158 'value as a list', () { |
161 var a; | 159 var a; |
162 var parser = new ArgParser(); | 160 var parser = new ArgParser(); |
163 parser.addOption('a', allowMultiple: true, | 161 parser.addOption('a', |
164 callback: (value) => a = value); | 162 allowMultiple: true, callback: (value) => a = value); |
165 | 163 |
166 var args = parser.parse(['--a=v', '--a=x']); | 164 parser.parse(['--a=v', '--a=x']); |
167 expect(a, equals(['v', 'x'])); | 165 expect(a, equals(['v', 'x'])); |
168 }); | 166 }); |
169 | 167 |
170 test('for single present, allowMultiple, options are invoked with ' | 168 test('for single present, allowMultiple, options are invoked with ' |
171 ' value as a single element list', () { | 169 ' value as a single element list', () { |
172 var a; | 170 var a; |
173 var parser = new ArgParser(); | 171 var parser = new ArgParser(); |
174 parser.addOption('a', allowMultiple: true, | 172 parser.addOption('a', |
175 callback: (value) => a = value); | 173 allowMultiple: true, callback: (value) => a = value); |
176 | 174 |
177 var args = parser.parse(['--a=v']); | 175 parser.parse(['--a=v']); |
178 expect(a, equals(['v'])); | 176 expect(a, equals(['v'])); |
179 }); | 177 }); |
180 | 178 |
181 test('for absent, allowMultiple, options are invoked with default ' | 179 test('for absent, allowMultiple, options are invoked with default ' |
182 'value as a list.', () { | 180 'value as a list.', () { |
183 var a; | 181 var a; |
184 var parser = new ArgParser(); | 182 var parser = new ArgParser(); |
185 parser.addOption('a', allowMultiple: true, defaultsTo: 'v', | 183 parser.addOption('a', |
| 184 allowMultiple: true, |
| 185 defaultsTo: 'v', |
186 callback: (value) => a = value); | 186 callback: (value) => a = value); |
187 | 187 |
188 var args = parser.parse([]); | 188 parser.parse([]); |
189 expect(a, equals(['v'])); | 189 expect(a, equals(['v'])); |
190 }); | 190 }); |
191 | 191 |
192 test('for absent, allowMultiple, options are invoked with value ' | 192 test('for absent, allowMultiple, options are invoked with value ' |
193 'as an empty list.', () { | 193 'as an empty list.', () { |
194 var a; | 194 var a; |
195 var parser = new ArgParser(); | 195 var parser = new ArgParser(); |
196 parser.addOption('a', allowMultiple: true, | 196 parser.addOption('a', |
197 callback: (value) => a = value); | 197 allowMultiple: true, callback: (value) => a = value); |
198 | 198 |
199 var args = parser.parse([]); | 199 parser.parse([]); |
200 expect(a, isEmpty); | 200 expect(a, isEmpty); |
201 }); | 201 }); |
202 }); | 202 }); |
203 | 203 |
204 group('abbreviations', () { | 204 group('abbreviations', () { |
205 test('are parsed with a preceding "-"', () { | 205 test('are parsed with a preceding "-"', () { |
206 var parser = new ArgParser(); | 206 var parser = new ArgParser(); |
207 parser.addFlag('arg', abbr: 'a'); | 207 parser.addFlag('arg', abbr: 'a'); |
208 | 208 |
209 var args = parser.parse(['-a']); | 209 var args = parser.parse(['-a']); |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
385 var args = parser.parse(['--define=1', '--define=2']); | 385 var args = parser.parse(['--define=1', '--define=2']); |
386 expect(args['define'], equals('2')); | 386 expect(args['define'], equals('2')); |
387 }); | 387 }); |
388 | 388 |
389 test('returns a List if multi-valued', () { | 389 test('returns a List if multi-valued', () { |
390 var parser = new ArgParser(); | 390 var parser = new ArgParser(); |
391 parser.addOption('define', allowMultiple: true); | 391 parser.addOption('define', allowMultiple: true); |
392 var args = parser.parse(['--define=1']); | 392 var args = parser.parse(['--define=1']); |
393 expect(args['define'], equals(['1'])); | 393 expect(args['define'], equals(['1'])); |
394 args = parser.parse(['--define=1', '--define=2']); | 394 args = parser.parse(['--define=1', '--define=2']); |
395 expect(args['define'], equals(['1','2'])); | 395 expect(args['define'], equals(['1', '2'])); |
396 }); | 396 }); |
397 | 397 |
398 test('returns the default value for multi-valued arguments ' | 398 test('returns the default value for multi-valued arguments ' |
399 'if not explicitly set', () { | 399 'if not explicitly set', () { |
400 var parser = new ArgParser(); | 400 var parser = new ArgParser(); |
401 parser.addOption('define', defaultsTo: '0', allowMultiple: true); | 401 parser.addOption('define', defaultsTo: '0', allowMultiple: true); |
402 var args = parser.parse(['']); | 402 var args = parser.parse(['']); |
403 expect(args['define'], equals(['0'])); | 403 expect(args['define'], equals(['0'])); |
404 }); | 404 }); |
405 | 405 |
406 test('are case-sensitive', () { | 406 test('are case-sensitive', () { |
407 var parser = new ArgParser(); | 407 var parser = new ArgParser(); |
408 parser.addOption('verbose', defaultsTo: 'no'); | 408 parser.addOption('verbose', defaultsTo: 'no'); |
409 parser.addOption('Verbose', defaultsTo: 'no'); | 409 parser.addOption('Verbose', defaultsTo: 'no'); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
442 var parser = new ArgParser(); | 442 var parser = new ArgParser(); |
443 parser.addFlag('woof'); | 443 parser.addFlag('woof'); |
444 | 444 |
445 var results = parser.parse(['--woof', 'stop', '--', 'arg']); | 445 var results = parser.parse(['--woof', 'stop', '--', 'arg']); |
446 expect(results['woof'], isTrue); | 446 expect(results['woof'], isTrue); |
447 expect(results.rest, equals(['stop', '--', 'arg'])); | 447 expect(results.rest, equals(['stop', '--', 'arg'])); |
448 }); | 448 }); |
449 }); | 449 }); |
450 }); | 450 }); |
451 } | 451 } |
OLD | NEW |