OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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_all_test; | 5 library parse_all_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 | 9 |
10 main() { | 10 main() { |
11 group('ArgParser.parse() starting with a non-option', () { | 11 group('ArgParser.parse(allowTrailingOptions: true) ' |
| 12 'starting with a non-option', () { |
12 test('followed by flag', () { | 13 test('followed by flag', () { |
13 var parser = new ArgParser()..addFlag('flag'); | 14 var parser = new ArgParser()..addFlag('flag'); |
14 var args = ['A', '--flag']; | 15 var args = ['A', '--flag']; |
15 | 16 |
16 var results = parser.parse(args); | 17 var results = parser.parse(args); |
17 expect(results['flag'], isFalse); | 18 expect(results['flag'], isFalse); |
18 expect(results.rest, orderedEquals(args)); | 19 expect(results.rest, orderedEquals(args)); |
| 20 var resultsAll = parser.parse(args, allowTrailingOptions: true); |
| 21 expect(resultsAll['flag'], isTrue); |
| 22 expect(resultsAll.rest, equals(['A'])); |
19 }); | 23 }); |
20 | 24 |
21 test('followed by option', () { | 25 test('followed by option', () { |
22 var parser = new ArgParser()..addOption('opt'); | 26 var parser = new ArgParser()..addOption('opt'); |
23 var args = ['A', '--opt']; | 27 var args = ['A', '--opt']; |
24 | 28 |
25 var results = parser.parse(args); | 29 var results = parser.parse(args); |
26 expect(results['opt'], isNull); | 30 expect(results['opt'], isNull); |
27 expect(results.rest, orderedEquals(args)); | 31 expect(results.rest, orderedEquals(args)); |
| 32 |
| 33 expectThrows(parser, args); |
28 }); | 34 }); |
29 | 35 |
30 test('followed by option and value', () { | 36 test('followed by option and value', () { |
31 var parser = new ArgParser()..addOption('opt'); | 37 var parser = new ArgParser()..addOption('opt'); |
32 var args = ['A', '--opt', 'V']; | 38 var args = ['A', '--opt', 'V']; |
33 | 39 |
34 var results = parser.parse(args); | 40 var results = parser.parse(args); |
35 expect(results['opt'], isNull); | 41 expect(results['opt'], isNull); |
36 expect(results.rest, orderedEquals(args)); | 42 expect(results.rest, orderedEquals(args)); |
| 43 |
| 44 var resultsAll = parser.parse(args, allowTrailingOptions: true); |
| 45 expect(resultsAll['opt'], equals('V')); |
| 46 expect(resultsAll.rest, equals(['A'])); |
37 }); | 47 }); |
38 | 48 |
39 test('followed by unknown flag', () { | 49 test('followed by unknown flag', () { |
40 var parser = new ArgParser(); | 50 var parser = new ArgParser(); |
41 var args = ['A', '--xflag']; | 51 var args = ['A', '--xflag']; |
42 var results = parser.parse(args); | 52 var results = parser.parse(args); |
43 expect(results.rest, orderedEquals(args)); | 53 expect(results.rest, orderedEquals(args)); |
| 54 |
| 55 expectThrows(parser, args); |
44 }); | 56 }); |
45 | 57 |
46 test('followed by unknown option and value', () { | 58 test('followed by unknown option and value', () { |
47 var parser = new ArgParser(); | 59 var parser = new ArgParser(); |
48 var args = ['A', '--xopt', 'V']; | 60 var args = ['A', '--xopt', 'V']; |
49 var results = parser.parse(args); | 61 var results = parser.parse(args); |
50 expect(results.rest, orderedEquals(args)); | 62 expect(results.rest, orderedEquals(args)); |
| 63 |
| 64 expectThrows(parser, args); |
51 }); | 65 }); |
52 | 66 |
53 test('followed by command', () { | 67 test('followed by command', () { |
54 var parser = new ArgParser()..addCommand('com'); | 68 var parser = new ArgParser()..addCommand('com'); |
55 var args = ['A', 'com']; | 69 var args = ['A', 'com']; |
56 | 70 |
57 var results = parser.parse(args); | 71 var results = parser.parse(args); |
58 expect(results.command, isNull); | 72 expect(results.command, isNull); |
59 expect(results.rest, orderedEquals(args)); | 73 expect(results.rest, orderedEquals(args)); |
| 74 |
| 75 expectThrows(parser, args); |
60 }); | 76 }); |
61 }); | 77 }); |
62 } | 78 } |
| 79 expectThrows(ArgParser parser, List<String> args) => |
| 80 expect(() => parser.parse(args, allowTrailingOptions: true), |
| 81 throwsFormatException, |
| 82 reason: "with allowTrailingOptions: true"); |
OLD | NEW |