clasp-ruby 0.23.0.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 +538 -537
  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 +694 -694
  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 +5 -4
@@ -8,738 +8,738 @@ require 'test/unit'
8
8
 
9
9
  class Test_Arguments < Test::Unit::TestCase
10
10
 
11
- def test_empty_args
11
+ def test_empty_args
12
12
 
13
- args = CLASP::Arguments.new([])
13
+ args = CLASP::Arguments.new([])
14
14
 
15
- assert_equal 0, args.flags.size
15
+ assert_equal 0, args.flags.size
16
16
 
17
- assert_equal 0, args.options.size
17
+ assert_equal 0, args.options.size
18
18
 
19
- assert_equal 0, args.values.size
19
+ assert_equal 0, args.values.size
20
20
 
21
- assert_nil args.double_slash_index
22
- end
21
+ assert_nil args.double_slash_index
22
+ end
23
23
 
24
- def test_one_value
24
+ def test_one_value
25
25
 
26
- args = CLASP::Arguments.new([ 'value1' ])
26
+ args = CLASP::Arguments.new([ 'value1' ])
27
27
 
28
- assert_equal 0, args.flags.size
28
+ assert_equal 0, args.flags.size
29
29
 
30
- assert_equal 0, args.options.size
30
+ assert_equal 0, args.options.size
31
31
 
32
- assert_equal 1, args.values.size
33
- assert_equal 'value1', args.values[0]
32
+ assert_equal 1, args.values.size
33
+ assert_equal 'value1', args.values[0]
34
34
 
35
- assert_nil args.double_slash_index
36
- end
35
+ assert_nil args.double_slash_index
36
+ end
37
37
 
38
- def test_two_values
38
+ def test_two_values
39
39
 
40
- args = CLASP::Arguments.new([ 'value1', 'val2' ])
40
+ args = CLASP::Arguments.new([ 'value1', 'val2' ])
41
41
 
42
- assert_equal 0, args.flags.size
42
+ assert_equal 0, args.flags.size
43
43
 
44
- assert_equal 0, args.options.size
44
+ assert_equal 0, args.options.size
45
45
 
46
- assert_equal 2, args.values.size
47
- assert_equal 'value1', args.values[0]
48
- assert_equal 'val2', args.values[1]
46
+ assert_equal 2, args.values.size
47
+ assert_equal 'value1', args.values[0]
48
+ assert_equal 'val2', args.values[1]
49
49
 
50
- assert_nil args.double_slash_index
51
- end
50
+ assert_nil args.double_slash_index
51
+ end
52
52
 
53
- def test_ten_values
53
+ def test_ten_values
54
54
 
55
- argv = (0 .. 10).map { |n| "value#{n}" }
55
+ argv = (0 .. 10).map { |n| "value#{n}" }
56
56
 
57
- args = CLASP::Arguments.new(argv)
57
+ args = CLASP::Arguments.new(argv)
58
58
 
59
- assert_equal 0, args.flags.size
59
+ assert_equal 0, args.flags.size
60
60
 
61
- assert_equal 0, args.options.size
61
+ assert_equal 0, args.options.size
62
62
 
63
- assert_equal argv.size, args.values.size
64
- (0 ... argv.size).each do |n|
65
- assert_equal argv[n], args.values[n]
66
- end
63
+ assert_equal argv.size, args.values.size
64
+ (0 ... argv.size).each do |n|
65
+ assert_equal argv[n], args.values[n]
66
+ end
67
67
 
68
- assert_nil args.double_slash_index
69
- end
68
+ assert_nil args.double_slash_index
69
+ end
70
70
 
71
- def test_one_flag
71
+ def test_one_flag
72
72
 
73
- args = CLASP::Arguments.new([ '-f1' ])
73
+ args = CLASP::Arguments.new([ '-f1' ])
74
74
 
75
- assert_equal 1, args.flags.size
76
- assert_equal 0, args.flags[0].given_index
77
- assert_equal '-f1', args.flags[0].to_s
78
- assert_equal '-f1', args.flags[0].name
79
- assert_equal 'f1', args.flags[0].given_label
80
- assert_equal '-f1', args.flags[0].given_name
81
- assert_equal 1, args.flags[0].given_hyphens
82
- assert_nil args.flags[0].argument_specification
83
- assert_equal Hash.new, args.flags[0].extras
75
+ assert_equal 1, args.flags.size
76
+ assert_equal 0, args.flags[0].given_index
77
+ assert_equal '-f1', args.flags[0].to_s
78
+ assert_equal '-f1', args.flags[0].name
79
+ assert_equal 'f1', args.flags[0].given_label
80
+ assert_equal '-f1', args.flags[0].given_name
81
+ assert_equal 1, args.flags[0].given_hyphens
82
+ assert_nil args.flags[0].argument_specification
83
+ assert_equal Hash.new, args.flags[0].extras
84
84
 
85
- assert_equal 0, args.options.size
85
+ assert_equal 0, args.options.size
86
86
 
87
- assert_equal 0, args.values.size
87
+ assert_equal 0, args.values.size
88
88
 
89
- assert_nil args.double_slash_index
90
- end
89
+ assert_nil args.double_slash_index
90
+ end
91
91
 
92
- def test_two_flags
92
+ def test_two_flags
93
93
 
94
- args = CLASP::Arguments.new([ '-f1', '--flag2' ])
94
+ args = CLASP::Arguments.new([ '-f1', '--flag2' ])
95
95
 
96
- assert_equal 2, args.flags.size
97
- assert_equal 0, args.flags[0].given_index
98
- assert_equal '-f1', args.flags[0].to_s
99
- assert_equal '-f1', args.flags[0].name
100
- assert_equal 'f1', args.flags[0].given_label
101
- assert_equal '-f1', args.flags[0].given_name
102
- assert_equal 1, args.flags[0].given_hyphens
103
- assert_nil args.flags[0].argument_specification
104
- assert_equal Hash.new, args.flags[0].extras
105
- assert_equal 1, args.flags[1].given_index
106
- assert_equal '--flag2', args.flags[1].to_s
107
- assert_equal '--flag2', args.flags[1].name
108
- assert_equal 'flag2', args.flags[1].given_label
109
- assert_equal '--flag2', args.flags[1].given_name
110
- assert_equal 2, args.flags[1].given_hyphens
111
- assert_nil args.flags[1].argument_specification
112
- assert_equal Hash.new, args.flags[1].extras
96
+ assert_equal 2, args.flags.size
97
+ assert_equal 0, args.flags[0].given_index
98
+ assert_equal '-f1', args.flags[0].to_s
99
+ assert_equal '-f1', args.flags[0].name
100
+ assert_equal 'f1', args.flags[0].given_label
101
+ assert_equal '-f1', args.flags[0].given_name
102
+ assert_equal 1, args.flags[0].given_hyphens
103
+ assert_nil args.flags[0].argument_specification
104
+ assert_equal Hash.new, args.flags[0].extras
105
+ assert_equal 1, args.flags[1].given_index
106
+ assert_equal '--flag2', args.flags[1].to_s
107
+ assert_equal '--flag2', args.flags[1].name
108
+ assert_equal 'flag2', args.flags[1].given_label
109
+ assert_equal '--flag2', args.flags[1].given_name
110
+ assert_equal 2, args.flags[1].given_hyphens
111
+ assert_nil args.flags[1].argument_specification
112
+ assert_equal Hash.new, args.flags[1].extras
113
113
 
114
- assert_equal 0, args.options.size
114
+ assert_equal 0, args.options.size
115
115
 
116
- assert_equal 0, args.values.size
116
+ assert_equal 0, args.values.size
117
117
 
118
- assert_nil args.double_slash_index
119
- end
118
+ assert_nil args.double_slash_index
119
+ end
120
120
 
121
- def test_three_flags
121
+ def test_three_flags
122
122
 
123
- args = CLASP::Arguments.new([ '-f1', '--flag2', '---x' ])
123
+ args = CLASP::Arguments.new([ '-f1', '--flag2', '---x' ])
124
124
 
