clasp-ruby 0.22.1 → 0.23.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +63 -52
  3. data/examples/cr-example.rb +16 -16
  4. data/examples/flag_and_option_specifications.md +25 -25
  5. data/examples/flag_and_option_specifications.rb +6 -6
  6. data/examples/show_usage_and_version.md +5 -5
  7. data/examples/show_usage_and_version.rb +1 -1
  8. data/examples/simple_command_line_no_specifications.rb +1 -1
  9. data/lib/clasp/arguments.rb +543 -531
  10. data/lib/clasp/clasp.rb +7 -7
  11. data/lib/clasp/cli.rb +140 -135
  12. data/lib/clasp/doc_.rb +3 -3
  13. data/lib/clasp/old_module.rb +3 -3
  14. data/lib/clasp/specifications.rb +337 -333
  15. data/lib/clasp/util/exceptions.rb +17 -17
  16. data/lib/clasp/util/value_parser.rb +97 -97
  17. data/lib/clasp/version.rb +15 -15
  18. data/lib/clasp-ruby.rb +3 -2
  19. data/lib/clasp.rb +3 -2
  20. data/test/scratch/test_list_command_line.rb +6 -6
  21. data/test/scratch/test_specifications.rb +14 -14
  22. data/test/scratch/test_usage.rb +6 -6
  23. data/test/scratch/test_usage_from_DATA.rb +1 -1
  24. data/test/scratch/test_usage_with_duplicate_specifications.rb +6 -6
  25. data/test/unit/tc_ARGV_rewrite.rb +36 -38
  26. data/test/unit/tc_arguments_1.rb +702 -656
  27. data/test/unit/tc_arguments_2.rb +52 -53
  28. data/test/unit/tc_arguments_3.rb +77 -77
  29. data/test/unit/tc_arguments_inspect.rb +55 -56
  30. data/test/unit/tc_cli.rb +4 -4
  31. data/test/unit/tc_default_value.rb +91 -91
  32. data/test/unit/tc_defaults_1.rb +38 -38
  33. data/test/unit/tc_examples_Arguments.rb +130 -132
  34. data/test/unit/tc_extras.rb +24 -26
  35. data/test/unit/tc_option_required.rb +38 -39
  36. data/test/unit/tc_option_value_aliases.rb +44 -44
  37. data/test/unit/tc_specifications.rb +7 -8
  38. data/test/unit/tc_typed_options.rb +204 -204
  39. data/test/unit/tc_usage.rb +112 -55
  40. data/test/unit/tc_with_action.rb +23 -24
  41. data/test/unit/ts_all.rb +1 -1
  42. metadata +8 -7
@@ -8,144 +8,144 @@ require 'test/unit'
8
8
 
9
9
  class Test_DefaultValue < Test::Unit::TestCase
10
10
 
11
- def test_long_form_without_default
11
+ def test_long_form_without_default
12
12
 
13
- specifications = [
13
+ specifications = [
14
14
 
15
- CLASP.Option('--verbosity', values: [ 'silent', 'terse', 'normal', 'chatty', 'verbose' ])
16
- ]
15
+ CLASP.Option('--verbosity', values: [ 'silent', 'terse', 'normal', 'chatty', 'verbose' ])
16
+ ]
17
17
 
18
- argv = [ '--verbosity' ]
19
- args = CLASP::Arguments.new(argv, specifications)
18
+ argv = [ '--verbosity' ]
19
+ args = CLASP::Arguments.new(argv, specifications)
20
20
 
21
- assert_equal 0, args.flags.size
22
- assert_equal 1, args.options.size
23
- assert_equal 0, args.values.size
21
+ assert_equal 0, args.flags.size
22
+ assert_equal 1, args.options.size
23
+ assert_equal 0, args.values.size
24
24
 
25
- option0 = args.options[0]
25
+ option0 = args.options[0]
26
26
 
27
- assert_equal '--verbosity', option0.name
28
- assert_nil option0.value
29
- end
27
+ assert_equal '--verbosity', option0.name
28
+ assert_nil option0.value
29
+ end
30
30
 
31
- def test_long_form_with_default_empty_value
31
+ def test_long_form_with_default_empty_value
32
32
 
33
- specifications = [
33
+ specifications = [
34
34
 
35
- CLASP.Option('--verbosity', values: [ 'silent', 'terse', 'normal', 'chatty', 'verbose' ], default_value: 'normal')
36
- ]
35
+ CLASP.Option('--verbosity', values: [ 'silent', 'terse', 'normal', 'chatty', 'verbose' ], default_value: 'normal')
36
+ ]
37
37
 
