clasp-ruby 0.22.1 → 0.23.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +63 -52
  3. data/examples/cr-example.rb +16 -16
  4. data/examples/flag_and_option_specifications.md +25 -25
  5. data/examples/flag_and_option_specifications.rb +6 -6
  6. data/examples/show_usage_and_version.md +5 -5
  7. data/examples/show_usage_and_version.rb +1 -1
  8. data/examples/simple_command_line_no_specifications.rb +1 -1
  9. data/lib/clasp/arguments.rb +543 -531
  10. data/lib/clasp/clasp.rb +7 -7
  11. data/lib/clasp/cli.rb +140 -135
  12. data/lib/clasp/doc_.rb +3 -3
  13. data/lib/clasp/old_module.rb +3 -3
  14. data/lib/clasp/specifications.rb +337 -333
  15. data/lib/clasp/util/exceptions.rb +17 -17
  16. data/lib/clasp/util/value_parser.rb +97 -97
  17. data/lib/clasp/version.rb +15 -15
  18. data/lib/clasp-ruby.rb +3 -2
  19. data/lib/clasp.rb +3 -2
  20. data/test/scratch/test_list_command_line.rb +6 -6
  21. data/test/scratch/test_specifications.rb +14 -14
  22. data/test/scratch/test_usage.rb +6 -6
  23. data/test/scratch/test_usage_from_DATA.rb +1 -1
  24. data/test/scratch/test_usage_with_duplicate_specifications.rb +6 -6
  25. data/test/unit/tc_ARGV_rewrite.rb +36 -38
  26. data/test/unit/tc_arguments_1.rb +702 -656
  27. data/test/unit/tc_arguments_2.rb +52 -53
  28. data/test/unit/tc_arguments_3.rb +77 -77
  29. data/test/unit/tc_arguments_inspect.rb +55 -56
  30. data/test/unit/tc_cli.rb +4 -4
  31. data/test/unit/tc_default_value.rb +91 -91
  32. data/test/unit/tc_defaults_1.rb +38 -38
  33. data/test/unit/tc_examples_Arguments.rb +130 -132
  34. data/test/unit/tc_extras.rb +24 -26
  35. data/test/unit/tc_option_required.rb +38 -39
  36. data/test/unit/tc_option_value_aliases.rb +44 -44
  37. data/test/unit/tc_specifications.rb +7 -8
  38. data/test/unit/tc_typed_options.rb +204 -204
  39. data/test/unit/tc_usage.rb +112 -55
  40. data/test/unit/tc_with_action.rb +23 -24
  41. data/test/unit/ts_all.rb +1 -1
  42. metadata +8 -7
@@ -8,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