require 'stringio'
require 'test/unit'
require 'rdoc/ri/formatter'
require 'rdoc/markup/to_flow'
class TestRDocRIFormatter < Test::Unit::TestCase
def setup
@output = StringIO.new
@width = 78
@indent = ' '
@f = RDoc::RI::Formatter.new @output, @width, @indent
@markup = RDoc::Markup.new
@flow = RDoc::Markup::ToFlow.new
end
def test_blankline
@f.blankline
assert_equal "\n", @output.string
end
def test_bold_print
@f.bold_print 'a b c'
assert_equal 'a b c', @output.string
end
def test_break_to_newline
@f.break_to_newline
assert_equal '', @output.string
end
def test_conv_html
assert_equal '> < " &', @f.conv_html('> < " &')
end
def test_conv_markup
text = 'a b
c d'
expected = '+a+ +b+ *c* _d_'
assert_equal expected, @f.conv_markup(text)
end
def test_display_flow
flow = [
RDoc::Markup::Flow::H.new(1, 'heading'),
RDoc::Markup::Flow::P.new('paragraph'),
]
@f.display_flow flow
assert_equal "\nHEADING\n=======\n\n paragraph\n\n", @output.string
end
def test_display_flow_item_h
item = RDoc::Markup::Flow::H.new 1, 'heading'
@f.display_flow_item item
assert_equal "\nHEADING\n=======\n\n", @output.string
end
def test_display_flow_item_li
item = RDoc::Markup::Flow::LI.new nil, 'paragraph'
@f.display_flow_item item
assert_equal " paragraph\n\n", @output.string
end
def test_display_flow_item_list
item = RDoc::Markup::Flow::LIST.new :NUMBER
@f.display_flow_item item
assert_equal "", @output.string
end
def test_display_flow_item_p
item = RDoc::Markup::Flow::P.new 'paragraph'
@f.display_flow_item item
assert_equal " paragraph\n\n", @output.string
end
def test_display_flow_item_rule
item = RDoc::Markup::Flow::RULE.new 1
@f.display_flow_item item
assert_equal "#{'-' * 78}\n", @output.string
end
def test_display_flow_item_unknown
e = assert_raise RDoc::Error do
@f.display_flow_item Object.new
end
assert_equal "Unknown flow element: Object", e.message
end
def test_display_flow_item_verb
item = RDoc::Markup::Flow::VERB.new 'a b c'
@f.display_flow_item item
assert_equal " a b c\n\n", @output.string
end
def test_display_heading_1
@f.display_heading 'heading', 1, ' '
assert_equal "\nHEADING\n=======\n\n", @output.string
end
def test_display_heading_2
@f.display_heading 'heading', 2, ' '
assert_equal "\nheading\n-------\n\n", @output.string
end
def test_display_heading_3
@f.display_heading 'heading', 3, ' '
assert_equal " heading\n\n", @output.string
end
def test_display_list
list = RDoc::Markup::Flow::LIST.new :NUMBER
list << RDoc::Markup::Flow::LI.new(nil, 'a b c')
list << RDoc::Markup::Flow::LI.new(nil, 'd e f')
@f.display_list list
assert_equal " 1. a b c\n\n 2. d e f\n\n", @output.string
end
def test_display_list_bullet
list = RDoc::Markup::Flow::LIST.new :BULLET
list << RDoc::Markup::Flow::LI.new(nil, 'a b c')
@f.display_list list
assert_equal " * a b c\n\n", @output.string
end
def test_display_list_labeled
list = RDoc::Markup::Flow::LIST.new :LABELED
list << RDoc::Markup::Flow::LI.new('label', 'a b c')
@f.display_list list
assert_equal " label a b c\n\n", @output.string
end
def test_display_list_lower_alpha
list = RDoc::Markup::Flow::LIST.new :LOWERALPHA
list << RDoc::Markup::Flow::LI.new(nil, 'a b c')
@f.display_list list
assert_equal " a. a b c\n\n", @output.string
end
def test_display_list_note
list = RDoc::Markup::Flow::LIST.new :NOTE
list << RDoc::Markup::Flow::LI.new('note:', 'a b c')
@f.display_list list
assert_equal " note: a b c\n\n", @output.string
end
def test_display_list_number
list = RDoc::Markup::Flow::LIST.new :NUMBER
list << RDoc::Markup::Flow::LI.new(nil, 'a b c')
@f.display_list list
assert_equal " 1. a b c\n\n", @output.string
end
def test_display_list_unknown
list = RDoc::Markup::Flow::LIST.new :UNKNOWN
list << RDoc::Markup::Flow::LI.new(nil, 'a b c')
e = assert_raise ArgumentError do
@f.display_list list
end
assert_equal 'unknown list type UNKNOWN', e.message
end
def test_display_list_upper_alpha
list = RDoc::Markup::Flow::LIST.new :UPPERALPHA
list << RDoc::Markup::Flow::LI.new(nil, 'a b c')
@f.display_list list
assert_equal " A. a b c\n\n", @output.string
end
def test_display_verbatim_flow_item
verbatim = RDoc::Markup::Flow::VERB.new "a b c\nd e f"
@f.display_verbatim_flow_item verbatim
assert_equal " a b c\n d e f\n\n", @output.string
end
def test_display_verbatim_flow_item_bold
verbatim = RDoc::Markup::Flow::VERB.new "*a* b c"
@f.display_verbatim_flow_item verbatim
assert_equal " *a* b c\n\n", @output.string
end
def test_draw_line
@f.draw_line
expected = '-' * @width + "\n"
assert_equal expected, @output.string
end
def test_draw_line_label
@f.draw_line 'label'
expected = '-' * (@width - 6) + " label\n"
assert_equal expected, @output.string
end
def test_draw_line_label_long
@f.draw_line 'a' * @width
expected = '-' * @width + "\n" + ('a' * @width) + "\n"
assert_equal expected, @output.string
end
def test_raw_print_line
@f.raw_print_line 'a b c'
assert_equal "a b c\n", @output.string
end
def test_strip_attributes_b
text = @f.strip_attributes 'hello world'
expected = 'hello world'
assert_equal expected, text
end
def test_strip_attributes_code
text = @f.strip_attributes 'hello world
'
expected = 'hello world'
assert_equal expected, text
end
def test_strip_attributes_em
text = @f.strip_attributes 'hello world'
expected = 'hello world'
assert_equal expected, text
end
def test_strip_attributes_i
text = @f.strip_attributes 'hello world'
expected = 'hello world'
assert_equal expected, text
end
def test_strip_attributes_tt
text = @f.strip_attributes 'hello world'
expected = 'hello world'
assert_equal expected, text
end
def test_wrap_empty
@f.wrap ''
assert_equal '', @output.string
end
def test_wrap_long
@f.wrap 'a ' * (@width / 2)
assert_equal " a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a\n a \n",
@output.string
end
def test_wrap_markup
@f.wrap 'a b c'
assert_equal " a +b+ c\n", @output.string
end
def test_wrap_nil
@f.wrap nil
assert_equal '', @output.string
end
def test_wrap_short
@f.wrap 'a b c'
assert_equal " a b c\n", @output.string
end
end