1
0
Fork 0
mirror of https://github.com/pry/pry.git synced 2022-11-09 12:35:05 -05:00
pry--pry/spec/helpers/table_spec.rb

102 lines
2.9 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
2013-01-09 18:16:14 -05:00
describe 'Formatting Table' do
it 'knows about colorized fitting' do
t = Pry::Helpers::Table.new %w[hihi], column_count: 1
2015-03-10 16:49:29 -04:00
expect(t.fits_on_line?(4)).to eq true
2013-01-09 18:16:14 -05:00
t.items = []
2015-03-10 16:49:29 -04:00
expect(t.fits_on_line?(4)).to eq true
2013-01-09 18:16:14 -05:00
t.items = %w[hi hi]
2015-03-10 16:49:29 -04:00
expect(t.fits_on_line?(4)).to eq true
2013-01-09 18:16:14 -05:00
t.column_count = 2
2015-03-10 16:49:29 -04:00
expect(t.fits_on_line?(4)).to eq false
2013-01-09 18:16:14 -05:00
t.items = %w[a ccc bb dddd].sort
2015-03-10 16:49:29 -04:00
expect(t.fits_on_line?(8)).to eq true
expect(t.fits_on_line?(7)).to eq false
2013-01-09 18:16:14 -05:00
end
describe 'formatting - should order downward and wrap to columns' do
FAKE_COLUMNS = 62
def try_round_trip(expected)
things = expected.split(/\s+/).sort
actual = Pry::Helpers.tablify(things, FAKE_COLUMNS).to_s.strip
expected = expected.gsub(/\s+$/, '')
actual = actual.gsub(/\s+$/, '')
2013-01-09 18:16:14 -05:00
if actual != expected
bar = '-' * 25
2013-01-09 18:16:14 -05:00
puts \
bar + 'expected' + bar,
2013-01-09 18:16:14 -05:00
expected,
bar + 'actual' + bar,
2013-01-09 18:16:14 -05:00
actual
end
2015-03-10 16:49:29 -04:00
expect(actual).to eq expected
2013-01-09 18:16:14 -05:00
end
it 'should handle a tiny case' do
try_round_trip(<<-TABLE)
2013-01-09 18:16:14 -05:00
asdf asfddd fdass
TABLE
2013-01-09 18:16:14 -05:00
end
it 'should handle the basic case' do
try_round_trip(<<-TABLE)
2013-01-09 18:16:14 -05:00
aadd ddasffssdad sdsaadaasd ssfasaafssd
adassdfffaasds f sdsfasddasfds ssssdaa
assfsafsfsds fsasa ssdsssafsdasdf
TABLE
2013-01-09 18:16:14 -05:00
end
it 'should handle... another basic case' do
try_round_trip(<<-TABLE)
2013-01-09 18:16:14 -05:00
aaad dasaasffaasf fdasfdfss safdfdddsasd
aaadfasassdfff ddadadassasdf fddsasadfssdss sasf
aaddaafaf dddasaaaaaa fdsasad sddsa
aas dfsddffdddsdfd ff sddsfsaa
adasadfaaffds dsfafdsfdfssda ffadsfafsaafa ss
asddaadaaadfdd dssdss ffssfsfafaadss ssas
asdsdaa faadf fsddfff ssdfssff
asfadsssaaad fasfaafdssd s
TABLE
2013-01-09 18:16:14 -05:00
end
it 'should handle colors' do
try_round_trip(<<-TABLE)
2013-01-09 18:16:14 -05:00
\e[31maaaaaaaaaa\e[0m \e[31mccccccccccccccccccccccccccccc\e[0m
\e[31mbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\e[0m \e[31mddddddddddddd\e[0m
TABLE
2013-01-09 18:16:14 -05:00
end
it 'should handle empty input' do
try_round_trip('')
end
it 'should handle one-token input' do
try_round_trip('asdf')
end
end
describe 'line length is smaller than the length of the longest word' do
before do
element = 'swizzle'
@elem_len = element.length
@out = [element, 'crime', 'fun']
end
it 'should not raise error' do
expect { Pry::Helpers.tablify(@out, @elem_len - 1) }.not_to raise_error
end
it 'should format output as one column' do
table = Pry::Helpers.tablify(@out, @elem_len - 1).to_s
2015-03-10 16:49:29 -04:00
expect(table).to eq "swizzle\ncrime \nfun "
end
end
2014-09-12 11:09:18 -04:00
specify 'decide between one-line or indented output' do
expect(Pry::Helpers.tablify_or_one_line('head', %w[ing])).to eq "head: ing\n"
end
2013-01-09 18:16:14 -05:00
end