Removed obsolete bin scripts.
[rbx.git] / test / rdoc / test_rdoc_ri_formatter.rb
blobed2ccba22d053f830fc856959e01f36a985c66da
1 require 'stringio'
2 require 'test/unit'
3 require 'rdoc/ri/formatter'
4 require 'rdoc/markup/to_flow'
6 class TestRDocRIFormatter < Test::Unit::TestCase
8   def setup
9     @output = StringIO.new
10     @width = 78
11     @indent = '  '
13     @f = RDoc::RI::Formatter.new @output, @width, @indent
14     @markup = RDoc::Markup.new
15     @flow = RDoc::Markup::ToFlow.new
16   end
18   def test_blankline
19     @f.blankline
21     assert_equal "\n", @output.string
22   end
24   def test_bold_print
25     @f.bold_print 'a b c'
27     assert_equal 'a b c', @output.string
28   end
30   def test_break_to_newline
31     @f.break_to_newline
33     assert_equal '', @output.string
34   end
36   def test_conv_html
37     assert_equal '> < " &', @f.conv_html('&gt; &lt; &quot; &amp;')
38   end
40   def test_conv_markup
41     text = '<tt>a</tt> <code>b</code> <b>c</b> <em>d</em>'
43     expected = '+a+ +b+ *c* _d_'
45     assert_equal expected, @f.conv_markup(text)
46   end
48   def test_display_flow
49     flow = [
50       RDoc::Markup::Flow::H.new(1, 'heading'),
51       RDoc::Markup::Flow::P.new('paragraph'),
52     ]
54     @f.display_flow flow
56     assert_equal "\nHEADING\n=======\n\n  paragraph\n\n", @output.string
57   end
59   def test_display_flow_item_h
60     item = RDoc::Markup::Flow::H.new 1, 'heading'
62     @f.display_flow_item item
64     assert_equal "\nHEADING\n=======\n\n", @output.string
65   end
67   def test_display_flow_item_li
68     item = RDoc::Markup::Flow::LI.new nil, 'paragraph'
70     @f.display_flow_item item
72     assert_equal "  paragraph\n\n", @output.string
73   end
75   def test_display_flow_item_list
76     item = RDoc::Markup::Flow::LIST.new :NUMBER
78     @f.display_flow_item item
80     assert_equal "", @output.string
81   end
83   def test_display_flow_item_p
84     item = RDoc::Markup::Flow::P.new 'paragraph'
86     @f.display_flow_item item
88     assert_equal "  paragraph\n\n", @output.string
89   end
91   def test_display_flow_item_rule
92     item = RDoc::Markup::Flow::RULE.new 1
94     @f.display_flow_item item
96     assert_equal "#{'-' * 78}\n", @output.string
97   end
99   def test_display_flow_item_unknown
100     e = assert_raise RDoc::Error do
101       @f.display_flow_item Object.new
102     end
104     assert_equal "Unknown flow element: Object", e.message
105   end
107   def test_display_flow_item_verb
108     item = RDoc::Markup::Flow::VERB.new 'a b c'
110     @f.display_flow_item item
112     assert_equal "  a b c\n\n", @output.string
113   end
115   def test_display_heading_1
116     @f.display_heading 'heading', 1, '  '
118     assert_equal "\nHEADING\n=======\n\n", @output.string
119   end
121   def test_display_heading_2
122     @f.display_heading 'heading', 2, '  '
124     assert_equal "\nheading\n-------\n\n", @output.string
125   end
127   def test_display_heading_3
128     @f.display_heading 'heading', 3, '  '
130     assert_equal "  heading\n\n", @output.string
131   end
133   def test_display_list
134     list = RDoc::Markup::Flow::LIST.new :NUMBER
135     list << RDoc::Markup::Flow::LI.new(nil, 'a b c')
136     list << RDoc::Markup::Flow::LI.new(nil, 'd e f')
138     @f.display_list list
140     assert_equal "  1.  a b c\n\n  2.  d e f\n\n", @output.string
141   end
143   def test_display_list_bullet
144     list = RDoc::Markup::Flow::LIST.new :BULLET
145     list << RDoc::Markup::Flow::LI.new(nil, 'a b c')
147     @f.display_list list
149     assert_equal "  *   a b c\n\n", @output.string
150   end
152   def test_display_list_labeled
153     list = RDoc::Markup::Flow::LIST.new :LABELED
154     list << RDoc::Markup::Flow::LI.new('label', 'a b c')
156     @f.display_list list
158     assert_equal "  label a b c\n\n", @output.string
159   end
161   def test_display_list_lower_alpha
162     list = RDoc::Markup::Flow::LIST.new :LOWERALPHA
163     list << RDoc::Markup::Flow::LI.new(nil, 'a b c')
165     @f.display_list list
167     assert_equal "  a.  a b c\n\n", @output.string
168   end
170   def test_display_list_note
171     list = RDoc::Markup::Flow::LIST.new :NOTE
172     list << RDoc::Markup::Flow::LI.new('note:', 'a b c')
174     @f.display_list list
176     assert_equal "  note: a b c\n\n", @output.string
177   end
179   def test_display_list_number
180     list = RDoc::Markup::Flow::LIST.new :NUMBER
181     list << RDoc::Markup::Flow::LI.new(nil, 'a b c')
183     @f.display_list list
185     assert_equal "  1.  a b c\n\n", @output.string
186   end
188   def test_display_list_unknown
189     list = RDoc::Markup::Flow::LIST.new :UNKNOWN
190     list << RDoc::Markup::Flow::LI.new(nil, 'a b c')
192     e = assert_raise ArgumentError do
193       @f.display_list list
194     end
196     assert_equal 'unknown list type UNKNOWN', e.message
197   end
199   def test_display_list_upper_alpha
200     list = RDoc::Markup::Flow::LIST.new :UPPERALPHA
201     list << RDoc::Markup::Flow::LI.new(nil, 'a b c')
203     @f.display_list list
205     assert_equal "  A.  a b c\n\n", @output.string
206   end
208   def test_display_verbatim_flow_item
209     verbatim = RDoc::Markup::Flow::VERB.new "a b c\nd e f"
211     @f.display_verbatim_flow_item verbatim
213     assert_equal "  a b c\n  d e f\n\n", @output.string
214   end
216   def test_display_verbatim_flow_item_bold
217     verbatim = RDoc::Markup::Flow::VERB.new "*a* b c"
219     @f.display_verbatim_flow_item verbatim
221     assert_equal "  *a* b c\n\n", @output.string
222   end
224   def test_draw_line
225     @f.draw_line
227     expected = '-' * @width + "\n"
228     assert_equal expected, @output.string
229   end
231   def test_draw_line_label
232     @f.draw_line 'label'
234     expected = '-' * (@width - 6) + " label\n"
235     assert_equal expected, @output.string
236   end
238   def test_draw_line_label_long
239     @f.draw_line 'a' * @width
241     expected = '-' * @width + "\n" + ('a' * @width) + "\n"
242     assert_equal expected, @output.string
243   end
245   def test_raw_print_line
246     @f.raw_print_line 'a b c'
248     assert_equal "a b c\n", @output.string
249   end
251   def test_strip_attributes_b
252     text = @f.strip_attributes 'hello <b>world</b>'
254     expected = 'hello world'
256     assert_equal expected, text
257   end
259   def test_strip_attributes_code
260     text = @f.strip_attributes 'hello <code>world</code>'
262     expected = 'hello world'
264     assert_equal expected, text
265   end
267   def test_strip_attributes_em
268     text = @f.strip_attributes 'hello <em>world</em>'
270     expected = 'hello world'
272     assert_equal expected, text
273   end
275   def test_strip_attributes_i
276     text = @f.strip_attributes 'hello <i>world</i>'
278     expected = 'hello world'
280     assert_equal expected, text
281   end
283   def test_strip_attributes_tt
284     text = @f.strip_attributes 'hello <tt>world</tt>'
286     expected = 'hello world'
288     assert_equal expected, text
289   end
291   def test_wrap_empty
292     @f.wrap ''
293     assert_equal '', @output.string
294   end
296   def test_wrap_long
297     @f.wrap 'a ' * (@width / 2)
298     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",
299                  @output.string
300   end
302   def test_wrap_markup
303     @f.wrap 'a <tt>b</tt> c'
304     assert_equal "  a +b+ c\n", @output.string
305   end
307   def test_wrap_nil
308     @f.wrap nil
309     assert_equal '', @output.string
310   end
312   def test_wrap_short
313     @f.wrap 'a b c'
314     assert_equal "  a b c\n", @output.string
315   end