38
- argv = [ '--verbosity=' ]
39
- args = CLASP::Arguments.new(argv, specifications)
38
+ argv = [ '--verbosity=' ]
39
+ args = CLASP::Arguments.new(argv, specifications)
40
40
 
41
- assert_equal 0, args.flags.size
42
- assert_equal 1, args.options.size
43
- assert_equal 0, args.values.size
41
+ assert_equal 0, args.flags.size
42
+ assert_equal 1, args.options.size
43
+ assert_equal 0, args.values.size
44
44
 
45
- option0 = args.options[0]
45
+ option0 = args.options[0]
46
46
 
47
- assert_equal '--verbosity', option0.name
48
- assert_equal 'normal', option0.value
49
- end
47
+ assert_equal '--verbosity', option0.name
48
+ assert_equal 'normal', option0.value
49
+ end
50
50
 
51
- def test_long_form_with_default_missing_value
51
+ def test_long_form_with_default_missing_value
52
52
 
53
- specifications = [
53
+ specifications = [
54
54
 
55
- CLASP.Option('--verbosity', values: [ 'silent', 'terse', 'normal', 'chatty', 'verbose' ], default_value: 'normal')
56
- ]
55
+ CLASP.Option('--verbosity', values: [ 'silent', 'terse', 'normal', 'chatty', 'verbose' ], default_value: 'normal')
56
+ ]
57
57
 
58
- argv = [ '--verbosity' ]
59
- args = CLASP::Arguments.new(argv, specifications)
58
+ argv = [ '--verbosity' ]
59
+ args = CLASP::Arguments.new(argv, specifications)
60
60
 
61
- assert_equal 0, args.flags.size
62
- assert_equal 1, args.options.size
63
- assert_equal 0, args.values.size
61
+ assert_equal 0, args.flags.size
62
+ assert_equal 1, args.options.size
63
+ assert_equal 0, args.values.size
64
64
 
65
- option0 = args.options[0]
65
+ option0 = args.options[0]
66
66
 
67
- assert_equal '--verbosity', option0.name
68
- assert_equal 'normal', option0.value
69
- end
67
+ assert_equal '--verbosity', option0.name
68
+ assert_equal 'normal', option0.value
69
+ end
70
70
 
71
- def test_short_form_without_default
71
+ def test_short_form_without_default
72
72
 
73
- specifications = [
73
+ specifications = [
74
74
 
75
- CLASP.Option('--verbosity', alias: '-v', values: [ 'silent', 'terse', 'normal', 'chatty', 'verbose' ])
76
- ]
75
+ CLASP.Option('--verbosity', alias: '-v', values: [ 'silent', 'terse', 'normal', 'chatty', 'verbose' ])
76
+ ]
77
77
 
78
- argv = [ '-v' ]
79
- args = CLASP::Arguments.new(argv, specifications)
78
+ argv = [ '-v' ]
79
+ args = CLASP::Arguments.new(argv, specifications)
80
80
 
81
- assert_equal 0, args.flags.size
82
- assert_equal 1, args.options.size
83
- assert_equal 0, args.values.size
81
+ assert_equal 0, args.flags.size
82
+ assert_equal 1, args.options.size
83
+ assert_equal 0, args.values.size
84
84
 
85
- option0 = args.options[0]
85
+ option0 = args.options[0]
86
86
 
87
- assert_equal '--verbosity', option0.name
88
- assert_nil option0.value
89
- end
87
+ assert_equal '--verbosity', option0.name
88
+ assert_nil option0.value
89
+ end
90
90
 
91
- def test_short_form_with_default
91
+ def test_short_form_with_default
92
92
 
93
- specifications = [
93
+ specifications = [
94
94
 
95
- CLASP.Option('--verbosity', alias: '-v', values: [ 'silent', 'terse', 'normal', 'chatty', 'verbose' ], default_value: 'normal')
96
- ]
95
+ CLASP.Option('--verbosity', alias: '-v', values: [ 'silent', 'terse', 'normal', 'chatty', 'verbose' ], default_value: 'normal')
96
+ ]
97
97
 
98
- argv = [ '-v' ]
99
- args = CLASP::Arguments.new(argv, specifications)
98
+ argv = [ '-v' ]
99
+ args = CLASP::Arguments.new(argv, specifications)
100
100
 