125
- assert_equal 3, args.flags.size
126
- assert_equal 0, args.flags[0].given_index
127
- assert_equal '-f1', args.flags[0].to_s
128
- assert_equal '-f1', args.flags[0].name
129
- assert_equal 'f1', args.flags[0].given_label
130
- assert_equal '-f1', args.flags[0].given_name
131
- assert_equal 1, args.flags[0].given_hyphens
132
- assert_nil args.flags[0].argument_specification
133
- assert_equal Hash.new, args.flags[0].extras
134
- assert_equal 1, args.flags[1].given_index
135
- assert_equal '--flag2', args.flags[1].to_s
136
- assert_equal '--flag2', args.flags[1].name
137
- assert_equal 'flag2', args.flags[1].given_label
138
- assert_equal '--flag2', args.flags[1].given_name
139
- assert_equal 2, args.flags[1].given_hyphens
140
- assert_nil args.flags[1].argument_specification
141
- assert_equal Hash.new, args.flags[1].extras
142
- assert_equal 2, args.flags[2].given_index
143
- assert_equal '---x', args.flags[2].to_s
144
- assert_equal '---x', args.flags[2].name
145
- assert_equal 'x', args.flags[2].given_label
146
- assert_equal '---x', args.flags[2].given_name
147
- assert_equal 3, args.flags[2].given_hyphens
148
- assert_nil args.flags[2].argument_specification
149
- assert_equal Hash.new, args.flags[2].extras
150
-
151
- assert_equal 0, args.options.size
152
-
153
- assert_equal 0, args.values.size
154
-
155
- assert_nil args.double_slash_index
156
- end
157
-
158
- def test_one_option
159
-
160
- args = CLASP::Arguments.new([ '-o1=v1' ])
161
-
162
- assert_equal 0, args.flags.size
163
-
164
- assert_equal 1, args.options.size
165
- assert_equal 0, args.options[0].given_index
166
- assert_equal '-o1=v1', args.options[0].to_s
167
- assert_equal '-o1', args.options[0].name
168
- assert_equal 'o1', args.options[0].given_label
169
- assert_equal 'v1', args.options[0].value
170
- assert_equal '-o1', args.options[0].given_name
171
- assert_equal 1, args.options[0].given_hyphens
172
- assert_nil args.options[0].argument_specification
173
- assert_equal Hash.new, args.options[0].extras
174
-
175
- assert_equal 0, args.values.size
176
-
177
- assert_nil args.double_slash_index
178
- end
179
-
180
- def test_two_options
181
-
182
- args = CLASP::Arguments.new([ '-o1=v1', '--option2=value2' ])
183
-
184
- assert_equal 0, args.flags.size
185
-
186
- assert_equal 2, args.options.size
187
- assert_equal '-o1=v1', args.options[0].to_s
188
- assert_equal '-o1', args.options[0].name
189
- assert_equal 'o1', args.options[0].given_label
190
- assert_equal 'v1', args.options[0].value
191
- assert_equal '-o1', args.options[0].given_name
192
- assert_equal 1, args.options[0].given_hyphens
193
- assert_nil args.options[0].argument_specification
194
- assert_equal Hash.new, args.options[0].extras
195
- assert_equal '--option2=value2', args.options[1].to_s
196
- assert_equal '--option2', args.options[1].name
197
- assert_equal 'option2', args.options[1].given_label
198
- assert_equal 'value2', args.options[1].value
199
- assert_equal '--option2', args.options[1].given_name
200
- assert_equal 2, args.options[1].given_hyphens
201
- assert_nil args.options[1].argument_specification
202
- assert_equal Hash.new, args.options[1].extras
203
-
204
- assert_equal 0, args.values.size
205
-
206
- assert_nil args.double_slash_index
207
- end
208
-
209
- def test_three_options
210
-
211
- args = CLASP::Arguments.new([ '-o1=v1', '--option2=value2', '---the-third-option=the third value' ])
212
-
213
- assert_equal 0, args.flags.size
214
-
215
- assert_equal 3, args.options.size
216
- assert_equal '-o1=v1', args.options[0].to_s
217
- assert_equal '-o1', args.options[0].name
218
- assert_equal 'o1', args.options[0].given_label
219
- assert_equal 'v1', args.options[0].value
220
- assert_equal '-o1', args.options[0].given_name
221
- assert_equal 1, args.options[0].given_hyphens
222
- assert_nil args.options[0].argument_specification
223
- assert_equal Hash.new, args.options[0].extras
224
- assert_equal '--option2=value2', args.options[1].to_s
225
- assert_equal '--option2', args.options[1].name
226
- assert_equal 'option2', args.options[1].given_label
227
- assert_equal 'value2', args.options[1].value
228
- assert_equal '--option2', args.options[1].given_name
229
- assert_equal 2, args.options[1].given_hyphens
230
- assert_nil args.options[1].argument_specification
231
- assert_equal Hash.new, args.options[1].extras
232
- assert_equal '---the-third-option=the third value', args.options[2].to_s
233
- assert_equal '---the-third-option', args.options[2].name
234
- assert_equal 'the-third-option', args.options[2].given_label
235
- assert_equal 'the third value', args.options[2].value
236
- assert_equal '---the-third-option', args.options[2].given_name
237
- assert_equal 3, args.options[2].given_hyphens
238
- assert_nil args.options[2].argument_specification
239
- assert_equal Hash.new, args.options[2].extras
240
-
241
- assert_equal 0, args.values.size
242
-
243
- assert_nil args.double_slash_index
244
- end
245
-
246
- def test_one_flag_and_one_option_and_one_value
247
-
248
- args = CLASP::Arguments.new [ '-f1', 'value1', '--first-option=val1' ]
249
-
250
- assert_equal 1, args.flags.size
251
- assert_equal '-f1', args.flags[0].to_s
252
- assert_equal '-f1', args.flags[0].name
253
- assert_equal 'f1', args.flags[0].given_label
254
- assert_equal '-f1', args.flags[0].given_name
255
- assert_equal 1, args.flags[0].given_hyphens
256
- assert_nil args.flags[0].argument_specification
257
- assert_equal Hash.new, args.flags[0].extras
258
-
259
- assert_equal 1, args.options.size
260
- assert_equal '--first-option=val1', args.options[0].to_s
261
- assert_equal '--first-option', args.options[0].name
262
- assert_equal 'first-option', args.options[0].given_label
263
- assert_equal 'val1', args.options[0].value
264
- assert_equal '--first-option', args.options[0].given_name
265
- assert_equal 2, args.options[0].given_hyphens
266
- assert_equal Hash.new, args.options[0].extras
267
-
268
- assert_equal 1, args.values.size
269
- assert_equal 'value1', args.values[0]
270
-
271
- assert_nil args.double_slash_index
272
- end
273
-
274
- def test_double_hyphen_1
275
-
276
- args = CLASP::Arguments.new [ '-f1', 'value1', '--', '-f2' ]
277
-
278
- assert_equal 1, args.flags.size
279
- assert_equal '-f1', args.flags[0].to_s
280
- assert_equal '-f1', args.flags[0].name
281
- assert_equal 'f1', args.flags[0].given_label
282
- assert_equal '-f1', args.flags[0].given_name
283
- assert_equal 1, args.flags[0].given_hyphens
284
- assert_nil args.flags[0].argument_specification
285
- assert_equal Hash.new, args.flags[0].extras
286
-
287
- assert_equal 0, args.options.size
288
-
289
- assert_equal 2, args.values.size
290
- assert_equal 'value1', args.values[0]
291
- assert_equal '-f2', args.values[1]
292
-
293
- assert_equal 2, args.double_slash_index
294
- end
295
-
296
- def test_double_hyphen_2
297
-
298
- args = CLASP::Arguments.new [ '-f1', 'value1', '--', '-f2', '--', '--option1=v1' ]
299
-
300
- assert_equal 1, args.flags.size
301
- assert_equal '-f1', args.flags[0].to_s
302
- assert_equal '-f1', args.flags[0].name
303
- assert_equal 'f1', args.flags[0].given_label
304
- assert_equal '-f1', args.flags[0].given_name
305
- assert_equal 1, args.flags[0].given_hyphens
306
- assert_nil args.flags[0].argument_specification
307
- assert_equal Hash.new, args.flags[0].extras
308
-
309
- assert_equal 0, args.options.size
310
-
311
- assert_equal 4, args.values.size
312
- assert_equal 'value1', args.values[0]
313
- assert_equal '-f2', args.values[1]
314
- assert_equal '--', args.values[2]
315
- assert_equal '--option1=v1', args.values[3]
316
-
317
- assert_equal 2, args.double_slash_index
318
- end
319
-
320
- def test_double_hyphen_3
321
-
322
- specifications = [
323
-
324
- CLASP.Option('--password', alias: '-p', extras: 'extra'),
325
- ]
326
- args = CLASP::Arguments.new [ '-f1', 'value1', '-p', '--', 'value2' ], specifications
327
-
328
- assert_equal 1, args.flags.size
329
- assert_equal '-f1', args.flags[0].to_s
330
- assert_equal '-f1', args.flags[0].name
331
- assert_equal 'f1', args.flags[0].given_label
332
- assert_equal '-f1', args.flags[0].given_name
333
- assert_equal 1, args.flags[0].given_hyphens
334
- assert_nil args.flags[0].argument_specification
335
- assert_equal Hash.new, args.flags[0].extras
336
-
337
- assert_equal 1, args.options.size
338
- assert_equal '--password=', args.options[0].to_s
339
- assert_equal '--password', args.options[0].name
340
- assert_equal 'p', args.options[0].given_label
341
- assert_nil args.options[0].value
342
- assert_equal '-p', args.options[0].given_name
343
- assert_equal 1, args.options[0].given_hyphens
344
- assert_equal 'extra', args.options[0].extras
345
-
346
- assert_equal 2, args.values.size
347
- assert_equal 'value1', args.values[0]
348
- assert_equal 'value2', args.values[1]
349
-
350
- assert_equal 3, args.double_slash_index
351
- end
352
-
353
- def test_flag_specifications_1
354
-
355
- specifications = [
356
- ]
357
- args = CLASP::Arguments.new [ '-f1', 'value1', '-x', '--delete' ], specifications
358
-
359
- assert_equal 3, args.flags.size
360
- assert_equal '-f1', args.flags[0].to_s
361
- assert_equal '-f1', args.flags[0].name
362
- assert_equal 'f1', args.flags[0].given_label
363
- assert_equal '-f1', args.flags[0].given_name
364
- assert_equal 1, args.flags[0].given_hyphens
365
- assert_nil args.flags[0].argument_specification
366
- assert_equal Hash.new, args.flags[0].extras
367
- assert_equal '-x', args.flags[1].to_s
368
- assert_equal '-x', args.flags[1].name
369
- assert_equal 'x', args.flags[1].given_label
370
- assert_equal '-x', args.flags[1].given_name
371
- assert_equal 1, args.flags[1].given_hyphens
372
- assert_nil args.flags[1].argument_specification
373
- assert_equal Hash.new, args.flags[1].extras
374
- assert_equal '--delete', args.flags[2].to_s
375
- assert_equal '--delete', args.flags[2].name
376
- assert_equal 'delete', args.flags[2].given_label
377
- assert_equal '--delete', args.flags[2].given_name
378
- assert_equal 2, args.flags[2].given_hyphens
379
- assert_nil args.flags[2].argument_specification
380
- assert_equal Hash.new, args.flags[2].extras
381
-
382
- assert_equal 0, args.options.size
383
-
384
- assert_equal 1, args.values.size
385
- assert_equal 'value1', args.values[0]
386
-
387
- assert_nil args.double_slash_index
388
- end
389
-
390
- def test_flag_specifications_2
391
-
392
- specifications = [
393
-
394
- CLASP.Flag('--expand', alias: '-x')
395
- ]
396
- args = CLASP::Arguments.new [ '-f1', 'value1', '-x', '--delete' ], specifications
397
-
398
- assert_equal 3, args.flags.size
399
- assert_equal '-f1', args.flags[0].to_s
400
- assert_equal '-f1', args.flags[0].name
401
- assert_equal 'f1', args.flags[0].given_label
402
- assert_equal '-f1', args.flags[0].given_name
403
- assert_equal 1, args.flags[0].given_hyphens
404
- assert_nil args.flags[0].argument_specification
405
- assert_equal Hash.new, args.flags[0].extras
406
- assert_equal '--expand', args.flags[1].to_s
407
- assert_equal '--expand', args.flags[1].name
408
- assert_equal 'x', args.flags[1].given_label
409
- assert_equal '-x', args.flags[1].given_name
410
- assert_equal 1, args.flags[1].given_hyphens
411
- assert_equal specifications[0], args.flags[1].argument_specification
412
- assert_equal Hash.new, args.flags[1].extras
413
- assert_equal '--delete', args.flags[2].to_s
414
- assert_equal '--delete', args.flags[2].name
415
- assert_equal 'delete', args.flags[2].given_label
416
- assert_equal '--delete', args.flags[2].given_name
417
- assert_equal 2, args.flags[2].given_hyphens
418
- assert_nil args.flags[2].argument_specification
419
- assert_equal Hash.new, args.flags[2].extras
420
-
421
- assert_equal 0, args.options.size
422
-
423
- assert_equal 1, args.values.size
424
- assert_equal 'value1', args.values[0]
425
-
426
- assert_nil args.double_slash_index
427
- end
428
-
429
- def test_flag_specifications_3
430
-
431
- specifications = [
432
-
433
- CLASP.Flag('--expand', aliases: [ '-x', '--x' ], extras: %w{ e x t r a })
434
- ]
435
- args = CLASP::Arguments.new [ '-f1', 'value1', '-x', '--delete', '--x' ], specifications
436
-
437
- assert_equal 4, args.flags.size
438
- assert_equal '-f1', args.flags[0].to_s
439
- assert_equal '-f1', args.flags[0].name
440
- assert_equal 'f1', args.flags[0].given_label
441
- assert_equal '-f1', args.flags[0].given_name
442
- assert_equal 1, args.flags[0].given_hyphens
443
- assert_nil args.flags[0].argument_specification
444
- assert_equal Hash.new, args.flags[0].extras
445
- assert_equal '--expand', args.flags[1].to_s
446
- assert_equal '--expand', args.flags[1].name
447
- assert_equal 'x', args.flags[1].given_label
448
- assert_equal '-x', args.flags[1].given_name
449
- assert_equal 1, args.flags[1].given_hyphens
450
- assert_equal specifications[0], args.flags[1].argument_specification
451
- assert_equal [ 'e', 'x', 't', 'r', 'a' ], args.flags[1].extras
452
- assert_equal '--delete', args.flags[2].to_s
453
- assert_equal '--delete', args.flags[2].name
454
- assert_equal 'delete', args.flags[2].given_label
455
- assert_equal '--delete', args.flags[2].given_name
456
- assert_equal 2, args.flags[2].given_hyphens
457
- assert_nil args.flags[2].argument_specification
458
- assert_equal Hash.new, args.flags[2].extras
459
- assert_equal '--expand', args.flags[3].to_s
460
- assert_equal '--expand', args.flags[3].name
461
- assert_equal 'x', args.flags[3].given_label
462
- assert_equal '--x', args.flags[3].given_name
463
- assert_equal 2, args.flags[3].given_hyphens
464
- assert_equal specifications[0], args.flags[3].argument_specification
465
- assert_equal [ 'e', 'x', 't', 'r', 'a' ], args.flags[3].extras
466
-
467
- assert_equal 0, args.options.size
468
-
469
- assert_equal 1, args.values.size
470
- assert_equal 'value1', args.values[0]
471
-
472
- assert_nil args.double_slash_index
473
- end
474
-
475
- def test_option_specifications_1
476
-
477
- specifications = [
478
- ]
479
- args = CLASP::Arguments.new [ '-f1', 'value1', '-o=value' ], specifications
480
-
481
- assert_equal 1, args.flags.size
482
- assert_equal '-f1', args.flags[0].to_s
483
- assert_equal '-f1', args.flags[0].name
484
- assert_equal 'f1', args.flags[0].given_label
485
- assert_equal '-f1', args.flags[0].given_name
486
- assert_equal 1, args.flags[0].given_hyphens
487
- assert_equal Hash.new, args.flags[0].extras
488
-
489
- assert_equal 1, args.options.size
490
- assert_equal '-o=value', args.options[0].to_s
491
- assert_equal '-o', args.options[0].name
492
- assert_equal 'o', args.options[0].given_label
493
- assert_equal 'value', args.options[0].value
494
- assert_equal '-o', args.options[0].given_name
495
- assert_equal 1, args.options[0].given_hyphens
496
- assert_equal Hash.new, args.options[0].extras
497
-
498
- assert_equal 1, args.values.size
499
- assert_equal 'value1', args.values[0]
500
-
501
- assert_nil args.double_slash_index
502
- end
503
-
504
- def test_option_specifications_2
505
-
506
- specifications = [
507
-
508
- CLASP.Option('--option', aliases: [ '-o' ])
509
- ]
510
- args = CLASP::Arguments.new [ '-f1', 'value1', '-o=value' ], specifications
511
-
512
- assert_equal 1, args.flags.size
513
- assert_equal '-f1', args.flags[0].to_s
514
- assert_equal '-f1', args.flags[0].name
515
- assert_equal 'f1', args.flags[0].given_label
516
- assert_equal '-f1', args.flags[0].given_name
517
- assert_equal 1, args.flags[0].given_hyphens
518
- assert_equal Hash.new, args.flags[0].extras
519
-
520
- assert_equal 1, args.options.size
521
- assert_equal '--option=value', args.options[0].to_s
522
- assert_equal '--option', args.options[0].name
523
- assert_equal 'o', args.options[0].given_label
524
- assert_equal 'value', args.options[0].value
525
- assert_equal '-o', args.options[0].given_name
526
- assert_equal 1, args.options[0].given_hyphens
527
- assert_equal Hash.new, args.options[0].extras
528
-
529
- assert_equal 1, args.values.size
530
- assert_equal 'value1', args.values[0]
531
-
532
- assert_nil args.double_slash_index
533
- end
534
-
535
- def test_option_specifications_3
536
-
537
- specifications = [
538
-
539
- CLASP.Option('--option', aliases: [ '-o' ])
540
- ]
541
- args = CLASP::Arguments.new [ '-f1', 'value1', '-o', 'value' ], specifications
542
-
543
- assert_equal 1, args.flags.size
544
- assert_equal '-f1', args.flags[0].to_s
545
- assert_equal '-f1', args.flags[0].name
546
- assert_equal 'f1', args.flags[0].given_label
547
- assert_equal '-f1', args.flags[0].given_name
548
- assert_equal 1, args.flags[0].given_hyphens
549
- assert_equal Hash.new, args.flags[0].extras
550
-
551
- assert_equal 1, args.options.size
552
- assert_equal '--option=value', args.options[0].to_s
553
- assert_equal '--option', args.options[0].name
554
- assert_equal 'o', args.options[0].given_label
555
- assert_equal 'value', args.options[0].value
556
- assert_equal '-o', args.options[0].given_name
557
- assert_equal 1, args.options[0].given_hyphens
558
- assert_equal Hash.new, args.options[0].extras
559
- assert_equal specifications[0], args.options[0].argument_specification
560
-
561
- assert_equal 1, args.values.size
562
- assert_equal 'value1', args.values[0]
563
-
564
- assert_nil args.double_slash_index
565
- end
566
-
567
- def test_option_default_specifications_1
568
-
569
- specifications = [
570
-
571
- CLASP.Option('--option', aliases: [ '-o' ]),
572
- CLASP.Option('--option=special-value', alias: '-s')
573
- ]
574
- args = CLASP::Arguments.new [ '-f1', 'value1', '-o', 'value', '-s', '-s=explicit-value' ], specifications
575
-
576
- assert_equal 1, args.flags.size
577
- assert_equal '-f1', args.flags[0].to_s
578
- assert_equal '-f1', args.flags[0].name
579
- assert_equal 'f1', args.flags[0].given_label
580
- assert_equal '-f1', args.flags[0].given_name
581
- assert_equal 1, args.flags[0].given_hyphens
582
- assert_equal Hash.new, args.flags[0].extras
583
-
584
- assert_equal 3, args.options.size
585
- assert_equal 2, args.options[0].given_index
586
- assert_equal '--option=value', args.options[0].to_s
587
- assert_equal '--option', args.options[0].name
588
- assert_equal 'o', args.options[0].given_label
589
- assert_equal 'value', args.options[0].value
590
- assert_equal '-o', args.options[0].given_name
591
- assert_equal 1, args.options[0].given_hyphens
592
- assert_equal Hash.new, args.options[0].extras
593
- assert_equal specifications[0], args.options[0].argument_specification
594
- assert_equal 4, args.options[1].given_index
595
- assert_equal '--option=special-value', args.options[1].to_s
596
- assert_equal '--option', args.options[1].name
597
- assert_equal 's', args.options[1].given_label
598
- assert_equal 'special-value', args.options[1].value
599
- assert_equal '-s', args.options[1].given_name
600
- assert_equal 1, args.options[1].given_hyphens
601
- assert_equal Hash.new, args.options[1].extras
602
- assert_equal specifications[0], args.options[1].argument_specification
603
- assert_equal 5, args.options[2].given_index
604
- assert_equal '--option=explicit-value', args.options[2].to_s
605
- assert_equal '--option', args.options[2].name
606
- assert_equal 's', args.options[2].given_label
607
- assert_equal 'explicit-value', args.options[2].value
608
- assert_equal '-s', args.options[2].given_name
609
- assert_equal 1, args.options[2].given_hyphens
610
- assert_equal Hash.new, args.options[2].extras
611
- assert_equal specifications[0], args.options[2].argument_specification
612
-
613
- assert_equal 1, args.values.size
614
- assert_equal 'value1', args.values[0]
615
-
616
- assert_nil args.double_slash_index
617
- end
618
-
619
- def test_option_default_specifications_2
620
-
621
- specifications = [
622
-
623
- CLASP.Option('--option', aliases: [ '-o' ]),
624
- CLASP.Flag('--option=special-value', alias: '-s'),
625
- CLASP.Flag('--verbose', alias: '-v'),
626
- ]
627
- args = CLASP::Arguments.new [ '-f1', 'value1', '-o', 'value', '-sv', '-s=explicit-value' ], specifications
628
-
629
- assert_equal 2, args.flags.size
630
- flag = args.flags[0]
631
- assert_equal '-f1', flag.to_s
632
- assert_equal '-f1', flag.name
633
- assert_equal 'f1', flag.given_label
634
- assert_equal '-f1', flag.given_name
635
- assert_equal 1, flag.given_hyphens
636
- assert_equal Hash.new, flag.extras
637
- assert_equal 0, flag.given_index
638
- flag = args.flags[1]
639
- assert_equal '--verbose', flag.to_s
640
- assert_equal '--verbose', flag.name
641
- assert_equal 'sv', flag.given_label
642
- assert_equal '-sv', flag.given_name
643
- assert_equal 1, flag.given_hyphens
644
- assert_equal Hash.new, flag.extras
645
- assert_equal 4, flag.given_index
646
-
647
- assert_equal 3, args.options.size
648
- option = args.options[0]
649
- assert_equal '--option=value', option.to_s
650
- assert_equal '--option', option.name
651
- assert_equal 'o', option.given_label
652
- assert_equal 'value', option.value
653
- assert_equal '-o', option.given_name
654
- assert_equal 1, option.given_hyphens
655
- assert_equal Hash.new, option.extras
656
- assert_equal 2, option.given_index
657
- option = args.options[1]
658
- assert_equal '--option=special-value', option.to_s
659
- assert_equal '--option', option.name
660
- assert_equal 'sv', option.given_label
661
- assert_equal 'special-value', option.value
662
- assert_equal '-sv', option.given_name
663
- assert_equal 1, option.given_hyphens
664
- assert_equal Hash.new, option.extras
665
- assert_equal 4, option.given_index
666
- option = args.options[2]
667
- assert_equal '--option=explicit-value', option.to_s
668
- assert_equal '--option', option.name
669
- assert_equal 's', option.given_label
670
- assert_equal 'explicit-value', option.value
671
- assert_equal '-s', option.given_name
672
- assert_equal 1, option.given_hyphens
673
- assert_equal Hash.new, option.extras
674
- assert_equal 5, option.given_index
675
-
676
- assert_equal 1, args.values.size
677
- assert_equal 'value1', args.values[0]
678
-
679
- assert_nil args.double_slash_index
680
- end
681
-
682
- def test_option_default_specifications_3
683
-
684
- specifications = [
685
-
686
- CLASP.Option('--option', aliases: [ '-o' ]),
687
- CLASP.Flag('--option=special-value', alias: '-s'),
688
- CLASP.Flag('-v'),
689
- ]
690
- args = CLASP::Arguments.new [ '-f1', 'value1', '-o', 'value', '-sv', '-s=explicit-value' ], specifications
691
-
692
- assert_equal 2, args.flags.size
693
- flag = args.flags[0]
694
- assert_equal '-f1', flag.to_s
695
- assert_equal '-f1', flag.name
696
- assert_equal 'f1', flag.given_label
697
- assert_equal '-f1', flag.given_name
698
- assert_equal 1, flag.given_hyphens
699
- assert_equal Hash.new, flag.extras
700
- assert_equal 0, flag.given_index
701
- flag = args.flags[1]
702
- assert_equal '-v', flag.to_s
703
- assert_equal '-v', flag.name
704
- assert_equal 'sv', flag.given_label
705
- assert_equal '-sv', flag.given_name
706
- assert_equal 1, flag.given_hyphens
707
- assert_equal Hash.new, flag.extras
708
- assert_equal 4, flag.given_index
709
-
710
- assert_equal 3, args.options.size
711
- option = args.options[0]
712
- assert_equal '--option=value', option.to_s
713
- assert_equal '--option', option.name
714
- assert_equal 'o', option.given_label
715
- assert_equal 'value', option.value
716
- assert_equal '-o', option.given_name
717
- assert_equal 1, option.given_hyphens
718
- assert_equal Hash.new, option.extras
719
- assert_equal 2, option.given_index
720
- option = args.options[1]
721
- assert_equal '--option=special-value', option.to_s
722
- assert_equal '--option', option.name
723
- assert_equal 'sv', option.given_label
724
- assert_equal 'special-value', option.value
725
- assert_equal '-sv', option.given_name
726
- assert_equal 1, option.given_hyphens
727
- assert_equal Hash.new, option.extras
728
- assert_equal 4, option.given_index
729
- option = args.options[2]
730
- assert_equal '--option=explicit-value', option.to_s
731
- assert_equal '--option', option.name
732
- assert_equal 's', option.given_label
733
- assert_equal 'explicit-value', option.value
734
- assert_equal '-s', option.given_name
735
- assert_equal 1, option.given_hyphens
736
- assert_equal Hash.new, option.extras
737
- assert_equal 5, option.given_index
738
-
739
- assert_equal 1, args.values.size
740
- assert_equal 'value1', args.values[0]
741
-
742
- assert_nil args.double_slash_index
743
- end
125
+ assert_equal 3, args.flags.size
126
+ assert_equal 0, args.flags[0].given_index
127
+ assert_equal '-f1', args.flags[0].to_s
128
+ assert_equal '-f1', args.flags[0].name
129
+ assert_equal 'f1', args.flags[0].given_label
130
+ assert_equal '-f1', args.flags[0].given_name
131
+ assert_equal 1, args.flags[0].given_hyphens
132
+ assert_nil args.flags[0].argument_specification
133
+ assert_equal Hash.new, args.flags[0].extras
134
+ assert_equal 1, args.flags[1].given_index
135
+ assert_equal '--flag2', args.flags[1].to_s
136
+ assert_equal '--flag2', args.flags[1].name
137
+ assert_equal 'flag2', args.flags[1].given_label
138
+ assert_equal '--flag2', args.flags[1].given_name
139
+ assert_equal 2, args.flags[1].given_hyphens
140
+ assert_nil args.flags[1].argument_specification
141
+ assert_equal Hash.new, args.flags[1].extras
142
+ assert_equal 2, args.flags[2].given_index
143
+ assert_equal '---x', args.flags[2].to_s
144
+ assert_equal '---x', args.flags[2].name
145
+ assert_equal 'x', args.flags[2].given_label
146
+ assert_equal '---x', args.flags[2].given_name
147
+ assert_equal 3, args.flags[2].given_hyphens
148
+ assert_nil args.flags[2].argument_specification
149
+ assert_equal Hash.new, args.flags[2].extras
150
+
151
+ assert_equal 0, args.options.size
152
+
153
+ assert_equal 0, args.values.size
154
+
155
+ assert_nil args.double_slash_index
156
+ end
157
+
158
+ def test_one_option
159
+
160
+ args = CLASP::Arguments.new([ '-o1=v1' ])
161
+
162
+ assert_equal 0, args.flags.size
163
+
164
+ assert_equal 1, args.options.size
165
+ assert_equal 0, args.options[0].given_index
166
+ assert_equal '-o1=v1', args.options[0].to_s
167
+ assert_equal '-o1', args.options[0].name
168
+ assert_equal 'o1', args.options[0].given_label
169
+ assert_equal 'v1', args.options[0].value
170
+ assert_equal '-o1', args.options[0].given_name
171
+ assert_equal 1, args.options[0].given_hyphens
172
+ assert_nil args.options[0].argument_specification
173
+ assert_equal Hash.new, args.options[0].extras
174
+
175
+ assert_equal 0, args.values.size
176
+
177
+ assert_nil args.double_slash_index
178
+ end
179
+
180
+ def test_two_options
181
+
182
+ args = CLASP::Arguments.new([ '-o1=v1', '--option2=value2' ])
183
+
184
+ assert_equal 0, args.flags.size
185
+
186
+ assert_equal 2, args.options.size
187
+ assert_equal '-o1=v1', args.options[0].to_s
188
+ assert_equal '-o1', args.options[0].name
189
+ assert_equal 'o1', args.options[0].given_label
190
+ assert_equal 'v1', args.options[0].value
191
+ assert_equal '-o1', args.options[0].given_name
192
+ assert_equal 1, args.options[0].given_hyphens
193
+ assert_nil args.options[0].argument_specification
194
+ assert_equal Hash.new, args.options[0].extras
195
+ assert_equal '--option2=value2', args.options[1].to_s
196
+ assert_equal '--option2', args.options[1].name
197
+ assert_equal 'option2', args.options[1].given_label
198
+ assert_equal 'value2', args.options[1].value
199
+ assert_equal '--option2', args.options[1].given_name
200
+ assert_equal 2, args.options[1].given_hyphens
201
+ assert_nil args.options[1].argument_specification
202
+ assert_equal Hash.new, args.options[1].extras
203
+
204
+ assert_equal 0, args.values.size
205
+
206
+ assert_nil args.double_slash_index
207
+ end
208
+
209
+ def test_three_options
210
+
211
+ args = CLASP::Arguments.new([ '-o1=v1', '--option2=value2', '---the-third-option=the third value' ])
212
+
213
+ assert_equal 0, args.flags.size
214
+
215
+ assert_equal 3, args.options.size
216
+ assert_equal '-o1=v1', args.options[0].to_s
217
+ assert_equal '-o1', args.options[0].name
218
+ assert_equal 'o1', args.options[0].given_label
219
+ assert_equal 'v1', args.options[0].value
220
+ assert_equal '-o1', args.options[0].given_name
221
+ assert_equal 1, args.options[0].given_hyphens
222
+ assert_nil args.options[0].argument_specification
223
+ assert_equal Hash.new, args.options[0].extras
224
+ assert_equal '--option2=value2', args.options[1].to_s
225
+ assert_equal '--option2', args.options[1].name
226
+ assert_equal 'option2', args.options[1].given_label
227
+ assert_equal 'value2', args.options[1].value
228
+ assert_equal '--option2', args.options[1].given_name
229
+ assert_equal 2, args.options[1].given_hyphens
230
+ assert_nil args.options[1].argument_specification
231
+ assert_equal Hash.new, args.options[1].extras
232
+ assert_equal '---the-third-option=the third value', args.options[2].to_s
233
+ assert_equal '---the-third-option', args.options[2].name
234
+ assert_equal 'the-third-option', args.options[2].given_label
235
+ assert_equal 'the third value', args.options[2].value
236
+ assert_equal '---the-third-option', args.options[2].given_name
237
+ assert_equal 3, args.options[2].given_hyphens
238
+ assert_nil args.options[2].argument_specification
239
+ assert_equal Hash.new, args.options[2].extras
240
+
241
+ assert_equal 0, args.values.size
242
+
243
+ assert_nil args.double_slash_index
244
+ end
245
+
246
+ def test_one_flag_and_one_option_and_one_value
247
+
248
+ args = CLASP::Arguments.new [ '-f1', 'value1', '--first-option=val1' ]
249
+
250
+ assert_equal 1, args.flags.size
251
+ assert_equal '-f1', args.flags[0].to_s
252
+ assert_equal '-f1', args.flags[0].name
253
+ assert_equal 'f1', args.flags[0].given_label
254
+ assert_equal '-f1', args.flags[0].given_name
255
+ assert_equal 1, args.flags[0].given_hyphens
256
+ assert_nil args.flags[0].argument_specification
257
+ assert_equal Hash.new, args.flags[0].extras
258
+
259
+ assert_equal 1, args.options.size
260
+ assert_equal '--first-option=val1', args.options[0].to_s
261
+ assert_equal '--first-option', args.options[0].name
262
+ assert_equal 'first-option', args.options[0].given_label
263
+ assert_equal 'val1', args.options[0].value
264
+ assert_equal '--first-option', args.options[0].given_name
265
+ assert_equal 2, args.options[0].given_hyphens
266
+ assert_equal Hash.new, args.options[0].extras
267
+
268
+ assert_equal 1, args.values.size
269
+ assert_equal 'value1', args.values[0]
270
+
271
+ assert_nil args.double_slash_index
272
+ end
273
+
274
+ def test_double_hyphen_1
275
+
276
+ args = CLASP::Arguments.new [ '-f1', 'value1', '--', '-f2' ]
277
+
278
+ assert_equal 1, args.flags.size
279
+ assert_equal '-f1', args.flags[0].to_s
280
+ assert_equal '-f1', args.flags[0].name
281
+ assert_equal 'f1', args.flags[0].given_label
282
+ assert_equal '-f1', args.flags[0].given_name
283
+ assert_equal 1, args.flags[0].given_hyphens
284
+ assert_nil args.flags[0].argument_specification
285
+ assert_equal Hash.new, args.flags[0].extras
286
+
287
+ assert_equal 0, args.options.size
288
+
289
+ assert_equal 2, args.values.size
290
+ assert_equal 'value1', args.values[0]
291
+ assert_equal '-f2', args.values[1]
292
+
293
+ assert_equal 2, args.double_slash_index
294
+ end
295
+
296
+ def test_double_hyphen_2
297
+
298
+ args = CLASP::Arguments.new [ '-f1', 'value1', '--', '-f2', '--', '--option1=v1' ]
299
+
300
+ assert_equal 1, args.flags.size
301
+ assert_equal '-f1', args.flags[0].to_s
302
+ assert_equal '-f1', args.flags[0].name
303
+ assert_equal 'f1', args.flags[0].given_label
304
+ assert_equal '-f1', args.flags[0].given_name
305
+ assert_equal 1, args.flags[0].given_hyphens
306
+ assert_nil args.flags[0].argument_specification
307
+ assert_equal Hash.new, args.flags[0].extras
308
+
309
+ assert_equal 0, args.options.size
310
+
311
+ assert_equal 4, args.values.size
312
+ assert_equal 'value1', args.values[0]
313
+ assert_equal '-f2', args.values[1]
314
+ assert_equal '--', args.values[2]
315
+ assert_equal '--option1=v1', args.values[3]
316
+
317
+ assert_equal 2, args.double_slash_index
318
+ end
319
+
320
+ def test_double_hyphen_3
321
+
322
+ specifications = [
323
+
324
+ CLASP.Option('--password', alias: '-p', extras: 'extra'),
325
+ ]
326
+ args = CLASP::Arguments.new [ '-f1', 'value1', '-p', '--', 'value2' ], specifications
327
+
328
+ assert_equal 1, args.flags.size
329
+ assert_equal '-f1', args.flags[0].to_s
330
+ assert_equal '-f1', args.flags[0].name
331
+ assert_equal 'f1', args.flags[0].given_label
332
+ assert_equal '-f1', args.flags[0].given_name
333
+ assert_equal 1, args.flags[0].given_hyphens
334
+ assert_nil args.flags[0].argument_specification
335
+ assert_equal Hash.new, args.flags[0].extras
336
+
337
+ assert_equal 1, args.options.size
338
+ assert_equal '--password=', args.options[0].to_s
339
+ assert_equal '--password', args.options[0].name
340
+ assert_equal 'p', args.options[0].given_label
341
+ assert_nil args.options[0].value
342
+ assert_equal '-p', args.options[0].given_name
343
+ assert_equal 1, args.options[0].given_hyphens
344
+ assert_equal 'extra', args.options[0].extras
345
+
346
+ assert_equal 2, args.values.size
347
+ assert_equal 'value1', args.values[0]
348
+ assert_equal 'value2', args.values[1]
349
+
350
+ assert_equal 3, args.double_slash_index
351
+ end
352
+
353
+ def test_flag_specifications_1
354
+
355
+ specifications = [
356
+ ]
357
+ args = CLASP::Arguments.new [ '-f1', 'value1', '-x', '--delete' ], specifications
358
+
359
+ assert_equal 3, args.flags.size
360
+ assert_equal '-f1', args.flags[0].to_s
361
+ assert_equal '-f1', args.flags[0].name
362
+ assert_equal 'f1', args.flags[0].given_label
363
+ assert_equal '-f1', args.flags[0].given_name
364
+ assert_equal 1, args.flags[0].given_hyphens
365
+ assert_nil args.flags[0].argument_specification
366
+ assert_equal Hash.new, args.flags[0].extras
367
+ assert_equal '-x', args.flags[1].to_s
368
+ assert_equal '-x', args.flags[1].name
369
+ assert_equal 'x', args.flags[1].given_label
370
+ assert_equal '-x', args.flags[1].given_name
371
+ assert_equal 1, args.flags[1].given_hyphens
372
+ assert_nil args.flags[1].argument_specification
373
+ assert_equal Hash.new, args.flags[1].extras
374
+ assert_equal '--delete', args.flags[2].to_s
375
+ assert_equal '--delete', args.flags[2].name
376
+ assert_equal 'delete', args.flags[2].given_label
377
+ assert_equal '--delete', args.flags[2].given_name
378
+ assert_equal 2, args.flags[2].given_hyphens
379
+ assert_nil args.flags[2].argument_specification
380
+ assert_equal Hash.new, args.flags[2].extras
381
+
382
+ assert_equal 0, args.options.size
383
+
384
+ assert_equal 1, args.values.size
385
+ assert_equal 'value1', args.values[0]
386
+
387
+ assert_nil args.double_slash_index
388
+ end
389
+
390
+ def test_flag_specifications_2
391
+
392
+ specifications = [
393
+
394
+ CLASP.Flag('--expand', alias: '-x')
395
+ ]
396
+ args = CLASP::Arguments.new [ '-f1', 'value1', '-x', '--delete' ], specifications
397
+
398
+ assert_equal 3, args.flags.size
399
+ assert_equal '-f1', args.flags[0].to_s
400
+ assert_equal '-f1', args.flags[0].name
401
+ assert_equal 'f1', args.flags[0].given_label
402
+ assert_equal '-f1', args.flags[0].given_name
403
+ assert_equal 1, args.flags[0].given_hyphens
404
+ assert_nil args.flags[0].argument_specification
405
+ assert_equal Hash.new, args.flags[0].extras
406
+ assert_equal '--expand', args.flags[1].to_s
407
+ assert_equal '--expand', args.flags[1].name
408
+ assert_equal 'x', args.flags[1].given_label
409
+ assert_equal '-x', args.flags[1].given_name
410
+ assert_equal 1, args.flags[1].given_hyphens
411
+ assert_equal specifications[0], args.flags[1].argument_specification
412
+ assert_equal Hash.new, args.flags[1].extras
413
+ assert_equal '--delete', args.flags[2].to_s
414
+ assert_equal '--delete', args.flags[2].name
415
+ assert_equal 'delete', args.flags[2].given_label
416
+ assert_equal '--delete', args.flags[2].given_name
417
+ assert_equal 2, args.flags[2].given_hyphens
418
+ assert_nil args.flags[2].argument_specification
419
+ assert_equal Hash.new, args.flags[2].extras
420
+
421
+ assert_equal 0, args.options.size
422
+
423
+ assert_equal 1, args.values.size
424
+ assert_equal 'value1', args.values[0]
425
+
426
+ assert_nil args.double_slash_index
427
+ end
428
+
429
+ def test_flag_specifications_3
430
+
431
+ specifications = [
432
+
433
+ CLASP.Flag('--expand', aliases: [ '-x', '--x' ], extras: %w{ e x t r a })
434
+ ]
435
+ args = CLASP::Arguments.new [ '-f1', 'value1', '-x', '--delete', '--x' ], specifications
436
+
437
+ assert_equal 4, args.flags.size
438
+ assert_equal '-f1', args.flags[0].to_s
439
+ assert_equal '-f1', args.flags[0].name
440
+ assert_equal 'f1', args.flags[0].given_label
441
+ assert_equal '-f1', args.flags[0].given_name
442
+ assert_equal 1, args.flags[0].given_hyphens
443
+ assert_nil args.flags[0].argument_specification
444
+ assert_equal Hash.new, args.flags[0].extras
445
+ assert_equal '--expand', args.flags[1].to_s
446
+ assert_equal '--expand', args.flags[1].name
447
+ assert_equal 'x', args.flags[1].given_label
448
+ assert_equal '-x', args.flags[1].given_name
449
+ assert_equal 1, args.flags[1].given_hyphens
450
+ assert_equal specifications[0], args.flags[1].argument_specification
451
+ assert_equal [ 'e', 'x', 't', 'r', 'a' ], args.flags[1].extras
452
+ assert_equal '--delete', args.flags[2].to_s
453
+ assert_equal '--delete', args.flags[2].name
454
+ assert_equal 'delete', args.flags[2].given_label
455
+ assert_equal '--delete', args.flags[2].given_name
456
+ assert_equal 2, args.flags[2].given_hyphens
457
+ assert_nil args.flags[2].argument_specification
458
+ assert_equal Hash.new, args.flags[2].extras
459
+ assert_equal '--expand', args.flags[3].to_s
460
+ assert_equal '--expand', args.flags[3].name
461
+ assert_equal 'x', args.flags[3].given_label
462
+ assert_equal '--x', args.flags[3].given_name
463
+ assert_equal 2, args.flags[3].given_hyphens
464
+ assert_equal specifications[0], args.flags[3].argument_specification
465
+ assert_equal [ 'e', 'x', 't', 'r', 'a' ], args.flags[3].extras
466
+
467
+ assert_equal 0, args.options.size
468
+
469
+ assert_equal 1, args.values.size
470
+ assert_equal 'value1', args.values[0]
471
+
472
+ assert_nil args.double_slash_index
473
+ end
474
+
475
+ def test_option_specifications_1
476
+
477
+ specifications = [
478
+ ]
479
+ args = CLASP::Arguments.new [ '-f1', 'value1', '-o=value' ], specifications
480
+
481
+ assert_equal 1, args.flags.size
482
+ assert_equal '-f1', args.flags[0].to_s
483
+ assert_equal '-f1', args.flags[0].name
484
+ assert_equal 'f1', args.flags[0].given_label
485
+ assert_equal '-f1', args.flags[0].given_name
486
+ assert_equal 1, args.flags[0].given_hyphens
487
+ assert_equal Hash.new, args.flags[0].extras
488
+
489
+ assert_equal 1, args.options.size
490
+ assert_equal '-o=value', args.options[0].to_s
491
+ assert_equal '-o', args.options[0].name
492
+ assert_equal 'o', args.options[0].given_label
493
+ assert_equal 'value', args.options[0].value
494
+ assert_equal '-o', args.options[0].given_name
495
+ assert_equal 1, args.options[0].given_hyphens
496
+ assert_equal Hash.new, args.options[0].extras
497
+
498
+ assert_equal 1, args.values.size
499
+ assert_equal 'value1', args.values[0]
500
+
501
+ assert_nil args.double_slash_index
502
+ end
503
+
504
+ def test_option_specifications_2
505
+
506
+ specifications = [
507
+
508
+ CLASP.Option('--option', aliases: [ '-o' ])
509
+ ]
510
+ args = CLASP::Arguments.new [ '-f1', 'value1', '-o=value' ], specifications
511
+
512
+ assert_equal 1, args.flags.size
513
+ assert_equal '-f1', args.flags[0].to_s
514
+ assert_equal '-f1', args.flags[0].name
515
+ assert_equal 'f1', args.flags[0].given_label
516
+ assert_equal '-f1', args.flags[0].given_name
517
+ assert_equal 1, args.flags[0].given_hyphens
518
+ assert_equal Hash.new, args.flags[0].extras
519
+
520
+ assert_equal 1, args.options.size
521
+ assert_equal '--option=value', args.options[0].to_s
522
+ assert_equal '--option', args.options[0].name
523
+ assert_equal 'o', args.options[0].given_label
524
+ assert_equal 'value', args.options[0].value
525
+ assert_equal '-o', args.options[0].given_name
526
+ assert_equal 1, args.options[0].given_hyphens
527
+ assert_equal Hash.new, args.options[0].extras
528
+
529
+ assert_equal 1, args.values.size
530
+ assert_equal 'value1', args.values[0]
531
+
532
+ assert_nil args.double_slash_index
533
+ end
534
+
535
+ def test_option_specifications_3
536
+
537
+ specifications = [
538
+
539
+ CLASP.Option('--option', aliases: [ '-o' ])
540
+ ]
541
+ args = CLASP::Arguments.new [ '-f1', 'value1', '-o', 'value' ], specifications
542
+
543
+ assert_equal 1, args.flags.size
544
+ assert_equal '-f1', args.flags[0].to_s
545
+ assert_equal '-f1', args.flags[0].name
546
+ assert_equal 'f1', args.flags[0].given_label
547
+ assert_equal '-f1', args.flags[0].given_name
548
+ assert_equal 1, args.flags[0].given_hyphens
549
+ assert_equal Hash.new, args.flags[0].extras
550
+
551
+ assert_equal 1, args.options.size
552
+ assert_equal '--option=value', args.options[0].to_s
553
+ assert_equal '--option', args.options[0].name
554
+ assert_equal 'o', args.options[0].given_label
555
+ assert_equal 'value', args.options[0].value
556
+ assert_equal '-o', args.options[0].given_name
557
+ assert_equal 1, args.options[0].given_hyphens
558
+ assert_equal Hash.new, args.options[0].extras
559
+ assert_equal specifications[0], args.options[0].argument_specification
560
+
561
+ assert_equal 1, args.values.size
562
+ assert_equal 'value1', args.values[0]
563
+
564
+ assert_nil args.double_slash_index
565
+ end
566
+
567
+ def test_option_default_specifications_1
568
+
569
+ specifications = [
570
+
571
+ CLASP.Option('--option', aliases: [ '-o' ]),
572
+ CLASP.Option('--option=special-value', alias: '-s')
573
+ ]
574
+ args = CLASP::Arguments.new [ '-f1', 'value1', '-o', 'value', '-s', '-s=explicit-value' ], specifications
575
+
576
+ assert_equal 1, args.flags.size
577
+ assert_equal '-f1', args.flags[0].to_s
578
+ assert_equal '-f1', args.flags[0].name
579
+ assert_equal 'f1', args.flags[0].given_label
580
+ assert_equal '-f1', args.flags[0].given_name
581
+ assert_equal 1, args.flags[0].given_hyphens
582
+ assert_equal Hash.new, args.flags[0].extras
583
+
584
+ assert_equal 3, args.options.size
585
+ assert_equal 2, args.options[0].given_index
586
+ assert_equal '--option=value', args.options[0].to_s
587
+ assert_equal '--option', args.options[0].name
588
+ assert_equal 'o', args.options[0].given_label
589
+ assert_equal 'value', args.options[0].value
590
+ assert_equal '-o', args.options[0].given_name
591
+ assert_equal 1, args.options[0].given_hyphens
592
+ assert_equal Hash.new, args.options[0].extras
593
+ assert_equal specifications[0], args.options[0].argument_specification
594
+ assert_equal 4, args.options[1].given_index
595
+ assert_equal '--option=special-value', args.options[1].to_s
596
+ assert_equal '--option', args.options[1].name
597
+ assert_equal 's', args.options[1].given_label
598
+ assert_equal 'special-value', args.options[1].value
599
+ assert_equal '-s', args.options[1].given_name
600
+ assert_equal 1, args.options[1].given_hyphens
601
+ assert_equal Hash.new, args.options[1].extras
602
+ assert_equal specifications[0], args.options[1].argument_specification
603
+ assert_equal 5, args.options[2].given_index
604
+ assert_equal '--option=explicit-value', args.options[2].to_s
605
+ assert_equal '--option', args.options[2].name
606
+ assert_equal 's', args.options[2].given_label
607
+ assert_equal 'explicit-value', args.options[2].value
608
+ assert_equal '-s', args.options[2].given_name
609
+ assert_equal 1, args.options[2].given_hyphens
610
+ assert_equal Hash.new, args.options[2].extras
611
+ assert_equal specifications[0], args.options[2].argument_specification
612
+
613
+ assert_equal 1, args.values.size
614
+ assert_equal 'value1', args.values[0]
615
+
616
+ assert_nil args.double_slash_index
617
+ end
618
+
619
+ def test_option_default_specifications_2
620
+
621
+ specifications = [
622
+
623
+ CLASP.Option('--option', aliases: [ '-o' ]),
624
+ CLASP.Flag('--option=special-value', alias: '-s'),
625
+ CLASP.Flag('--verbose', alias: '-v'),
626
+ ]
627
+ args = CLASP::Arguments.new [ '-f1', 'value1', '-o', 'value', '-sv', '-s=explicit-value' ], specifications
628
+
629
+ assert_equal 2, args.flags.size
630
+ flag = args.flags[0]
631
+ assert_equal '-f1', flag.to_s
632
+ assert_equal '-f1', flag.name
633
+ assert_equal 'f1', flag.given_label
634
+ assert_equal '-f1', flag.given_name
635
+ assert_equal 1, flag.given_hyphens
636
+ assert_equal Hash.new, flag.extras
637
+ assert_equal 0, flag.given_index
638
+ flag = args.flags[1]
639
+ assert_equal '--verbose', flag.to_s
640
+ assert_equal '--verbose', flag.name
641
+ assert_equal 'sv', flag.given_label
642
+ assert_equal '-sv', flag.given_name
643
+ assert_equal 1, flag.given_hyphens
644
+ assert_equal Hash.new, flag.extras
645
+ assert_equal 4, flag.given_index
646
+
647
+ assert_equal 3, args.options.size
648
+ option = args.options[0]
649
+ assert_equal '--option=value', option.to_s
650
+ assert_equal '--option', option.name
651
+ assert_equal 'o', option.given_label
652
+ assert_equal 'value', option.value
653
+ assert_equal '-o', option.given_name
654
+ assert_equal 1, option.given_hyphens
655
+ assert_equal Hash.new, option.extras
656
+ assert_equal 2, option.given_index
657
+ option = args.options[1]
658
+ assert_equal '--option=special-value', option.to_s
659
+ assert_equal '--option', option.name
660
+ assert_equal 'sv', option.given_label
661
+ assert_equal 'special-value', option.value
662
+ assert_equal '-sv', option.given_name
663
+ assert_equal 1, option.given_hyphens
664
+ assert_equal Hash.new, option.extras
665
+ assert_equal 4, option.given_index
666
+ option = args.options[2]
667
+ assert_equal '--option=explicit-value', option.to_s
668
+ assert_equal '--option', option.name
669
+ assert_equal 's', option.given_label
670
+ assert_equal 'explicit-value', option.value
671
+ assert_equal '-s', option.given_name
672
+ assert_equal 1, option.given_hyphens
673
+ assert_equal Hash.new, option.extras
674
+ assert_equal 5, option.given_index
675
+
676
+ assert_equal 1, args.values.size
677
+ assert_equal 'value1', args.values[0]
678
+
679
+ assert_nil args.double_slash_index
680
+ end
681
+
682
+ def test_option_default_specifications_3
683
+
684
+ specifications = [
685
+
686
+ CLASP.Option('--option', aliases: [ '-o' ]),
687
+ CLASP.Flag('--option=special-value', alias: '-s'),
688
+ CLASP.Flag('-v'),
689
+ ]
690
+ args = CLASP::Arguments.new [ '-f1', 'value1', '-o', 'value', '-sv', '-s=explicit-value' ], specifications
691
+
692
+ assert_equal 2, args.flags.size
693
+ flag = args.flags[0]
694
+ assert_equal '-f1', flag.to_s
695
+ assert_equal '-f1', flag.name
696
+ assert_equal 'f1', flag.given_label
697
+ assert_equal '-f1', flag.given_name
698
+ assert_equal 1, flag.given_hyphens
699
+ assert_equal Hash.new, flag.extras
700
+ assert_equal 0, flag.given_index
701
+ flag = args.flags[1]
702
+ assert_equal '-v', flag.to_s
703
+ assert_equal '-v', flag.name
704
+ assert_equal 'sv', flag.given_label
705
+ assert_equal '-sv', flag.given_name
706
+ assert_equal 1, flag.given_hyphens
707
+ assert_equal Hash.new, flag.extras
708
+ assert_equal 4, flag.given_index
709
+
710
+ assert_equal 3, args.options.size
711
+ option = args.options[0]
712
+ assert_equal '--option=value', option.to_s
713
+ assert_equal '--option', option.name
714
+ assert_equal 'o', option.given_label
715
+ assert_equal 'value', option.value
716
+ assert_equal '-o', option.given_name
717
+ assert_equal 1, option.given_hyphens
718
+ assert_equal Hash.new, option.extras
719
+ assert_equal 2, option.given_index
720
+ option = args.options[1]
721
+ assert_equal '--option=special-value', option.to_s
722
+ assert_equal '--option', option.name
723
+ assert_equal 'sv', option.given_label
724
+ assert_equal 'special-value', option.value
725
+ assert_equal '-sv', option.given_name
726
+ assert_equal 1, option.given_hyphens
727
+ assert_equal Hash.new, option.extras
728
+ assert_equal 4, option.given_index
729
+ option = args.options[2]
730
+ assert_equal '--option=explicit-value', option.to_s
731
+ assert_equal '--option', option.name
732
+ assert_equal 's', option.given_label
733
+ assert_equal 'explicit-value', option.value
734
+ assert_equal '-s', option.given_name
735
+ assert_equal 1, option.given_hyphens
736
+ assert_equal Hash.new, option.extras
737
+ assert_equal 5, option.given_index
738
+
739
+ assert_equal 1, args.values.size
740
+ assert_equal 'value1', args.values[0]
741
+
742
+ assert_nil args.double_slash_index
743
+ end
744
744
  end
745
745