1# frozen_string_literal: true 2require File.expand_path '../xref_test_case', __FILE__ 3 4class TestRDocTopLevel < XrefTestCase 5 6 def setup 7 super 8 9 @top_level = @store.add_file 'path/top_level.rb' 10 @top_level.parser = RDoc::Parser::Ruby 11 end 12 13 def test_initialize 14 t = RDoc::TopLevel.new 'path/file.rb' 15 16 assert_equal 'path/file.rb', t.absolute_name 17 assert_equal 'path/file.rb', t.relative_name 18 end 19 20 def test_initialize_relative 21 t = RDoc::TopLevel.new 'path/file.rb', 'file.rb' 22 23 assert_equal 'path/file.rb', t.absolute_name 24 assert_equal 'file.rb', t.relative_name 25 end 26 27 def test_add_alias 28 a = RDoc::Alias.new nil, 'old', 'new', nil 29 @top_level.add_alias a 30 31 object = @store.find_class_named 'Object' 32 expected = { '#old' => [a] } 33 assert_equal expected, object.unmatched_alias_lists 34 assert_includes object.in_files, @top_level 35 end 36 37 def test_add_alias_nodoc 38 @top_level.document_self = false 39 40 a = RDoc::Alias.new nil, 'old', 'new', nil 41 @top_level.add_alias a 42 43 object = @store.find_class_named('Object') 44 assert_empty object.unmatched_alias_lists 45 assert_includes object.in_files, @top_level 46 end 47 48 def test_add_constant 49 const = RDoc::Constant.new 'C', nil, nil 50 @top_level.add_constant const 51 52 object = @store.find_class_named 'Object' 53 assert_equal [const], object.constants 54 assert_includes object.in_files, @top_level 55 end 56 57 def test_add_constant_nodoc 58 @top_level.document_self = false 59 60 const = RDoc::Constant.new 'C', nil, nil 61 @top_level.add_constant const 62 63 object = @store.find_class_named 'Object' 64 assert_empty object.constants 65 assert_includes object.in_files, @top_level 66 end 67 68 def test_add_include 69 include = RDoc::Include.new 'C', nil 70 @top_level.add_include include 71 72 object = @store.find_class_named 'Object' 73 assert_equal [include], object.includes 74 assert_includes object.in_files, @top_level 75 end 76 77 def test_add_include_nodoc 78 @top_level.document_self = false 79 80 include = RDoc::Include.new 'C', nil 81 @top_level.add_include include 82 83 object = @store.find_class_named('Object') 84 assert_empty object.includes 85 assert_includes object.in_files, @top_level 86 end 87 88 def test_add_method 89 method = RDoc::AnyMethod.new nil, 'm' 90 @top_level.add_method method 91 92 object = @store.find_class_named 'Object' 93 assert_equal [method], object.method_list 94 assert_includes object.in_files, @top_level 95 end 96 97 def test_add_method_stopdoc 98 @top_level.document_self = false 99 100 method = RDoc::AnyMethod.new nil, 'm' 101 @top_level.add_method method 102 103 object = @store.find_class_named('Object') 104 assert_empty object.method_list 105 assert_includes object.in_files, @top_level 106 end 107 108 def test_base_name 109 assert_equal 'top_level.rb', @top_level.base_name 110 end 111 112 def test_display_eh 113 refute @top_level.display? 114 115 page = @store.add_file 'README.txt' 116 page.parser = RDoc::Parser::Simple 117 118 assert page.display? 119 end 120 121 def test_eql_eh 122 top_level2 = @store.add_file 'path/top_level.rb' 123 other_level = @store.add_file 'path/other_level.rb' 124 125 assert_operator @top_level, :eql?, top_level2 126 127 refute_operator other_level, :eql?, @top_level 128 end 129 130 def test_equals2 131 top_level2 = @store.add_file 'path/top_level.rb' 132 other_level = @store.add_file 'path/other_level.rb' 133 134 assert_equal @top_level, top_level2 135 136 refute_equal other_level, @top_level 137 end 138 139 def test_find_class_or_module 140 assert_equal @c1, @xref_data.find_class_or_module('C1') 141 assert_equal @c2_c3, @xref_data.find_class_or_module('C2::C3') 142 assert_equal @c4, @xref_data.find_class_or_module('C4') 143 assert_equal @m1_m2, @xref_data.find_class_or_module('M1::M2') 144 end 145 146 def test_full_name 147 assert_equal 'path/top_level.rb', @top_level.full_name 148 end 149 150 def test_hash 151 tl2 = @store.add_file 'path/top_level.rb' 152 tl3 = @store.add_file 'other/top_level.rb' 153 154 assert_equal @top_level.hash, tl2.hash 155 refute_equal @top_level.hash, tl3.hash 156 end 157 158 def test_http_url 159 assert_equal 'prefix/path/top_level_rb.html', @top_level.http_url('prefix') 160 end 161 162 def test_last_modified 163 assert_nil @top_level.last_modified 164 stat = Object.new 165 def stat.mtime() 0 end 166 @top_level.file_stat = stat 167 assert_equal 0, @top_level.last_modified 168 end 169 170 def test_marshal_dump 171 page = @store.add_file 'README.txt' 172 page.parser = RDoc::Parser::Simple 173 page.comment = RDoc::Comment.new 'This is a page', page 174 175 loaded = Marshal.load Marshal.dump page 176 177 comment = RDoc::Markup::Document.new( 178 RDoc::Markup::Paragraph.new('This is a page')) 179 comment.file = loaded 180 181 assert_equal page, loaded 182 183 assert_equal 'README.txt', loaded.absolute_name 184 assert_equal 'README.txt', loaded.relative_name 185 186 assert_equal RDoc::Parser::Simple, loaded.parser 187 188 assert_equal comment, loaded.comment 189 end 190 191 def test_marshal_load_version_0 192 loaded = Marshal.load "\x04\bU:\x13RDoc::TopLevel" + 193 "[\ti\x00I\"\x0FREADME.txt\x06:\x06EF" + 194 "c\x19RDoc::Parser::Simple" + 195 "o:\eRDoc::Markup::Document\a:\v@parts" + 196 "[\x06o:\x1CRDoc::Markup::Paragraph\x06;\b" + 197 "[\x06I\"\x13This is a page\x06;\x06F:\n@file@\a" 198 199 comment = RDoc::Markup::Document.new( 200 RDoc::Markup::Paragraph.new('This is a page')) 201 comment.file = loaded 202 203 assert_equal 'README.txt', loaded.absolute_name 204 assert_equal 'README.txt', loaded.relative_name 205 206 assert_equal RDoc::Parser::Simple, loaded.parser 207 208 assert_equal comment, loaded.comment 209 210 assert loaded.display? 211 end 212 213 def test_name 214 assert_equal 'top_level.rb', @top_level.name 215 end 216 217 def test_page_name 218 assert_equal 'top_level', @top_level.page_name 219 220 tl = @store.add_file 'README.ja' 221 222 assert_equal 'README.ja', tl.page_name 223 224 tl = @store.add_file 'Rakefile' 225 226 assert_equal 'Rakefile', tl.page_name 227 end 228 229 def test_page_name_trim_extension 230 tl = @store.add_file 'README.ja.rdoc' 231 232 assert_equal 'README.ja', tl.page_name 233 234 tl = @store.add_file 'README.ja.md' 235 236 assert_equal 'README.ja', tl.page_name 237 238 tl = @store.add_file 'README.txt' 239 240 assert_equal 'README', tl.page_name 241 end 242 243 def test_search_record 244 assert_nil @xref_data.search_record 245 end 246 247 def test_search_record_page 248 page = @store.add_file 'README.txt' 249 page.parser = RDoc::Parser::Simple 250 page.comment = 'This is a comment.' 251 252 expected = [ 253 'README', 254 '', 255 'README', 256 '', 257 'README_txt.html', 258 '', 259 "<p>This is a comment.\n", 260 ] 261 262 assert_equal expected, page.search_record 263 end 264 265 def test_text_eh 266 refute @xref_data.text? 267 268 rd = @store.add_file 'rd_format.rd' 269 rd.parser = RDoc::Parser::RD 270 271 assert rd.text? 272 273 simple = @store.add_file 'simple.txt' 274 simple.parser = RDoc::Parser::Simple 275 276 assert simple.text? 277 end 278 279 def test_text_eh_no_parser 280 refute @xref_data.text? 281 282 rd = @store.add_file 'rd_format.rd' 283 284 refute rd.text? 285 end 286 287end 288 289