101
- assert_equal 0, args.flags.size
102
- assert_equal 1, args.options.size
103
- assert_equal 0, args.values.size
101
+ assert_equal 0, args.flags.size
102
+ assert_equal 1, args.options.size
103
+ assert_equal 0, args.values.size
104
104
 
105
- option0 = args.options[0]
105
+ option0 = args.options[0]
106
106
 
107
- assert_equal '--verbosity', option0.name
108
- assert_equal 'normal', option0.value
109
- end
107
+ assert_equal '--verbosity', option0.name
108
+ assert_equal 'normal', option0.value
109
+ end
110
110
 
111
- def test_short_form_without_default_and_separator
111
+ def test_short_form_without_default_and_separator
112
112
 
113
- specifications = [
113
+ specifications = [
114
114
 
115
- CLASP.Option('--verbosity', alias: '-v', values: [ 'silent', 'terse', 'normal', 'chatty', 'verbose' ])
116
- ]
115
+ CLASP.Option('--verbosity', alias: '-v', values: [ 'silent', 'terse', 'normal', 'chatty', 'verbose' ])
116
+ ]
117
117
 
118
- argv = [ '-v', '--', 'some-value' ]
119
- args = CLASP::Arguments.new(argv, specifications)
118
+ argv = [ '-v', '--', 'some-value' ]
119
+ args = CLASP::Arguments.new(argv, specifications)
120
120
 
121
- assert_equal 0, args.flags.size
122
- assert_equal 1, args.options.size
123
- assert_equal 1, args.values.size
121
+ assert_equal 0, args.flags.size
122
+ assert_equal 1, args.options.size
123
+ assert_equal 1, args.values.size
124
124
 
125
- option0 = args.options[0]
125
+ option0 = args.options[0]
126
126
 
127
- assert_equal '--verbosity', option0.name
128
- assert_nil option0.value
129
- end
127
+ assert_equal '--verbosity', option0.name
128
+ assert_nil option0.value
129
+ end
130
130
 
131
- def test_short_form_with_default_and_separator
131
+ def test_short_form_with_default_and_separator
132
132
 
133
- specifications = [
133
+ specifications = [
134
134
 
135
- CLASP.Option('--verbosity', alias: '-v', values: [ 'silent', 'terse', 'normal', 'chatty', 'verbose' ], default_value: 'normal')
136
- ]
135
+ CLASP.Option('--verbosity', alias: '-v', values: [ 'silent', 'terse', 'normal', 'chatty', 'verbose' ], default_value: 'normal')
136
+ ]
137
137
 
138
- argv = [ '-v', '--', 'some-value' ]
139
- args = CLASP::Arguments.new(argv, specifications)
138
+ argv = [ '-v', '--', 'some-value' ]
139
+ args = CLASP::Arguments.new(argv, specifications)
140
140
 
141
- assert_equal 0, args.flags.size
142
- assert_equal 1, args.options.size
143
- assert_equal 1, args.values.size
141
+ assert_equal 0, args.flags.size
142
+ assert_equal 1, args.options.size
143
+ assert_equal 1, args.values.size
144
144
 
145
- option0 = args.options[0]
145
+ option0 = args.options[0]
146
146
 
147
- assert_equal '--verbosity', option0.name
148
- assert_equal 'normal', option0.value
149
- end
147
+ assert_equal '--verbosity', option0.name
148
+ assert_equal 'normal', option0.value
149
+ end
150
150
  end
151
151
 
@@ -8,66 +8,66 @@ require 'test/unit'
8
8
 
9
9
  class Test_defaults < Test::Unit::TestCase
10
10
 
11
- def test_responds_to_Help
11
+ def test_responds_to_Help
12
12
 
13
- assert CLASP::Flag.respond_to? :Help
14
- end
13
+ assert CLASP::Flag.respond_to? :Help
14
+ end
15
15
 
16
- def test_Help_is_idempotent
16
+ def test_Help_is_idempotent
17
17
 
18
- help_1 = CLASP::Flag.Help
19
- help_2 = CLASP::Flag.Help
18
+ help_1 = CLASP::Flag.Help
19
+ help_2 = CLASP::Flag.Help
20
20
 
21
- assert_same help_1, help_2
22
- end
21
+ assert_same help_1, help_2
22
+ end
23
23
 
24
- def test_Help_attributes
24
+ def test_Help_attributes
25
25
 
26
- assert_equal '--help', CLASP::Flag.Help.name
26
+ assert_equal '--help', CLASP::Flag.Help.name
27
27
 
28
- assert_equal [], CLASP::Flag.Help.aliases
28
+ assert_equal [], CLASP::Flag.Help.aliases
29
29
 
