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 args_test; | 5 library args_test; |
6 | 6 |
7 import '../../../pkg/unittest/lib/unittest.dart'; | 7 import 'package:unittest/unittest.dart'; |
8 | |
9 import 'package:args/args.dart'; | 8 import 'package:args/args.dart'; |
10 | 9 |
11 main() { | 10 main() { |
12 group('ArgParser.addFlag()', () { | 11 group('ArgParser.addFlag()', () { |
13 test('throws ArgumentError if the flag already exists', () { | 12 test('throws ArgumentError if the flag already exists', () { |
14 var parser = new ArgParser(); | 13 var parser = new ArgParser(); |
15 parser.addFlag('foo'); | 14 parser.addFlag('foo'); |
16 throwsIllegalArg(() => parser.addFlag('foo')); | 15 throwsIllegalArg(() => parser.addFlag('foo')); |
17 }); | 16 }); |
18 | 17 |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 }); | 180 }); |
182 | 181 |
183 test('are invoked even if the option is not present', () { | 182 test('are invoked even if the option is not present', () { |
184 var a = 'not called'; | 183 var a = 'not called'; |
185 var parser = new ArgParser(); | 184 var parser = new ArgParser(); |
186 parser.addOption('a', callback: (value) => a = value); | 185 parser.addOption('a', callback: (value) => a = value); |
187 | 186 |
188 var args = parser.parse([]); | 187 var args = parser.parse([]); |
189 expect(a, isNull); | 188 expect(a, isNull); |
190 }); | 189 }); |
191 | 190 |
192 test('for multiple present, allowMultiple, options are invoked with ' | 191 test('for multiple present, allowMultiple, options are invoked with ' |
193 'value as a list', () { | 192 'value as a list', () { |
194 var a; | 193 var a; |
195 var parser = new ArgParser(); | 194 var parser = new ArgParser(); |
196 parser.addOption('a', allowMultiple: true, | 195 parser.addOption('a', allowMultiple: true, |
197 callback: (value) => a = value); | 196 callback: (value) => a = value); |
198 | 197 |
199 var args = parser.parse(['--a=v', '--a=x']); | 198 var args = parser.parse(['--a=v', '--a=x']); |
200 expect(a, equals(['v', 'x'])); | 199 expect(a, equals(['v', 'x'])); |
201 }); | 200 }); |
202 | 201 |
203 test('for single present, allowMultiple, options are invoked with ' | 202 test('for single present, allowMultiple, options are invoked with ' |
204 ' value as a single element list', () { | 203 ' value as a single element list', () { |
205 var a; | 204 var a; |
206 var parser = new ArgParser(); | 205 var parser = new ArgParser(); |
207 parser.addOption('a', allowMultiple: true, | 206 parser.addOption('a', allowMultiple: true, |
208 callback: (value) => a = value); | 207 callback: (value) => a = value); |
209 | 208 |
210 var args = parser.parse(['--a=v']); | 209 var args = parser.parse(['--a=v']); |
211 expect(a, equals(['v'])); | 210 expect(a, equals(['v'])); |
212 }); | 211 }); |
213 | 212 |
214 test('for absent, allowMultiple, options are invoked with default ' | 213 test('for absent, allowMultiple, options are invoked with default ' |
215 'value as a list.', () { | 214 'value as a list.', () { |
216 var a; | 215 var a; |
217 var parser = new ArgParser(); | 216 var parser = new ArgParser(); |
218 parser.addOption('a', allowMultiple: true, defaultsTo: 'v', | 217 parser.addOption('a', allowMultiple: true, defaultsTo: 'v', |
219 callback: (value) => a = value); | 218 callback: (value) => a = value); |
220 | 219 |
221 var args = parser.parse([]); | 220 var args = parser.parse([]); |
222 expect(a, equals(['v'])); | 221 expect(a, equals(['v'])); |
223 }); | 222 }); |
224 | 223 |
225 test('for absent, allowMultiple, options are invoked with value ' | 224 test('for absent, allowMultiple, options are invoked with value ' |
226 'as an empty list.', () { | 225 'as an empty list.', () { |
227 var a; | 226 var a; |
228 var parser = new ArgParser(); | 227 var parser = new ArgParser(); |
229 parser.addOption('a', allowMultiple: true, | 228 parser.addOption('a', allowMultiple: true, |
230 callback: (value) => a = value); | 229 callback: (value) => a = value); |
231 | 230 |
232 var args = parser.parse([]); | 231 var args = parser.parse([]); |
233 expect(a, isEmpty); | 232 expect(a, isEmpty); |
234 }); | 233 }); |
235 }); | 234 }); |
236 | 235 |
237 group('abbreviations', () { | 236 group('abbreviations', () { |
238 test('are parsed with a preceding "-"', () { | 237 test('are parsed with a preceding "-"', () { |
239 var parser = new ArgParser(); | 238 var parser = new ArgParser(); |
240 parser.addFlag('arg', abbr: 'a'); | 239 parser.addFlag('arg', abbr: 'a'); |
241 | 240 |
(...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
702 throw new ArgumentError( | 701 throw new ArgumentError( |
703 'Line "$line" does not have enough indentation.'); | 702 'Line "$line" does not have enough indentation.'); |
704 } | 703 } |
705 | 704 |
706 lines[i] = line.substring(indent); | 705 lines[i] = line.substring(indent); |
707 } | 706 } |
708 } | 707 } |
709 | 708 |
710 return Strings.join(lines, '\n'); | 709 return Strings.join(lines, '\n'); |
711 } | 710 } |
OLD | NEW |