clasp-ruby 0.23.0.1 → 0.23.1

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