30
- assert_equal 'shows this help and terminates', CLASP::Flag.Help.help
31
- end
30
+ assert_equal 'shows this help and terminates', CLASP::Flag.Help.help
31
+ end
32
32
 
33
- def test_Help_extras
33
+ def test_Help_extras
34
34
 
35
- help1 = CLASP::Flag.Help
36
- help2 = CLASP::Flag.Help(v1: 'v', v2: 2)
35
+ help1 = CLASP::Flag.Help
36
+ help2 = CLASP::Flag.Help(v1: 'v', v2: 2)
37
37
 
38
- assert_equal Hash.new, help1.extras
39
- assert_equal Hash[ [ [ :v1, 'v' ], [ :v2, 2 ] ] ], help2.extras
40
- end
38
+ assert_equal Hash.new, help1.extras
39
+ assert_equal Hash[ [ [ :v1, 'v' ], [ :v2, 2 ] ] ], help2.extras
40
+ end
41
41
 
42
- def test_responds_to_Version
42
+ def test_responds_to_Version
43
43
 
44
- assert CLASP::Flag.respond_to? :Version
45
- end
44
+ assert CLASP::Flag.respond_to? :Version
45
+ end
46
46
 
47
- def test_Version_is_idempotent
47
+ def test_Version_is_idempotent
48
48
 
49
- version_1 = CLASP::Flag.Version
50
- version_2 = CLASP::Flag.Version
49
+ version_1 = CLASP::Flag.Version
50
+ version_2 = CLASP::Flag.Version
51
51
 
52
- assert_same version_1, version_2
53
- end
52
+ assert_same version_1, version_2
53
+ end
54
54
 
55
- def test_Version_attributes
55
+ def test_Version_attributes
56
56
 
57
- assert_equal '--version', CLASP::Flag.Version.name
57
+ assert_equal '--version', CLASP::Flag.Version.name
58
58
 
59
- assert_equal [], CLASP::Flag.Version.aliases
59
+ assert_equal [], CLASP::Flag.Version.aliases
60
60
 
61
- assert_equal 'shows version and terminates', CLASP::Flag.Version.help
62
- end
61
+ assert_equal 'shows version and terminates', CLASP::Flag.Version.help
62
+ end
63
63
 
64
- def test_Version_extras
64
+ def test_Version_extras
65
65
 
66
- version1 = CLASP::Flag.Version
67
- version2 = CLASP::Flag.Version(v1: 'v', v2: 2)
66
+ version1 = CLASP::Flag.Version
67
+ version2 = CLASP::Flag.Version(v1: 'v', v2: 2)
68
68
 
69
- assert_equal Hash.new, version1.extras
70
- assert_equal Hash[ [ [ :v1, 'v' ], [ :v2, 2 ] ] ], version2.extras
71
- end
69
+ assert_equal Hash.new, version1.extras
70
+ assert_equal Hash[ [ [ :v1, 'v' ], [ :v2, 2 ] ] ], version2.extras
71
+ end
72
72
  end
73
73
 
@@ -8,142 +8,140 @@ require 'test/unit'
8
8
 
9
9
  class Test_Examples < Test::Unit::TestCase
10
10
 
11
- def test_SimpleCommandLineNoSpecifications
11
+ def test_SimpleCommandLineNoSpecifications
12
12
 
13
- argv = %w{ --show-all=true infile -c outfile }
14
-
15
- args = CLASP::Arguments.new(argv)
16
-
17
- assert_equal 1, args.flags.size
18
- flag = args.flags[0]
19
- assert_equal "-c", flag.name
20
- assert_equal 1, args.options.size
21
- option = args.options[0]
22
- assert_equal "--show-all", option.name
23
- assert_equal "true", option.value
24
- assert_equal 2, args.values.size
25
- assert_equal "infile", args.values[0]
26
- assert_equal "outfile", args.values[1]
27
- end
13
+ argv = %w{ --show-all=true infile -c outfile }
14
+
15
+ args = CLASP::Arguments.new(argv)
16
+
17
+ assert_equal 1, args.flags.size
18
+ flag = args.flags[0]
19
+ assert_equal "-c", flag.name
20
+ assert_equal 1, args.options.size
21
+ option = args.options[0]
22
+ assert_equal "--show-all", option.name
23
+ assert_equal "true", option.value
24
+ assert_equal 2, args.values.size
25
+ assert_equal "infile", args.values[0]
26
+ assert_equal "outfile", args.values[1]
27
+ end
28
28
 
