command_kit 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog.md +6 -0
  3. data/README.md +3 -0
  4. data/command_kit.gemspec +7 -2
  5. data/lib/command_kit/completion/install.rb +276 -0
  6. data/lib/command_kit/env/prefix.rb +41 -0
  7. data/lib/command_kit/env/shell.rb +58 -0
  8. data/lib/command_kit/version.rb +1 -1
  9. metadata +4 -64
  10. data/spec/arguments/argument_spec.rb +0 -133
  11. data/spec/arguments/argument_value_spec.rb +0 -66
  12. data/spec/arguments_spec.rb +0 -279
  13. data/spec/bug_report_spec.rb +0 -266
  14. data/spec/colors_spec.rb +0 -771
  15. data/spec/command_kit_spec.rb +0 -8
  16. data/spec/command_name_spec.rb +0 -130
  17. data/spec/command_spec.rb +0 -123
  18. data/spec/commands/auto_load/subcommand_spec.rb +0 -82
  19. data/spec/commands/auto_load_spec.rb +0 -159
  20. data/spec/commands/auto_require_spec.rb +0 -142
  21. data/spec/commands/fixtures/test_auto_load/cli/commands/test1.rb +0 -10
  22. data/spec/commands/fixtures/test_auto_load/cli/commands/test2.rb +0 -10
  23. data/spec/commands/fixtures/test_auto_require/lib/test_auto_require/cli/commands/test1.rb +0 -10
  24. data/spec/commands/help_spec.rb +0 -66
  25. data/spec/commands/parent_command_spec.rb +0 -40
  26. data/spec/commands/subcommand_spec.rb +0 -99
  27. data/spec/commands_spec.rb +0 -865
  28. data/spec/description_spec.rb +0 -179
  29. data/spec/edit_spec.rb +0 -72
  30. data/spec/env/home_spec.rb +0 -46
  31. data/spec/env/path_spec.rb +0 -84
  32. data/spec/env_spec.rb +0 -123
  33. data/spec/examples_spec.rb +0 -211
  34. data/spec/exception_handler_spec.rb +0 -103
  35. data/spec/file_utils_spec.rb +0 -59
  36. data/spec/fixtures/template.erb +0 -5
  37. data/spec/help/man_spec.rb +0 -345
  38. data/spec/help_spec.rb +0 -94
  39. data/spec/inflector_spec.rb +0 -166
  40. data/spec/interactive_spec.rb +0 -415
  41. data/spec/main_spec.rb +0 -179
  42. data/spec/man_spec.rb +0 -46
  43. data/spec/open_app_spec.rb +0 -85
  44. data/spec/options/option_spec.rb +0 -343
  45. data/spec/options/option_value_spec.rb +0 -171
  46. data/spec/options/parser_spec.rb +0 -274
  47. data/spec/options/quiet_spec.rb +0 -51
  48. data/spec/options/verbose_spec.rb +0 -51
  49. data/spec/options/version_spec.rb +0 -146
  50. data/spec/options_spec.rb +0 -465
  51. data/spec/os/linux_spec.rb +0 -164
  52. data/spec/os_spec.rb +0 -233
  53. data/spec/package_manager_spec.rb +0 -806
  54. data/spec/pager_spec.rb +0 -217
  55. data/spec/printing/fields_spec.rb +0 -167
  56. data/spec/printing/indent_spec.rb +0 -132
  57. data/spec/printing/lists_spec.rb +0 -99
  58. data/spec/printing/tables/border_style.rb +0 -43
  59. data/spec/printing/tables/cell_builer_spec.rb +0 -135
  60. data/spec/printing/tables/row_builder_spec.rb +0 -165
  61. data/spec/printing/tables/style_spec.rb +0 -377
  62. data/spec/printing/tables/table_builder_spec.rb +0 -252
  63. data/spec/printing/tables/table_formatter_spec.rb +0 -1190
  64. data/spec/printing/tables_spec.rb +0 -1069
  65. data/spec/printing_spec.rb +0 -106
  66. data/spec/program_name_spec.rb +0 -70
  67. data/spec/spec_helper.rb +0 -3
  68. data/spec/stdio_spec.rb +0 -264
  69. data/spec/sudo_spec.rb +0 -51
  70. data/spec/terminal_spec.rb +0 -231
  71. data/spec/usage_spec.rb +0 -237
  72. data/spec/xdg_spec.rb +0 -191
