| 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 resultsAll = parser.parse(args, allowTrailingOptions: true); |
| 17 expect(results['flag'], isFalse); | 18 expect(resultsAll['flag'], isTrue); |
| 18 expect(results.rest, orderedEquals(args)); | 19 expect(resultsAll.rest, equals(['A'])); |
| 19 }); | 20 }); |
| 20 | 21 |
| 21 test('followed by option', () { | 22 test('followed by option', () { |
| 22 var parser = new ArgParser()..addOption('opt'); | 23 var parser = new ArgParser()..addOption('opt'); |
| 23 var args = ['A', '--opt']; | 24 var args = ['A', '--opt']; |
| 24 | 25 |
| 25 var results = parser.parse(args); | 26 expectThrows(parser, args); |
| 26 expect(results['opt'], isNull); | |
| 27 expect(results.rest, orderedEquals(args)); | |
| 28 }); | 27 }); |
| 29 | 28 |
| 30 test('followed by option and value', () { | 29 test('followed by option and value', () { |
| 31 var parser = new ArgParser()..addOption('opt'); | 30 var parser = new ArgParser()..addOption('opt'); |
| 32 var args = ['A', '--opt', 'V']; | 31 var args = ['A', '--opt', 'V']; |
| 33 | 32 |
| 34 var results = parser.parse(args); | 33 var resultsAll = parser.parse(args, allowTrailingOptions: true); |
| 35 expect(results['opt'], isNull); | 34 expect(resultsAll['opt'], equals('V')); |
| 36 expect(results.rest, orderedEquals(args)); | 35 expect(resultsAll.rest, equals(['A'])); |
| 37 }); | 36 }); |
| 38 | 37 |
| 39 test('followed by unknown flag', () { | 38 test('followed by unknown flag', () { |
| 40 var parser = new ArgParser(); | 39 var parser = new ArgParser(); |
| 41 var args = ['A', '--xflag']; | 40 var args = ['A', '--xflag']; |
| 42 var results = parser.parse(args); | 41 |
| 43 expect(results.rest, orderedEquals(args)); | 42 expectThrows(parser, args); |
| 44 }); | 43 }); |
| 45 | 44 |
| 46 test('followed by unknown option and value', () { | 45 test('followed by unknown option and value', () { |
| 47 var parser = new ArgParser(); | 46 var parser = new ArgParser(); |
| 48 var args = ['A', '--xopt', 'V']; | 47 var args = ['A', '--xopt', 'V']; |
| 49 var results = parser.parse(args); | 48 |
| 50 expect(results.rest, orderedEquals(args)); | 49 expectThrows(parser, args); |
| 51 }); | 50 }); |
| 52 | 51 |
| 53 test('followed by command', () { | 52 test('followed by command', () { |
| 54 var parser = new ArgParser()..addCommand('com'); | 53 var parser = new ArgParser()..addCommand('com'); |
| 55 var args = ['A', 'com']; | 54 var args = ['A', 'com']; |
| 56 | 55 |
| 57 var results = parser.parse(args); | 56 expectThrows(parser, args); |
| 58 expect(results.command, isNull); | |
| 59 expect(results.rest, orderedEquals(args)); | |
| 60 }); | 57 }); |
| 61 }); | 58 }); |
| 62 } | 59 } |
| 60 expectThrows(ArgParser parser, List<String> args) => |
| 61 expect(() => parser.parse(args, allowTrailingOptions: true), |
| 62 throwsFormatException, |
| 63 reason: "with allowTrailingOptions: true"); |
| OLD | NEW |