29
- def test_UseOfSpecialDoubleSlashFlagToTreatAllSubsequentArgumentsAsValues
29
+ def test_UseOfSpecialDoubleSlashFlagToTreatAllSubsequentArgumentsAsValues
30
30
 
31
- argv = %w{ --show-all=true -- infile outfile -c }
31
+ argv = %w{ --show-all=true -- infile outfile -c }
32
32
 
33
- args = CLASP::Arguments.new(argv)
33
+ args = CLASP::Arguments.new(argv)
34
34
 
35
- assert_equal 0, args.flags.size
36
- option = args.options[0]
37
- assert_equal "--show-all", option.name
38
- assert_equal "true", option.value
39
- assert_equal 3, args.values.size
40
- assert_equal "infile", args.values[0]
41
- assert_equal "outfile", args.values[1]
42
- assert_equal "-c", args.values[2]
43
- end
44
-
45
- def test_UseOfFlagShortForms
46
-
47
- specifications = [
48
-
49
- CLASP.Flag('--verbose', alias: '-v'),
50
- CLASP.Flag('--trace-output', aliases: [ '-t', '--trace' ]),
51
- ]
52
-
53
- argv = %w{ --trace -v }
54
-
55
- args = CLASP::Arguments.new(argv, specifications)
56
-
57
- assert_equal 2, args.flags.size
58
- flag = args.flags[0]
59
- assert_equal '--trace-output', flag.name
60
- assert_equal '--trace', flag.given_name
61
- flag = args.flags[1]
62
- assert_equal '--verbose', flag.name
63
- assert_equal '-v', flag.given_name
64
- assert_equal 0, args.options.size
65
- assert_equal 0, args.values.size
66
- end
67
-
68
- def test_UseOfFlagSingleShortFormsCombined
69
-
70
- specifications = [
71
-
72
- CLASP.Flag('--expand', alias: '-x'),
73
- CLASP.Flag('--verbose', alias: '-v'),
74
- CLASP.Flag('--trace-output', aliases: [ '-t', '--trace' ]),
75
- ]
76
-
77
- argv = %w{ -tvx }
78
-
79
- args = CLASP::Arguments.new(argv, specifications)
80
-
81
- assert_equal 3, args.flags.size
82
- flag = args.flags[0]
83
- assert_equal '--trace-output', flag.name
84
- assert_equal '-tvx', flag.given_name
85
- flag = args.flags[1]
86
- assert_equal '--verbose', flag.name
87
- assert_equal '-tvx', flag.given_name
88
- flag = args.flags[2]
89
- assert_equal '--expand', flag.name
90
- assert_equal '-tvx', flag.given_name
91
- assert_equal 0, args.options.size
92
- assert_equal 0, args.values.size
93
- end
94
-
95
- def test_UseOfOptionShortForm
96
-
97
- specifications = [
98
-
99
- CLASP.Option('--show-all', alias: '-a'),
100
- ]
101
-
102
- argv = %w{ -c -a true infile outfile }
103
-
104
- args = CLASP::Arguments.new(argv, specifications)
105
-
106
- assert_equal 1, args.flags.size
107
- flag = args.flags[0]
108
- assert_equal "-c", flag.name
109
- assert_equal 1, args.options.size
110
- option = args.options[0]
111
- assert_equal "--show-all", option.name
112
- assert_equal "-a", option.given_name
113
- assert_equal "true", option.value
114
- assert_equal 2, args.values.size
115
- assert_equal "infile", args.values[0]
116
- assert_equal "outfile", args.values[1]
117
- end
118
-
119
- def test_UseOfFlagsAsSpecificationsForOption
120
-
121
- specifications = [
122
-
123
- CLASP.Flag('--dump-contents', alias: '-d'),
124
- CLASP.Option('--log-level', alias: '-l'),
125
- CLASP.Flag('--log-level=warning', alias: '-w'),
126
- ]
127
-
128
- argv = %w{ myfile -dw }
129
-
130
- args = CLASP::Arguments.new(argv, specifications)
131
-
132
- assert_equal 1, args.flags.size
133
- flag = args.flags[0]
134
- assert_equal "--dump-contents", flag.name
135
- assert_equal "-dw", flag.given_name
136
- assert_equal 1, flag.given_index
137
- assert_equal 1, args.options.size
138
- option = args.options[0]
139
- assert_equal "--log-level", option.name
140
- assert_equal "-dw", option.given_name
141
- assert_equal 1, flag.given_index
142
- assert_equal "warning", option.value
143
- assert_equal 1, args.values.size
144
- assert_equal "myfile", args.values[0]
145
- end
35
+ assert_equal 0, args.flags.size
36
+ option = args.options[0]
37
+ assert_equal "--show-all", option.name
38
+ assert_equal "true", option.value
39
+ assert_equal 3, args.values.size
40
+ assert_equal "infile", args.values[0]
41
+ assert_equal "outfile", args.values[1]
42
+ assert_equal "-c", args.values[2]
43
+ end
44
+
45
+ def test_UseOfFlagShortForms
46
+
47
+ specifications = [
48
+
49
+ CLASP.Flag('--verbose', alias: '-v'),
50
+ CLASP.Flag('--trace-output', aliases: [ '-t', '--trace' ]),
51
+ ]
52
+
53
+ argv = %w{ --trace -v }
54
+
55
+ args = CLASP::Arguments.new(argv, specifications)
56
+
57
+ assert_equal 2, args.flags.size
58
+ flag = args.flags[0]
59
+ assert_equal '--trace-output', flag.name
60
+ assert_equal '--trace', flag.given_name
61
+ flag = args.flags[1]
62
+ assert_equal '--verbose', flag.name
63
+ assert_equal '-v', flag.given_name
64
+ assert_equal 0, args.options.size
65
+ assert_equal 0, args.values.size
66
+ end
67
+
68
+ def test_UseOfFlagSingleShortFormsCombined
69
+
70
+ specifications = [
71
+
72
+ CLASP.Flag('--expand', alias: '-x'),
73
+ CLASP.Flag('--verbose', alias: '-v'),
74
+ CLASP.Flag('--trace-output', aliases: [ '-t', '--trace' ]),
75
+ ]
76
+
77
+ argv = %w{ -tvx }
78
+
79
+ args = CLASP::Arguments.new(argv, specifications)
80
+
81
+ assert_equal 3, args.flags.size
82
+ flag = args.flags[0]
83
+ assert_equal '--trace-output', flag.name
84
+ assert_equal '-tvx', flag.given_name
85
+ flag = args.flags[1]
86
+ assert_equal '--verbose', flag.name
87
+ assert_equal '-tvx', flag.given_name
88
+ flag = args.flags[2]
89
+ assert_equal '--expand', flag.name
90
+ assert_equal '-tvx', flag.given_name
91
+ assert_equal 0, args.options.size
92
+ assert_equal 0, args.values.size
93
+ end
94
+
95
+ def test_UseOfOptionShortForm
96
+
97
+ specifications = [
98
+
99
+ CLASP.Option('--show-all', alias: '-a'),
100
+ ]
101
+
102
+ argv = %w{ -c -a true infile outfile }
103
+
104
+ args = CLASP::Arguments.new(argv, specifications)
105
+
106
+ assert_equal 1, args.flags.size
107
+ flag = args.flags[0]
108
+ assert_equal "-c", flag.name
109
+ assert_equal 1, args.options.size
110
+ option = args.options[0]
111
+ assert_equal "--show-all", option.name
112
+ assert_equal "-a", option.given_name
113
+ assert_equal "true", option.value
114
+ assert_equal 2, args.values.size
115
+ assert_equal "infile", args.values[0]
116
+ assert_equal "outfile", args.values[1]
117
+ end
118
+
119
+ def test_UseOfFlagsAsSpecificationsForOption
120
+
121
+ specifications = [
122
+
123
+ CLASP.Flag('--dump-contents', alias: '-d'),
124
+ CLASP.Option('--log-level', alias: '-l'),
125
+ CLASP.Flag('--log-level=warning', alias: '-w'),
126
+ ]
127
+
128
+ argv = %w{ myfile -dw }
129
+
130
+ args = CLASP::Arguments.new(argv, specifications)
131
+
132
+ assert_equal 1, args.flags.size
133
+ flag = args.flags[0]
134
+ assert_equal "--dump-contents", flag.name
135
+ assert_equal "-dw", flag.given_name
136
+ assert_equal 1, flag.given_index
137
+ assert_equal 1, args.options.size
138
+ option = args.options[0]
139
+ assert_equal "--log-level", option.name
140
+ assert_equal "-dw", option.given_name
141
+ assert_equal 1, flag.given_index
142
+ assert_equal "warning", option.value
143
+ assert_equal 1, args.values.size
144
+ assert_equal "myfile", args.values[0]
145
+ end
146
146
  end
147
147
 
148
- # ############################## end of file ############################# #
149
-