@@ -1,1069 +0,0 @@
1
- require 'spec_helper'
2
- require 'command_kit/printing/tables'
3
-
4
- require 'stringio'
5
-
6
- describe CommandKit::Printing::Tables do
7
- module TestPrintingTables
8
- class TestCmd
9
-
10
- include CommandKit::Printing::Tables
11
-
12
- end
13
- end
14
-
15
- let(:command_class) { TestPrintingTables::TestCmd }
16
- subject { command_class.new }
17
-
18
- describe "#print_table" do
19
- let(:header) { ['A', 'B', 'C'] }
20
- let(:table) do
21
- [
22
- ['AAAA', 'BBBB', 'CCCC'],
23
- ['DDDD', 'EEEE', 'FFFF'],
24
- ['GGGG', 'HHHH', 'IIII']
25
- ]
26
- end
27
- let(:multiline_table) do
28
- [
29
- ["AAAA\nAA", "BBBB", "CCCC"],
30
- ["DDDD", "EEEE\nEE", "FFFF"],
31
- ["GGGG", "HHHH", "IIII\nII"]
32
- ]
33
- end
34
- let(:table_with_empty_cells) do
35
- [
36
- [nil, 'BBBB', 'CCCC'],
37
- ['DDDD', nil, 'FFFF'],
38
- ['GGGG', 'HHHH', nil ]
39
- ]
40
- end
41
- let(:table_with_diff_row_lengths) do
42
- [
43
- ['AAAA'],
44
- ['DDDD', 'EEEE'],
45
- ['GGGG', 'HHHH', 'IIII']
46
- ]
47
- end
48
- let(:unjustified_table) do
49
- [
50
- ['AAAA', 'BBBB', 'CCCC'],
51
- ['DD', 'EE', 'FF' ],
52
- ['G', 'H', 'I' ]
53
- ]
54
- end
55
-
56
- context "when no keyword arguments are given" do
57
- it "must print the table with 1 space padding and no borders" do
58
- expect {
59
- subject.print_table(table)
60
- }.to output(
61
- [
62
- " AAAA BBBB CCCC ",
63
- " DDDD EEEE FFFF ",
64
- " GGGG HHHH IIII ",
65
- ''
66
- ].join($/)
67
- ).to_stdout
68
- end
69
-
70
- context "but when the table contains multi-line cells" do
71
- it "must print each line of each row" do
72
- expect {
73
- subject.print_table(multiline_table)
74
- }.to output(
75
- [
76
- " AAAA BBBB CCCC ",
77
- " AA ",
78
- " DDDD EEEE FFFF ",
79
- " EE ",
80
- " GGGG HHHH IIII ",
81
- " II ",
82
- ''
83
- ].join($/)
84
- ).to_stdout
85
- end
86
- end
87
-
88
- context "but when the table contains empty cells" do
89
- it "must replace the empty cells with spaces" do
90
- expect {
91
- subject.print_table(table_with_empty_cells)
92
- }.to output(
93
- [
94
- " BBBB CCCC ",
95
- " DDDD FFFF ",
96
- " GGGG HHHH ",
97
- ''
98
- ].join($/)
99
- ).to_stdout
100
- end
101
- end
102
-
103
- context "but when the table contains empty cells" do
104
- it "must pad the columns with empty cells" do
105
- expect {
106
- subject.print_table(table_with_diff_row_lengths)
107
- }.to output(
108
- [
109
- " AAAA ",
110
- " DDDD EEEE ",
111
- " GGGG HHHH IIII ",
112
- ''
113
- ].join($/)
114
- ).to_stdout
115
- end
116
- end
117
- end
118
-
119
- context "and when `separate_rows: true` is given" do
120
- it "must print each row with blank lines between each row" do
121
- expect {
122
- subject.print_table(table, separate_rows: true)
123
- }.to output(
124
- [
125
- " AAAA BBBB CCCC ",
126
- "",
127
- " DDDD EEEE FFFF ",
128
- "",
129
- " GGGG HHHH IIII ",
130
- ''
131
- ].join($/)
132
- ).to_stdout
133
- end
134
- end
135
-
136
- context "and when `justify: :left` is given" do
137
- it "must left justify each cell" do
138
- expect {
139
- subject.print_table(unjustified_table, justify: :left)
140
- }.to output(
141
- [
142
- " AAAA BBBB CCCC ",
143
- " DD EE FF ",
144
- " G H I ",
145
- ''
146
- ].join($/)
147
- ).to_stdout
148
- end
149
- end
150
-
151
- context "and when `justify: :right` is given" do
152
- it "must right justify each cell" do
153
- expect {
154
- subject.print_table(unjustified_table, justify: :right)
155
- }.to output(
156
- [
157
- " AAAA BBBB CCCC ",
158
- " DD EE FF ",
159
- " G H I ",
160
- ''
161
- ].join($/)
162
- ).to_stdout
163
- end
164
- end
165
-
166
- context "and when `justify: :center` is given" do
167
- it "must center justify each cell" do
168
- expect {
169
- subject.print_table(unjustified_table, justify: :center)
170
- }.to output(
171
- [
172
- " AAAA BBBB CCCC ",
173
- " DD EE FF ",
174
- " G H I ",
175
- ''
176
- ].join($/)
177
- ).to_stdout
178
- end
179
- end
180
-
181
- context "and when the header: keyword argument is given" do
182
- it "must print the center justified header row, then a blank line, then the table" do
183
- expect {
184
- subject.print_table(table, header: header)
185
- }.to output(
186
- [
187
- " A B C ",
188
- "",
189
- " AAAA BBBB CCCC ",
190
- " DDDD EEEE FFFF ",
191
- " GGGG HHHH IIII ",
192
- ''
193
- ].join($/)
194
- ).to_stdout
195
- end
196
-
197
- context "and when `separate_rows: true` is given" do
198
- it "must print the header and add blank lines between each row" do
199
- expect {
200
- subject.print_table(table, header: header, separate_rows: true)
201
- }.to output(
202
- [
203
- " A B C ",
204
- "",
205
- " AAAA BBBB CCCC ",
206
- "",
207
- " DDDD EEEE FFFF ",
208
- "",
209
- " GGGG HHHH IIII ",
210
- ''
211
- ].join($/)
212
- ).to_stdout
213
- end
214
- end
215
-
216
- context "and when `justify_header: :left` is given" do
217
- it "must left justify the header cells" do
218
- expect {
219
- subject.print_table(table, header: header, justify_header: :left)
220
- }.to output(
221
- [
222
- " A B C ",
223
- "",
224
- " AAAA BBBB CCCC ",
225
- " DDDD EEEE FFFF ",
226
- " GGGG HHHH IIII ",
227
- ''
228
- ].join($/)
229
- ).to_stdout
230
- end
231
- end
232
-
233
- context "and when `justify_header: :right` is given" do
234
- it "must right justify the header cells" do
235
- expect {
236
- subject.print_table(table, header: header, justify_header: :right)
237
- }.to output(
238
- [
239
- " A B C ",
240
- "",
241
- " AAAA BBBB CCCC ",
242
- " DDDD EEEE FFFF ",
243
- " GGGG HHHH IIII ",
244
- ''
245
- ].join($/)
246
- ).to_stdout
247
- end
248
- end
249
-
250
- context "and when `justify_header: :center` is given" do
251
- it "must center justify the header cells" do
252
- expect {
253
- subject.print_table(table, header: header, justify_header: :center)
254
- }.to output(
255
- [
256
- " A B C ",
257
- "",
258
- " AAAA BBBB CCCC ",
259
- " DDDD EEEE FFFF ",
260
- " GGGG HHHH IIII ",
261
- ''
262
- ].join($/)
263
- ).to_stdout
264
- end
265
- end
266
-
267
- context "and when `justify: :left` is given" do
268
- it "must left justify each cell" do
269
- expect {
270
- subject.print_table(unjustified_table, header: header,
271
- justify: :left)
272
- }.to output(
273
- [
274
- " A B C ",
275
- "",
276
- " AAAA BBBB CCCC ",
277
- " DD EE FF ",
278
- " G H I ",
279
- ''
280
- ].join($/)
281
- ).to_stdout
282
- end
283
- end
284
-
285
- context "and when `justify: :right` is given" do
286
- it "must right justify each cell" do
287
- expect {
288
- subject.print_table(unjustified_table, header: header,
289
- justify: :right)
290
- }.to output(
291
- [
292
- " A B C ",
293
- "",
294
- " AAAA BBBB CCCC ",
295
- " DD EE FF ",
296
- " G H I ",
297
- ''
298
- ].join($/)
299
- ).to_stdout
300
- end
301
- end
302
-
303
- context "and when `justify: :center` is given" do
304
- it "must center justify each cell" do
305
- expect {
306
- subject.print_table(unjustified_table, header: header,
307
- justify: :center)
308
- }.to output(
309
- [
310
- " A B C ",
311
- "",
312
- " AAAA BBBB CCCC ",
313
- " DD EE FF ",
314
- " G H I ",
315
- ''
316
- ].join($/)
317
- ).to_stdout
318
- end
319
- end
320
- end
321
-
322
- context "when given `border: :ascii`" do
323
- it "must print the table with an ASCII border" do
324
- expect {
325
- subject.print_table(table, border: :ascii)
326
- }.to output(
327
- [
328
- "+------+------+------+",
329
- "| AAAA | BBBB | CCCC |",
330
- "| DDDD | EEEE | FFFF |",
331
- "| GGGG | HHHH | IIII |",
332
- "+------+------+------+",
333
- ''
334
- ].join($/)
335
- ).to_stdout
336
- end
337
-
338
- context "but when the table contains multi-line cells" do
339
- it "must print each line of each row" do
340
- expect {
341
- subject.print_table(multiline_table, border: :ascii)
342
- }.to output(
343
- [
344
- "+------+------+------+",
345
- "| AAAA | BBBB | CCCC |",
346
- "| AA | | |",
347
- "| DDDD | EEEE | FFFF |",
348
- "| | EE | |",
349
- "| GGGG | HHHH | IIII |",
350
- "| | | II |",
351
- "+------+------+------+",
352
- ''
353
- ].join($/)
354
- ).to_stdout
355
- end
356
- end
357
-
358
- context "but when the table contains empty cells" do
359
- it "must replace the empty cells with spaces" do
360
- expect {
361
- subject.print_table(table_with_empty_cells, border: :ascii)
362
- }.to output(
363
- [
364
- "+------+------+------+",
365
- "| | BBBB | CCCC |",
366
- "| DDDD | | FFFF |",
367
- "| GGGG | HHHH | |",
368
- "+------+------+------+",
369
- ''
370
- ].join($/)
371
- ).to_stdout
372
- end
373
- end
374
-
375
- context "but when the table contains empty cells" do
376
- it "must pad the columns with empty cells" do
377
- expect {
378
- subject.print_table(table_with_diff_row_lengths, border: :ascii)
379
- }.to output(
380
- [
381
- "+------+------+------+",
382
- "| AAAA | | |",
383
- "| DDDD | EEEE | |",
384
- "| GGGG | HHHH | IIII |",
385
- "+------+------+------+",
386
- ''
387
- ].join($/)
388
- ).to_stdout
389
- end
390
- end
391
-
392
- context "and when `separate_rows: true` is given" do
393
- it "must add separator lines between each row" do
394
- expect {
395
- subject.print_table(table, border: :ascii, separate_rows: true)
396
- }.to output(
397
- [
398
- "+------+------+------+",
399
- "| AAAA | BBBB | CCCC |",
400
- "+------+------+------+",
401
- "| DDDD | EEEE | FFFF |",
402
- "+------+------+------+",
403
- "| GGGG | HHHH | IIII |",
404
- "+------+------+------+",
405
- ''
406
- ].join($/)
407
- ).to_stdout
408
- end
409
- end
410
-
411
- context "and when `justify: :left` is given" do
412
- it "must left justify each cell" do
413
- expect {
414
- subject.print_table(unjustified_table, border: :ascii,
415
- justify: :left)
416
- }.to output(
417
- [
418
- "+------+------+------+",
419
- "| AAAA | BBBB | CCCC |",
420
- "| DD | EE | FF |",
421
- "| G | H | I |",
422
- "+------+------+------+",
423
- ''
424
- ].join($/)
425
- ).to_stdout
426
- end
427
- end
428
-
429
- context "and when `justify: :right` is given" do
430
- it "must right justify each cell" do
431
- expect {
432
- subject.print_table(unjustified_table, border: :ascii,
433
- justify: :right)
434
- }.to output(
435
- [
436
- "+------+------+------+",
437
- "| AAAA | BBBB | CCCC |",
438
- "| DD | EE | FF |",
439
- "| G | H | I |",
440
- "+------+------+------+",
441
- ''
442
- ].join($/)
443
- ).to_stdout
444
- end
445
- end
446
-
447
- context "and when `justify: :center` is given" do
448
- it "must center justify each cell" do
449
- expect {
450
- subject.print_table(unjustified_table, border: :ascii,
451
- justify: :center)
452
- }.to output(
453
- [
454
- "+------+------+------+",
455
- "| AAAA | BBBB | CCCC |",
456
- "| DD | EE | FF |",
457
- "| G | H | I |",
458
- "+------+------+------+",
459
- ''
460
- ].join($/)
461
- ).to_stdout
462
- end
463
- end
464
-
465
- context "and when `header: true` is given" do
466
- it "must print the center justified header row, then a separator line, then the table" do
467
- expect {
468
- subject.print_table(table, border: :ascii, header: header)
469
- }.to output(
470
- [
471
- "+------+------+------+",
472
- "| A | B | C |",
473
- "+------+------+------+",
474
- "| AAAA | BBBB | CCCC |",
475
- "| DDDD | EEEE | FFFF |",
476
- "| GGGG | HHHH | IIII |",
477
- "+------+------+------+",
478
- ''
479
- ].join($/)
480
- ).to_stdout
481
- end
482
-
483
- context "and when `separate_rows: true` is given" do
484
- it "must print the header and add separator lines between each row" do
485
- expect {
486
- subject.print_table(table, border: :ascii,
487
- header: header,
488
- separate_rows: true)
489
- }.to output(
490
- [
491
- "+------+------+------+",
492
- "| A | B | C |",
493
- "+------+------+------+",
494
- "| AAAA | BBBB | CCCC |",
495
- "+------+------+------+",
496
- "| DDDD | EEEE | FFFF |",
497
- "+------+------+------+",
498
- "| GGGG | HHHH | IIII |",
499
- "+------+------+------+",
500
- ''
501
- ].join($/)
502
- ).to_stdout
503
- end
504
- end
505
-
506
- context "and when `justify_header: :left` is given" do
507
- it "must left justify the header cells" do
508
- expect {
509
- subject.print_table(table, border: :ascii,
510
- header: header,
511
- justify_header: :left)
512
- }.to output(
513
- [
514
- "+------+------+------+",
515
- "| A | B | C |",
516
- "+------+------+------+",
517
- "| AAAA | BBBB | CCCC |",
518
- "| DDDD | EEEE | FFFF |",
519
- "| GGGG | HHHH | IIII |",
520
- "+------+------+------+",
521
- ''
522
- ].join($/)
523
- ).to_stdout
524
- end
525
- end
526
-
527
- context "and when `justify_header: :right` is given" do
528
- it "must right justify the header cells" do
529
- expect {
530
- subject.print_table(table, border: :ascii,
531
- header: header,
532
- justify_header: :right)
533
- }.to output(
534
- [
535
- "+------+------+------+",
536
- "| A | B | C |",
537
- "+------+------+------+",
538
- "| AAAA | BBBB | CCCC |",
539
- "| DDDD | EEEE | FFFF |",
540
- "| GGGG | HHHH | IIII |",
541
- "+------+------+------+",
542
- ''
543
- ].join($/)
544
- ).to_stdout
545
- end
546
- end
547
-
548
- context "and when `justify_header: :center` is given" do
549
- it "must center justify the header cells" do
550
- expect {
551
- subject.print_table(table, border: :ascii,
552
- header: header,
553
- justify_header: :center)
554
- }.to output(
555
- [
556
- "+------+------+------+",
557
- "| A | B | C |",
558
- "+------+------+------+",
559
- "| AAAA | BBBB | CCCC |",
560
- "| DDDD | EEEE | FFFF |",
561
- "| GGGG | HHHH | IIII |",
562
- "+------+------+------+",
563
- ''
564
- ].join($/)
565
- ).to_stdout
566
- end
567
- end
568
- end
569
- end
570
-
571
- context "when given `border: :line`" do
572
- it "must print the table with an ANSI line border" do
573
- expect {
574
- subject.print_table(table, border: :line)
575
- }.to output(
576
- [
577
- "┌──────┬──────┬──────┐",
578
- "│ AAAA │ BBBB │ CCCC │",
579
- "│ DDDD │ EEEE │ FFFF │",
580
- "│ GGGG │ HHHH │ IIII │",
581
- "└──────┴──────┴──────┘",
582
- ''
583
- ].join($/)
584
- ).to_stdout
585
- end
586
-
587
- context "but when the table contains multi-line cells" do
588
- it "must print each line of each row" do
589
- expect {
590
- subject.print_table(multiline_table, border: :line)
591
- }.to output(
592
- [
593
- "┌──────┬──────┬──────┐",
594
- "│ AAAA │ BBBB │ CCCC │",
595
- "│ AA │ │ │",
596
- "│ DDDD │ EEEE │ FFFF │",
597
- "│ │ EE │ │",
598
- "│ GGGG │ HHHH │ IIII │",
599
- "│ │ │ II │",
600
- "└──────┴──────┴──────┘",
601
- ''
602
- ].join($/)
603
- ).to_stdout
604
- end
605
- end
606
-
607
- context "but when the table contains empty cells" do
608
- it "must replace the empty cells with spaces" do
609
- expect {
610
- subject.print_table(table_with_empty_cells, border: :line)
611
- }.to output(
612
- [
613
- "┌──────┬──────┬──────┐",
614
- "│ │ BBBB │ CCCC │",
615
- "│ DDDD │ │ FFFF │",
616
- "│ GGGG │ HHHH │ │",
617
- "└──────┴──────┴──────┘",
618
- ''
619
- ].join($/)
620
- ).to_stdout
621
- end
622
- end
623
-
624
- context "but when the table contains empty cells" do
625
- it "must pad the columns with empty cells" do
626
- expect {
627
- subject.print_table(table_with_diff_row_lengths, border: :line)
628
- }.to output(
629
- [
630
- "┌──────┬──────┬──────┐",
631
- "│ AAAA │ │ │",
632
- "│ DDDD │ EEEE │ │",
633
- "│ GGGG │ HHHH │ IIII │",
634
- "└──────┴──────┴──────┘",
635
- ''
636
- ].join($/)
637
- ).to_stdout
638
- end
639
- end
640
-
641
- context "and when `separate_rows: true` is given" do
642
- it "must add separator lines between each row" do
643
- expect {
644
- subject.print_table(table, border: :line, separate_rows: true)
645
- }.to output(
646
- [
647
- "┌──────┬──────┬──────┐",
648
- "│ AAAA │ BBBB │ CCCC │",
649
- "├──────┼──────┼──────┤",
650
- "│ DDDD │ EEEE │ FFFF │",
651
- "├──────┼──────┼──────┤",
652
- "│ GGGG │ HHHH │ IIII │",
653
- "└──────┴──────┴──────┘",
654
- ''
655
- ].join($/)
656
- ).to_stdout
657
- end
658
- end
659
-
660
- context "and when `justify: :left` is given" do
661
- it "must left justify each cell" do
662
- expect {
663
- subject.print_table(unjustified_table, border: :line,
664
- justify: :left)
665
- }.to output(
666
- [
667
- "┌──────┬──────┬──────┐",
668
- "│ AAAA │ BBBB │ CCCC │",
669
- "│ DD │ EE │ FF │",
670
- "│ G │ H │ I │",
671
- "└──────┴──────┴──────┘",
672
- ''
673
- ].join($/)
674
- ).to_stdout
675
- end
676
- end
677
-
678
- context "and when `justify: :right` is given" do
679
- it "must right justify each cell" do
680
- expect {
681
- subject.print_table(unjustified_table, border: :line,
682
- justify: :right)
683
- }.to output(
684
- [
685
- "┌──────┬──────┬──────┐",
686
- "│ AAAA │ BBBB │ CCCC │",
687
- "│ DD │ EE │ FF │",
688
- "│ G │ H │ I │",
689
- "└──────┴──────┴──────┘",
690
- ''
691
- ].join($/)
692
- ).to_stdout
693
- end
694
- end
695
-
696
- context "and when `justify: :center` is given" do
697
- it "must center justify each cell" do
698
- expect {
699
- subject.print_table(unjustified_table, border: :line,
700
- justify: :center)
701
- }.to output(
702
- [
703
- "┌──────┬──────┬──────┐",
704
- "│ AAAA │ BBBB │ CCCC │",
705
- "│ DD │ EE │ FF │",
706
- "│ G │ H │ I │",
707
- "└──────┴──────┴──────┘",
708
- ''
709
- ].join($/)
710
- ).to_stdout
711
- end
712
- end
713
-
714
- context "and when `header: true` is given" do
715
- it "must print the center justified header row, then a separator line, then the table" do
716
- expect {
717
- subject.print_table(table, border: :line, header: header)
718
- }.to output(
719
- [
720
- "┌──────┬──────┬──────┐",
721
- "│ A │ B │ C │",
722
- "├──────┼──────┼──────┤",
723
- "│ AAAA │ BBBB │ CCCC │",
724
- "│ DDDD │ EEEE │ FFFF │",
725
- "│ GGGG │ HHHH │ IIII │",
726
- "└──────┴──────┴──────┘",
727
- ''
728
- ].join($/)
729
- ).to_stdout
730
- end
731
-
732
- context "and when `separate_rows: true` is given" do
733
- it "must print the header and add separator lines between each row" do
734
- expect {
735
- subject.print_table(table, border: :line,
736
- header: header,
737
- separate_rows: true)
738
- }.to output(
739
- [
740
- "┌──────┬──────┬──────┐",
741
- "│ A │ B │ C │",
742
- "├──────┼──────┼──────┤",
743
- "│ AAAA │ BBBB │ CCCC │",
744
- "├──────┼──────┼──────┤",
745
- "│ DDDD │ EEEE │ FFFF │",
746
- "├──────┼──────┼──────┤",
747
- "│ GGGG │ HHHH │ IIII │",
748
- "└──────┴──────┴──────┘",
749
- ''
750
- ].join($/)
751
- ).to_stdout
752
- end
753
- end
754
-
755
- context "and when `justify_header: :left` is given" do
756
- it "must left justify the header cells" do
757
- expect {
758
- subject.print_table(table, border: :line,
759
- header: header,
760
- justify_header: :left)
761
- }.to output(
762
- [
763
- "┌──────┬──────┬──────┐",
764
- "│ A │ B │ C │",
765
- "├──────┼──────┼──────┤",
766
- "│ AAAA │ BBBB │ CCCC │",
767
- "│ DDDD │ EEEE │ FFFF │",
768
- "│ GGGG │ HHHH │ IIII │",
769
- "└──────┴──────┴──────┘",
770
- ''
771
- ].join($/)
772
- ).to_stdout
773
- end
774
- end
775
-
776
- context "and when `justify_header: :right` is given" do
777
- it "must right justify the header cells" do
778
- expect {
779
- subject.print_table(table, border: :line,
780
- header: header,
781
- justify_header: :right)
782
- }.to output(
783
- [
784
- "┌──────┬──────┬──────┐",
785
- "│ A │ B │ C │",
786
- "├──────┼──────┼──────┤",
787
- "│ AAAA │ BBBB │ CCCC │",
788
- "│ DDDD │ EEEE │ FFFF │",
789
- "│ GGGG │ HHHH │ IIII │",
790
- "└──────┴──────┴──────┘",
791
- ''
792
- ].join($/)
793
- ).to_stdout
794
- end
795
- end
796
-
797
- context "and when `justify_header: :center` is given" do
798
- it "must center justify the header cells" do
799
- expect {
800
- subject.print_table(table, border: :line,
801
- header: header,
802
- justify_header: :center)
803
- }.to output(
804
- [
805
- "┌──────┬──────┬──────┐",
806
- "│ A │ B │ C │",
807
- "├──────┼──────┼──────┤",
808
- "│ AAAA │ BBBB │ CCCC │",
809
- "│ DDDD │ EEEE │ FFFF │",
810
- "│ GGGG │ HHHH │ IIII │",
811
- "└──────┴──────┴──────┘",
812
- ''
813
- ].join($/)
814
- ).to_stdout
815
- end
816
- end
817
- end
818
- end
819
-
820
- context "when given `border: :double_line`" do
821
- it "must print the table with an ANSI double-line border" do
822
- expect {
823
- subject.print_table(table, border: :double_line)
824
- }.to output(
825
- [
826
- "╔══════╦══════╦══════╗",
827
- "║ AAAA ║ BBBB ║ CCCC ║",
828
- "║ DDDD ║ EEEE ║ FFFF ║",
829
- "║ GGGG ║ HHHH ║ IIII ║",
830
- "╚══════╩══════╩══════╝",
831
- ''
832
- ].join($/)
833
- ).to_stdout
834
- end
835
-
836
- context "but when the table contains multi-line cells" do
837
- it "must print each line of each row" do
838
- expect {
839
- subject.print_table(multiline_table, border: :double_line)
840
- }.to output(
841
- [
842
- "╔══════╦══════╦══════╗",
843
- "║ AAAA ║ BBBB ║ CCCC ║",
844
- "║ AA ║ ║ ║",
845
- "║ DDDD ║ EEEE ║ FFFF ║",
846
- "║ ║ EE ║ ║",
847
- "║ GGGG ║ HHHH ║ IIII ║",
848
- "║ ║ ║ II ║",
849
- "╚══════╩══════╩══════╝",
850
- ''
851
- ].join($/)
852
- ).to_stdout
853
- end
854
- end
855
-
856
- context "but when the table contains empty cells" do
857
- it "must replace the empty cells with spaces" do
858
- expect {
859
- subject.print_table(table_with_empty_cells, border: :double_line)
860
- }.to output(
861
- [
862
- "╔══════╦══════╦══════╗",
863
- "║ ║ BBBB ║ CCCC ║",
864
- "║ DDDD ║ ║ FFFF ║",
865
- "║ GGGG ║ HHHH ║ ║",
866
- "╚══════╩══════╩══════╝",
867
- ''
868
- ].join($/)
869
- ).to_stdout
870
- end
871
- end
872
-
873
- context "but when the table contains empty cells" do
874
- it "must pad the columns with empty cells" do
875
- expect {
876
- subject.print_table(table_with_diff_row_lengths, border: :double_line)
877
- }.to output(
878
- [
879
- "╔══════╦══════╦══════╗",
880
- "║ AAAA ║ ║ ║",
881
- "║ DDDD ║ EEEE ║ ║",
882
- "║ GGGG ║ HHHH ║ IIII ║",
883
- "╚══════╩══════╩══════╝",
884
- ''
885
- ].join($/)
886
- ).to_stdout
887
- end
888
- end
889
-
890
- context "and when `separate_rows: true` is given" do
891
- it "must add separator lines between each row" do
892
- expect {
893
- subject.print_table(table, border: :double_line, separate_rows: true)
894
- }.to output(
895
- [
896
- "╔══════╦══════╦══════╗",
897
- "║ AAAA ║ BBBB ║ CCCC ║",
898
- "╠══════╬══════╬══════╣",
899
- "║ DDDD ║ EEEE ║ FFFF ║",
900
- "╠══════╬══════╬══════╣",
901
- "║ GGGG ║ HHHH ║ IIII ║",
902
- "╚══════╩══════╩══════╝",
903
- ''
904
- ].join($/)
905
- ).to_stdout
906
- end
907
- end
908
-
909
- context "and when `justify: :left` is given" do
910
- it "must left justify each cell" do
911
- expect {
912
- subject.print_table(unjustified_table, border: :double_line,
913
- justify: :left)
914
- }.to output(
915
- [
916
- "╔══════╦══════╦══════╗",
917
- "║ AAAA ║ BBBB ║ CCCC ║",
918
- "║ DD ║ EE ║ FF ║",
919
- "║ G ║ H ║ I ║",
920
- "╚══════╩══════╩══════╝",
921
- ''
922
- ].join($/)
923
- ).to_stdout
924
- end
925
- end
926
-
927
- context "and when `justify: :right` is given" do
928
- it "must right justify each cell" do
929
- expect {
930
- subject.print_table(unjustified_table, border: :double_line,
931
- justify: :right)
932
- }.to output(
933
- [
934
- "╔══════╦══════╦══════╗",
935
- "║ AAAA ║ BBBB ║ CCCC ║",
936
- "║ DD ║ EE ║ FF ║",
937
- "║ G ║ H ║ I ║",
938
- "╚══════╩══════╩══════╝",
939
- ''
940
- ].join($/)
941
- ).to_stdout
942
- end
943
- end
944
-
945
- context "and when `justify: :center` is given" do
946
- it "must center justify each cell" do
947
- expect {
948
- subject.print_table(unjustified_table, border: :double_line,
949
- justify: :center)
950
- }.to output(
951
- [
952
- "╔══════╦══════╦══════╗",
953
- "║ AAAA ║ BBBB ║ CCCC ║",
954
- "║ DD ║ EE ║ FF ║",
955
- "║ G ║ H ║ I ║",
956
- "╚══════╩══════╩══════╝",
957
- ''
958
- ].join($/)
959
- ).to_stdout
960
- end
961
- end
962
-
963
- context "and when `header: true` is given" do
964
- it "must print the center justified header row, then a separator line, then the table" do
965
- expect {
966
- subject.print_table(table, border: :double_line, header: header)
967
- }.to output(
968
- [
969
- "╔══════╦══════╦══════╗",
970
- "║ A ║ B ║ C ║",
971
- "╠══════╬══════╬══════╣",
972
- "║ AAAA ║ BBBB ║ CCCC ║",
973
- "║ DDDD ║ EEEE ║ FFFF ║",
974
- "║ GGGG ║ HHHH ║ IIII ║",
975
- "╚══════╩══════╩══════╝",
976
- ''
977
- ].join($/)
978
- ).to_stdout
979
- end
980
-
981
- context "and when `separate_rows: true` is given" do
982
- it "must print the header and add separator line between each row" do
983
- expect {
984
- subject.print_table(table, border: :double_line,
985
- header: header,
986
- separate_rows: true)
987
- }.to output(
988
- [
989
- "╔══════╦══════╦══════╗",
990
- "║ A ║ B ║ C ║",
991
- "╠══════╬══════╬══════╣",
992
- "║ AAAA ║ BBBB ║ CCCC ║",
993
- "╠══════╬══════╬══════╣",
994
- "║ DDDD ║ EEEE ║ FFFF ║",
995
- "╠══════╬══════╬══════╣",
996
- "║ GGGG ║ HHHH ║ IIII ║",
997
- "╚══════╩══════╩══════╝",
998
- ''
999
- ].join($/)
1000
- ).to_stdout
1001
- end
1002
- end
1003
-
1004
- context "and when `justify_header: :left` is given" do
1005
- it "must left justify the header cells" do
1006
- expect {
1007
- subject.print_table(table, border: :double_line,
1008
- header: header,
1009
- justify_header: :left)
1010
- }.to output(
1011
- [
1012
- "╔══════╦══════╦══════╗",
1013
- "║ A ║ B ║ C ║",
1014
- "╠══════╬══════╬══════╣",
1015
- "║ AAAA ║ BBBB ║ CCCC ║",
1016
- "║ DDDD ║ EEEE ║ FFFF ║",
1017
- "║ GGGG ║ HHHH ║ IIII ║",
1018
- "╚══════╩══════╩══════╝",
1019
- ''
1020
- ].join($/)
1021
- ).to_stdout
1022
- end
1023
- end
1024
-
1025
- context "and when `justify_header: :right` is given" do
1026
- it "must right justify the header cells" do
1027
- expect {
1028
- subject.print_table(table, border: :double_line,
1029
- header: header,
1030
- justify_header: :right)
1031
- }.to output(
1032
- [
1033
- "╔══════╦══════╦══════╗",
1034
- "║ A ║ B ║ C ║",
1035
- "╠══════╬══════╬══════╣",
1036
- "║ AAAA ║ BBBB ║ CCCC ║",
1037
- "║ DDDD ║ EEEE ║ FFFF ║",
1038
- "║ GGGG ║ HHHH ║ IIII ║",
1039
- "╚══════╩══════╩══════╝",
1040
- ''
1041
- ].join($/)
1042
- ).to_stdout
1043
- end
1044
- end
1045
-
1046
- context "and when `justify_header: :center` is given" do
1047
- it "must center justify the header cells" do
1048
- expect {
1049
- subject.print_table(table, border: :double_line,
1050
- header: header,
1051
- justify_header: :center)
1052
- }.to output(
1053
- [
1054
- "╔══════╦══════╦══════╗",
1055
- "║ A ║ B ║ C ║",
1056
- "╠══════╬══════╬══════╣",
1057
- "║ AAAA ║ BBBB ║ CCCC ║",
1058
- "║ DDDD ║ EEEE ║ FFFF ║",
1059
- "║ GGGG ║ HHHH ║ IIII ║",
1060
- "╚══════╩══════╩══════╝",
1061
- ''
1062
- ].join($/)
1063
- ).to_stdout
1064
- end
1065
- end
1066
- end
1067
- end
1068
- end
1069
- end