clasp-ruby 0.22.1 → 0.23.0.2

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