tty-table 0.11.0 → 0.12.0

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 (144) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -0
  3. data/LICENSE.txt +1 -1
  4. data/README.md +104 -98
  5. data/lib/tty-table.rb +1 -1
  6. data/lib/tty/table.rb +70 -34
  7. data/lib/tty/table/alignment_set.rb +1 -3
  8. data/lib/tty/table/border.rb +50 -57
  9. data/lib/tty/table/border/ascii.rb +16 -16
  10. data/lib/tty/table/border/null.rb +19 -22
  11. data/lib/tty/table/border/row_line.rb +3 -2
  12. data/lib/tty/table/border/unicode.rb +16 -16
  13. data/lib/tty/table/border_dsl.rb +24 -22
  14. data/lib/tty/table/border_options.rb +32 -27
  15. data/lib/tty/table/column_constraint.rb +12 -9
  16. data/lib/tty/table/columns.rb +6 -6
  17. data/lib/tty/table/field.rb +46 -28
  18. data/lib/tty/table/header.rb +5 -5
  19. data/lib/tty/table/indentation.rb +7 -4
  20. data/lib/tty/table/operation/alignment.rb +1 -1
  21. data/lib/tty/table/operation/escape.rb +1 -2
  22. data/lib/tty/table/operation/padding.rb +1 -1
  23. data/lib/tty/table/operation/truncation.rb +1 -1
  24. data/lib/tty/table/operation/wrapped.rb +1 -1
  25. data/lib/tty/table/options.rb +1 -1
  26. data/lib/tty/table/orientation.rb +4 -4
  27. data/lib/tty/table/renderer.rb +8 -8
  28. data/lib/tty/table/renderer/ascii.rb +2 -2
  29. data/lib/tty/table/renderer/basic.rb +37 -40
  30. data/lib/tty/table/renderer/unicode.rb +1 -1
  31. data/lib/tty/table/row.rb +7 -7
  32. data/lib/tty/table/validatable.rb +23 -7
  33. data/lib/tty/table/version.rb +1 -1
  34. metadata +23 -272
  35. data/Rakefile +0 -10
  36. data/examples/alignment.rb +0 -10
  37. data/examples/basic.rb +0 -6
  38. data/examples/orientation.rb +0 -13
  39. data/examples/padding.rb +0 -15
  40. data/examples/resize.rb +0 -15
  41. data/spec/spec_helper.rb +0 -50
  42. data/spec/unit/access_spec.rb +0 -84
  43. data/spec/unit/add_row_spec.rb +0 -26
  44. data/spec/unit/alignment_set/each_spec.rb +0 -15
  45. data/spec/unit/alignment_set/new_spec.rb +0 -25
  46. data/spec/unit/alignment_set/to_ary_spec.rb +0 -12
  47. data/spec/unit/alignment_spec.rb +0 -69
  48. data/spec/unit/border/ascii/rendering_spec.rb +0 -88
  49. data/spec/unit/border/new_spec.rb +0 -25
  50. data/spec/unit/border/null/rendering_spec.rb +0 -128
  51. data/spec/unit/border/options/from_spec.rb +0 -36
  52. data/spec/unit/border/options/new_spec.rb +0 -12
  53. data/spec/unit/border/unicode/rendering_spec.rb +0 -61
  54. data/spec/unit/border_options/new_spec.rb +0 -18
  55. data/spec/unit/border_options/update_spec.rb +0 -16
  56. data/spec/unit/column_constraint/enforce_spec.rb +0 -68
  57. data/spec/unit/column_constraint/widths_spec.rb +0 -33
  58. data/spec/unit/columns/extract_widths_spec.rb +0 -41
  59. data/spec/unit/columns/total_width_spec.rb +0 -11
  60. data/spec/unit/columns/widths_from_spec.rb +0 -49
  61. data/spec/unit/data_spec.rb +0 -10
  62. data/spec/unit/each_spec.rb +0 -24
  63. data/spec/unit/each_with_index_spec.rb +0 -49
  64. data/spec/unit/empty_spec.rb +0 -21
  65. data/spec/unit/eql_spec.rb +0 -32
  66. data/spec/unit/field/equality_spec.rb +0 -49
  67. data/spec/unit/field/length_spec.rb +0 -33
  68. data/spec/unit/field/lines_spec.rb +0 -19
  69. data/spec/unit/field/new_spec.rb +0 -27
  70. data/spec/unit/field/width_spec.rb +0 -21
  71. data/spec/unit/filter_spec.rb +0 -20
  72. data/spec/unit/header/call_spec.rb +0 -28
  73. data/spec/unit/header/color_spec.rb +0 -17
  74. data/spec/unit/header/equality_spec.rb +0 -49
  75. data/spec/unit/header/height_spec.rb +0 -25
  76. data/spec/unit/header/new_spec.rb +0 -13
  77. data/spec/unit/header/set_spec.rb +0 -18
  78. data/spec/unit/header/to_ary_spec.rb +0 -12
  79. data/spec/unit/header_spec.rb +0 -11
  80. data/spec/unit/indentation/indent_spec.rb +0 -15
  81. data/spec/unit/new_spec.rb +0 -71
  82. data/spec/unit/operation/alignment/call_spec.rb +0 -37
  83. data/spec/unit/operation/escape/call_spec.rb +0 -13
  84. data/spec/unit/operation/filter/call_spec.rb +0 -14
  85. data/spec/unit/operation/truncation/call_spec.rb +0 -28
  86. data/spec/unit/operation/wrapped/call_spec.rb +0 -38
  87. data/spec/unit/operations/new_spec.rb +0 -28
  88. data/spec/unit/options/access_spec.rb +0 -12
  89. data/spec/unit/options_spec.rb +0 -23
  90. data/spec/unit/orientation_spec.rb +0 -143
  91. data/spec/unit/padding_spec.rb +0 -115
  92. data/spec/unit/properties_spec.rb +0 -23
  93. data/spec/unit/render_repeat_spec.rb +0 -39
  94. data/spec/unit/render_spec.rb +0 -61
  95. data/spec/unit/render_with_spec.rb +0 -104
  96. data/spec/unit/renderer/ascii/coloring_spec.rb +0 -83
  97. data/spec/unit/renderer/ascii/indentation_spec.rb +0 -39
  98. data/spec/unit/renderer/ascii/multiline_spec.rb +0 -99
  99. data/spec/unit/renderer/ascii/padding_spec.rb +0 -115
  100. data/spec/unit/renderer/ascii/render_spec.rb +0 -66
  101. data/spec/unit/renderer/ascii/resizing_spec.rb +0 -112
  102. data/spec/unit/renderer/ascii/separator_spec.rb +0 -38
  103. data/spec/unit/renderer/basic/alignment_spec.rb +0 -86
  104. data/spec/unit/renderer/basic/coloring_spec.rb +0 -59
  105. data/spec/unit/renderer/basic/extract_column_widths_spec.rb +0 -26
  106. data/spec/unit/renderer/basic/filter_spec.rb +0 -51
  107. data/spec/unit/renderer/basic/indentation_spec.rb +0 -46
  108. data/spec/unit/renderer/basic/multiline_spec.rb +0 -72
  109. data/spec/unit/renderer/basic/new_spec.rb +0 -24
  110. data/spec/unit/renderer/basic/options_spec.rb +0 -50
  111. data/spec/unit/renderer/basic/padding_spec.rb +0 -74
  112. data/spec/unit/renderer/basic/render_spec.rb +0 -55
  113. data/spec/unit/renderer/basic/resizing_spec.rb +0 -94
  114. data/spec/unit/renderer/basic/separator_spec.rb +0 -41
  115. data/spec/unit/renderer/basic/single_row_separator_spec.rb +0 -80
  116. data/spec/unit/renderer/basic/truncation_spec.rb +0 -33
  117. data/spec/unit/renderer/basic/wrapping_spec.rb +0 -38
  118. data/spec/unit/renderer/border_spec.rb +0 -102
  119. data/spec/unit/renderer/render_spec.rb +0 -34
  120. data/spec/unit/renderer/select_spec.rb +0 -20
  121. data/spec/unit/renderer/unicode/coloring_spec.rb +0 -68
  122. data/spec/unit/renderer/unicode/indentation_spec.rb +0 -39
  123. data/spec/unit/renderer/unicode/padding_spec.rb +0 -59
  124. data/spec/unit/renderer/unicode/render_spec.rb +0 -66
  125. data/spec/unit/renderer/unicode/separator_spec.rb +0 -36
  126. data/spec/unit/renderer_spec.rb +0 -17
  127. data/spec/unit/rotate_spec.rb +0 -84
  128. data/spec/unit/row/access_spec.rb +0 -23
  129. data/spec/unit/row/call_spec.rb +0 -43
  130. data/spec/unit/row/data_spec.rb +0 -24
  131. data/spec/unit/row/each_spec.rb +0 -29
  132. data/spec/unit/row/equality_spec.rb +0 -71
  133. data/spec/unit/row/height_spec.rb +0 -25
  134. data/spec/unit/row/new_spec.rb +0 -39
  135. data/spec/unit/row/to_ary_spec.rb +0 -12
  136. data/spec/unit/to_s_spec.rb +0 -56
  137. data/spec/unit/transformation/extract_tuples_spec.rb +0 -33
  138. data/spec/unit/utf_spec.rb +0 -31
  139. data/spec/unit/validatable/validate_options_spec.rb +0 -31
  140. data/spec/unit/validatable_spec.rb +0 -30
  141. data/tasks/console.rake +0 -11
  142. data/tasks/coverage.rake +0 -11
  143. data/tasks/spec.rake +0 -29
  144. data/tty-table.gemspec +0 -41
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe TTY::Table::Renderer::Basic, 'coloring' do
4
- let(:clear) { "\e[0m" }
5
- let(:color) { Pastel.new(enabled: true) }
6
-
7
- before { allow(Pastel).to receive(:new).and_return(color) }
8
-
9
- context 'when border ' do
10
- it "doesn't color" do
11
- table = TTY::Table.new header: ['header1', 'header2']
12
- table << ['a1', 'a2']
13
- table << ['b1', 'b2']
14
- renderer = described_class.new(table)
15
- renderer.border = {style: :green}
16
-
17
- expect(renderer.render).to eql unindent(<<-EOS)
18
- header1 header2
19
- a1 a2
20
- b1 b2
21
- EOS
22
- end
23
- end
24
-
25
- context 'when content' do
26
- it "colors individual field" do
27
- header = [color.green('header1'), 'header2']
28
- table = TTY::Table.new header: header
29
- table << [color.green.on_blue('a1'), 'a2']
30
- table << ['b1', color.red.on_yellow('b2')]
31
- renderer = described_class.new(table)
32
-
33
- expect(renderer.render).to eq unindent(<<-EOS)
34
- #{color.green('header1')} header2
35
- #{color.green.on_blue('a1')} a2
36
- b1 #{color.red.on_yellow('b2')}
37
- EOS
38
- end
39
-
40
- it "colors multiline content" do
41
- header = [color.yellow("Multi\nHeader"), 'header2']
42
- table = TTY::Table.new header: header
43
- table << [color.green.on_blue("Multi\nLine\nContent"), 'a2']
44
- table << ['b1', color.red.on_yellow("Multi\nLine\nContent")]
45
- renderer = described_class.new(table, multiline: true)
46
-
47
- expect(renderer.render).to eq unindent(<<-EOS)
48
- #{color.yellow('Multi ')} header2
49
- #{color.yellow('Header')}
50
- #{color.green.on_blue('Multi ')} a2
51
- #{color.green.on_blue('Line ')}
52
- #{color.green.on_blue('Content')}
53
- b1 #{color.red.on_yellow("Multi ")}
54
- #{color.red.on_yellow("Line ")}
55
- #{color.red.on_yellow("Content")}
56
- EOS
57
- end
58
- end
59
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe TTY::Table::Renderer::Basic, '#column_widths' do
4
- let(:rows) { [['a1', 'a2', 'a3'], ['b1', 'b2', 'b3']] }
5
- let(:renderer) { described_class.new(table) }
6
-
7
- subject { renderer.render }
8
-
9
- context 'with rows only' do
10
- let(:rows) { [['a1a', 'a2a2a2'], ['b1b1b', 'b2b2']] }
11
- let(:table) { TTY::Table.new rows }
12
-
13
- it 'calculates column widths' do
14
- expect(renderer.column_widths).to eq([5,6])
15
- end
16
- end
17
-
18
- context 'with header' do
19
- let(:header) { ['header1', 'head2', 'h3'] }
20
- let(:table) { TTY::Table.new header, rows }
21
-
22
- it 'calcualtes column widths with header' do
23
- expect(renderer.column_widths).to eq([7,5,2])
24
- end
25
- end
26
- end
@@ -1,51 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe TTY::Table::Renderer::Basic, 'filter' do
4
- let(:header) { ['h1', 'h2', 'h3'] }
5
- let(:rows) { [['a1', 'a2', 'a3'], ['b1', 'b2', 'b3']] }
6
- let(:table) { TTY::Table.new(header, rows) }
7
-
8
- subject(:renderer) { described_class.new(table, {filter: filter}) }
9
-
10
- context 'with header' do
11
- context 'filtering only rows' do
12
- let(:filter) { Proc.new { |val, row, col|
13
- (col == 1 and row > 0) ? val.capitalize : val
14
- }
15
- }
16
-
17
- it 'filters only rows' do
18
- expect(renderer.render).to eq unindent(<<-EOS)
19
- h1 h2 h3
20
- a1 A2 a3
21
- b1 B2 b3
22
- EOS
23
- end
24
- end
25
-
26
- context 'filtering header and rows' do
27
- let(:filter) { Proc.new { |val, row, col| col == 1 ? val.capitalize : val }}
28
-
29
- it 'filters only rows' do
30
- expect(renderer.render).to eq unindent(<<-EOS)
31
- h1 H2 h3
32
- a1 A2 a3
33
- b1 B2 b3
34
- EOS
35
- end
36
- end
37
- end
38
-
39
- context 'without header' do
40
- let(:header) { nil }
41
-
42
- let(:filter) { Proc.new { |val, row, col| col == 1 ? val.capitalize : val } }
43
-
44
- it 'filters only rows' do
45
- expect(renderer.render).to eq unindent(<<-EOS)
46
- a1 A2 a3
47
- b1 B2 b3
48
- EOS
49
- end
50
- end
51
- end
@@ -1,46 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe TTY::Table::Renderer::Basic, 'indentation' do
4
- let(:header) { ['h1', 'h2', 'h3'] }
5
- let(:rows) { [['a1', 'a2', 'a3'], ['b1', 'b2', 'b3']] }
6
- let(:table) { TTY::Table.new(header, rows) }
7
- let(:options) { {indent: indent } }
8
-
9
- subject(:renderer) { described_class.new(table, options)}
10
-
11
- context 'when default' do
12
- let(:indent) { 0 }
13
-
14
- it 'indents by value' do
15
- expect(renderer.render).to eql <<-EOS.chomp
16
- h1 h2 h3
17
- a1 a2 a3
18
- b1 b2 b3
19
- EOS
20
- end
21
- end
22
-
23
- context 'when custom' do
24
- let(:indent) { 2 }
25
-
26
- it 'indents by value' do
27
- expect(renderer.render).to eql <<-EOS.chomp
28
- h1 h2 h3
29
- a1 a2 a3
30
- b1 b2 b3
31
- EOS
32
- end
33
- end
34
-
35
- context 'when changed' do
36
- let(:indent) { 2 }
37
- let(:header) { ['h1', 'h2'] }
38
- let(:rows) { [['a1', 'a2']] }
39
-
40
- it 'changes indentation and reuses renderer' do
41
- expect(renderer.render).to eq(" h1 h2\n a1 a2")
42
- renderer.indent = 1
43
- expect(renderer.render).to eq(" h1 h2\n a1 a2")
44
- end
45
- end
46
- end
@@ -1,72 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe TTY::Table::Renderer::Basic, 'multiline content' do
4
- context 'with escaping' do
5
- it "renders multiline as single line" do
6
- rows = [ ["First", '1'], ["Multiline\nContent", '2'], ["Third", '3']]
7
- table = TTY::Table.new rows
8
- renderer = described_class.new(table, multiline: false)
9
- expect(renderer.render).to eq unindent(<<-EOS)
10
- First 1
11
- Multiline\\nContent 2
12
- Third 3
13
- EOS
14
- end
15
-
16
- it "truncates multiline content" do
17
- rows = [ ["First", '1'], ["Multiline\nContent", '2'], ["Third", '3']]
18
- table = TTY::Table.new rows
19
- renderer = described_class.new(table, multiline: false, column_widths: [8,1])
20
- expect(renderer.render).to eq unindent(<<-EOS)
21
- First 1
22
- Multil… 2
23
- Third 3
24
- EOS
25
- end
26
- end
27
-
28
- context 'without escaping' do
29
- it "renders every line" do
30
- rows = [["First", '1'],
31
- ["Multi\nLine\nContent", '2'],
32
- ["Third", "Multi\nLine"]]
33
- table = TTY::Table.new rows
34
- renderer = described_class.new(table, multiline: true)
35
- expect(renderer.render).to eq unindent(<<-EOS)
36
- First 1
37
- Multi 2
38
- Line
39
- Content
40
- Third Multi
41
- Line
42
- EOS
43
- end
44
-
45
- it "renders multiline with column widths" do
46
- rows = [["First", '1'], ["Multi\nLine\nContent", '2'], ["Third", '3']]
47
- table = TTY::Table.new rows
48
- renderer = described_class.new(table, multiline: true, column_widths: [8,1])
49
- expect(renderer.render).to eq unindent(<<-EOS)
50
- First 1
51
- Multi 2
52
- Line
53
- Content
54
- Third 3
55
- EOS
56
- end
57
-
58
- it 'wraps multi line' do
59
- rows = [["First", '1'], ["Multi\nLine\nContent", '2'], ["Third", '3']]
60
- table = TTY::Table.new rows
61
- renderer = described_class.new(table, multiline: true, column_widths: [5,1])
62
- expect(renderer.render).to eq unindent(<<-EOS)
63
- First 1
64
- Multi 2
65
- Line
66
- Conte
67
- nt
68
- Third 3
69
- EOS
70
- end
71
- end
72
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe TTY::Table::Renderer::Basic, '.new' do
4
- let(:header) { ['h1'] }
5
- let(:rows) { [['a1']] }
6
-
7
- subject(:renderer) { described_class }
8
-
9
- context 'without table' do
10
- let(:table) { nil }
11
-
12
- it {
13
- expect {
14
- renderer.new(table)
15
- }.to raise_error(TTY::Table::ArgumentRequired)
16
- }
17
- end
18
-
19
- context 'with table' do
20
- let(:table) { TTY::Table.new(header, rows) }
21
-
22
- it { expect { renderer.new(table) }.not_to raise_error }
23
- end
24
- end
@@ -1,50 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe TTY::Table::Renderer::Basic, 'options' do
4
- let(:rows) { [['a1', 'a2'], ['b1', 'b2']] }
5
- let(:object) { described_class }
6
- let(:table) { TTY::Table.new(rows) }
7
- let(:widths) { nil }
8
- let(:alignments) { [] }
9
- let(:options) {
10
- {
11
- column_widths: widths,
12
- alignments: alignments,
13
- renderer: :basic
14
- }
15
- }
16
-
17
- subject(:renderer) { object.new table, options }
18
-
19
- it { expect(renderer.border).to be_kind_of(TTY::Table::BorderOptions) }
20
-
21
- it { expect(renderer.column_widths).to eql([2,2]) }
22
-
23
- it { expect(renderer.alignments.to_a).to eql(alignments) }
24
-
25
- it { expect(renderer.alignments.to_a).to be_empty }
26
-
27
- context '#column_widths' do
28
- let(:widths) { [10, 10] }
29
-
30
- it { expect(renderer.column_widths).to eq(widths) }
31
- end
32
-
33
- context '#column_widths empty' do
34
- let(:widths) { [] }
35
-
36
- it {
37
- expect {
38
- renderer.column_widths
39
- }.to raise_error(TTY::Table::InvalidArgument)
40
- }
41
- end
42
-
43
- context '#alignments' do
44
- let(:alignments) { [:center, :center] }
45
-
46
- it 'unwraps original array' do
47
- expect(renderer.alignments.to_a).to eq(alignments)
48
- end
49
- end
50
- end
@@ -1,74 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe TTY::Table::Renderer::Basic, 'padding' do
4
- let(:header) { ['Field', 'Type', 'Null', 'Key', 'Default', 'Extra'] }
5
- let(:rows) { [['id', 'int(11)', 'YES', 'nil', 'NULL', '']] }
6
- let(:table) { TTY::Table.new(header, rows) }
7
-
8
- subject(:renderer) { described_class.new(table, options) }
9
-
10
- context 'with left & right padding' do
11
- let(:options) { {padding: [0,1,0,1]} }
12
-
13
- it 'pads each field' do
14
- expect(renderer.render).to eql <<-EOS.chomp
15
- Field Type Null Key Default Extra
16
- id int(11) YES nil NULL
17
- EOS
18
- end
19
- end
20
-
21
- context 'with top & bottom padding' do
22
- let(:options) { {padding: [1,0,1,0]} }
23
-
24
- it 'pads each field' do
25
- expect(renderer.render).to eql <<-EOS.chomp
26
-
27
- Field Type Null Key Default Extra
28
-
29
-
30
- id int(11) YES nil NULL
31
-
32
- EOS
33
- end
34
- end
35
-
36
- context 'with full padding' do
37
- let(:options) { {padding: [1,1,1,1]} }
38
-
39
- it 'pads each field' do
40
- expect(renderer.render).to eql <<-EOS.chomp
41
-
42
- Field Type Null Key Default Extra
43
-
44
-
45
- id int(11) YES nil NULL
46
-
47
- EOS
48
- end
49
- end
50
-
51
- context "with multiline content padding" do
52
- it "pads around fields" do
53
- padding = [1,2,1,2]
54
- table = TTY::Table.new header: ['header1', 'header2']
55
- table << ["a1\na1\na1",'a2']
56
- table << ["b1","b2\nb2"]
57
- renderer = TTY::Table::Renderer::Basic.new(table, padding: padding, multiline: true)
58
- expect(renderer.render).to eql <<-EOS.chomp
59
-
60
- header1 header2
61
-
62
-
63
- a1 a2
64
- a1
65
- a1
66
-
67
-
68
- b1 b2
69
- b2
70
-
71
- EOS
72
- end
73
- end
74
- end
@@ -1,55 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe TTY::Table::Renderer::Basic, '#render' do
4
- let(:header) { ['h1', 'h2', 'h3'] }
5
- let(:rows) { [['a1', 'a2', 'a3'], ['b1', 'b2', 'b3']] }
6
- let(:table) { TTY::Table.new header, rows }
7
-
8
- subject(:renderer) { described_class.new(table) }
9
-
10
- context 'with rows' do
11
- let(:table) { TTY::Table.new rows }
12
-
13
- it 'displays table without styling' do
14
- expect(renderer.render).to eq unindent(<<-EOS)
15
- a1 a2 a3
16
- b1 b2 b3
17
- EOS
18
- end
19
- end
20
-
21
- context 'with header and rows' do
22
- it 'displays table with header' do
23
- expect(renderer.render).to eq unindent(<<-EOS)
24
- h1 h2 h3
25
- a1 a2 a3
26
- b1 b2 b3
27
- EOS
28
- end
29
- end
30
-
31
- context 'with short header' do
32
- let(:header) { ['h1', 'h2'] }
33
- let(:rows) { [['aaa1', 'a2'], ['b1', 'bb1']] }
34
-
35
- it 'displays table according to widths' do
36
- expect(renderer.render).to eq unindent(<<-EOS)
37
- h1 h2
38
- aaa1 a2
39
- b1 bb1
40
- EOS
41
- end
42
- end
43
-
44
- context 'with long header' do
45
- let(:header) { ['header1', 'header2', 'header3'] }
46
-
47
- it 'header greater than row sizes' do
48
- expect(renderer.render).to eq unindent(<<-EOS)
49
- header1 header2 header3
50
- a1 a2 a3
51
- b1 b2 b3
52
- EOS
53
- end
54
- end
55
- end