1# frozen_string_literal: true
2require 'minitest_helper'
3
4class TestRDocMarkupToTableOfContents < RDoc::Markup::FormatterTestCase
5
6  add_visitor_tests
7
8  def setup
9    super
10
11    @to = RDoc::Markup::ToTableOfContents.new
12  end
13
14  def end_accepting
15    assert_equal %w[hi], @to.res
16  end
17
18  def empty
19    assert_empty @to.res
20  end
21
22  def accept_heading
23    assert_equal [@RM::Heading.new(5, 'Hello')], @to.res
24  end
25
26  def accept_heading_1
27    assert_equal [@RM::Heading.new(1, 'Hello')], @to.res
28  end
29
30  def accept_heading_2
31    assert_equal [@RM::Heading.new(2, 'Hello')], @to.res
32  end
33
34  def accept_heading_3
35    assert_equal [@RM::Heading.new(3, 'Hello')], @to.res
36  end
37
38  def accept_heading_4
39    assert_equal [@RM::Heading.new(4, 'Hello')], @to.res
40  end
41
42  def accept_heading_b
43    assert_equal [@RM::Heading.new(1, '*Hello*')], @to.res
44  end
45
46  def accept_heading_suppressed_crossref
47    assert_equal [@RM::Heading.new(1, '\\Hello')], @to.res
48  end
49
50  alias accept_blank_line                             empty
51  alias accept_block_quote                            empty
52  alias accept_document                               empty
53  alias accept_list_end_bullet                        empty
54  alias accept_list_end_label                         empty
55  alias accept_list_end_lalpha                        empty
56  alias accept_list_end_note                          empty
57  alias accept_list_end_number                        empty
58  alias accept_list_end_ualpha                        empty
59  alias accept_list_item_end_bullet                   empty
60  alias accept_list_item_end_label                    empty
61  alias accept_list_item_end_lalpha                   empty
62  alias accept_list_item_end_note                     empty
63  alias accept_list_item_end_number                   empty
64  alias accept_list_item_end_ualpha                   empty
65  alias accept_list_item_start_bullet                 empty
66  alias accept_list_item_start_label                  empty
67  alias accept_list_item_start_lalpha                 empty
68  alias accept_list_item_start_note                   empty
69  alias accept_list_item_start_note_2                 empty
70  alias accept_list_item_start_note_multi_description empty
71  alias accept_list_item_start_note_multi_label       empty
72  alias accept_list_item_start_number                 empty
73  alias accept_list_item_start_ualpha                 empty
74  alias accept_list_start_bullet                      empty
75  alias accept_list_start_label                       empty
76  alias accept_list_start_lalpha                      empty
77  alias accept_list_start_note                        empty
78  alias accept_list_start_number                      empty
79  alias accept_list_start_ualpha                      empty
80  alias accept_paragraph                              empty
81  alias accept_paragraph_b                            empty
82  alias accept_paragraph_br                           empty
83  alias accept_paragraph_break                        empty
84  alias accept_paragraph_i                            empty
85  alias accept_paragraph_plus                         empty
86  alias accept_paragraph_star                         empty
87  alias accept_paragraph_underscore                   empty
88  alias accept_raw                                    empty
89  alias accept_rule                                   empty
90  alias accept_verbatim                               empty
91  alias list_nested                                   empty
92  alias list_verbatim                                 empty
93  alias start_accepting                               empty
94
95  def test_accept_document_omit_headings_below
96    document = doc
97    document.omit_headings_below = 2
98
99    @to.accept_document document
100
101    assert_equal 2, @to.omit_headings_below
102  end
103
104  def test_accept_heading_suppressed
105    @to.start_accepting
106    @to.omit_headings_below = 4
107
108    suppressed = head 5, 'Hello'
109
110    @to.accept_heading suppressed
111
112    assert_empty @to.res
113  end
114
115  def test_suppressed_eh
116    @to.omit_headings_below = nil
117
118    refute @to.suppressed? head(1, '')
119
120    @to.omit_headings_below = 1
121
122    refute @to.suppressed? head(1, '')
123    assert @to.suppressed? head(2, '')
124  end
125
126end
127
128