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