1require File.expand_path '../xref_test_case', __FILE__ 2 3class TestRDocConstant < XrefTestCase 4 5 def setup 6 super 7 8 @const = @c1.constants.first 9 end 10 11 def test_full_name 12 assert_equal 'C1::CONST', @const.full_name 13 end 14 15 def test_is_alias_for 16 top_level = @store.add_file 'file.rb' 17 18 c = RDoc::Constant.new 'CONST', nil, 'comment' 19 top_level.add_constant c 20 21 assert_nil c.is_alias_for 22 23 c.is_alias_for = 'C1' 24 25 assert_equal @c1, c.is_alias_for 26 27 c.is_alias_for = 'unknown' 28 29 assert_equal 'unknown', c.is_alias_for 30 end 31 32 def test_marshal_dump 33 top_level = @store.add_file 'file.rb' 34 35 c = RDoc::Constant.new 'CONST', nil, 'this is a comment' 36 c.record_location top_level 37 38 aliased = top_level.add_class RDoc::NormalClass, 'Aliased' 39 c.is_alias_for = aliased 40 41 cm = top_level.add_class RDoc::NormalClass, 'Klass' 42 cm.add_constant c 43 44 section = cm.sections.first 45 46 loaded = Marshal.load Marshal.dump c 47 loaded.store = @store 48 49 comment = doc(para('this is a comment')) 50 51 assert_equal c, loaded 52 53 assert_equal aliased, loaded.is_alias_for 54 assert_equal comment, loaded.comment 55 assert_equal top_level, loaded.file 56 assert_equal 'Klass::CONST', loaded.full_name 57 assert_equal 'CONST', loaded.name 58 assert_nil loaded.visibility 59 assert_equal cm, loaded.parent 60 assert_equal section, loaded.section 61 end 62 63 def test_marshal_load 64 top_level = @store.add_file 'file.rb' 65 66 c = RDoc::Constant.new 'CONST', nil, 'this is a comment' 67 c.record_location top_level 68 69 cm = top_level.add_class RDoc::NormalClass, 'Klass' 70 cm.add_constant c 71 72 section = cm.sections.first 73 74 loaded = Marshal.load Marshal.dump c 75 loaded.store = @store 76 77 comment = doc(para('this is a comment')) 78 79 assert_equal c, loaded 80 81 assert_nil loaded.is_alias_for 82 assert_equal comment, loaded.comment 83 assert_equal top_level, loaded.file 84 assert_equal 'Klass::CONST', loaded.full_name 85 assert_equal 'CONST', loaded.name 86 assert_nil loaded.visibility 87 assert_equal cm, loaded.parent 88 assert_equal section, loaded.section 89 90 assert loaded.display? 91 end 92 93 def test_marshal_load_version_0 94 top_level = @store.add_file 'file.rb' 95 96 aliased = top_level.add_class RDoc::NormalClass, 'Aliased' 97 cm = top_level.add_class RDoc::NormalClass, 'Klass' 98 section = cm.sections.first 99 100 loaded = Marshal.load "\x04\bU:\x13RDoc::Constant[\x0Fi\x00I" + 101 "\"\nCONST\x06:\x06ETI\"\x11Klass::CONST\x06" + 102 ";\x06T0I\"\fAliased\x06;\x06To" + 103 ":\eRDoc::Markup::Document\a:\v@parts[\x06o" + 104 ":\x1CRDoc::Markup::Paragraph\x06;\b[\x06I" + 105 "\"\x16this is a comment\x06;\x06T:\n@file0I" + 106 "\"\ffile.rb\x06;\x06TI\"\nKlass\x06" + 107 ";\x06Tc\x16RDoc::NormalClass0" 108 109 loaded.store = @store 110 111 comment = doc(para('this is a comment')) 112 113 assert_equal aliased, loaded.is_alias_for 114 assert_equal comment, loaded.comment 115 assert_equal top_level, loaded.file 116 assert_equal 'Klass::CONST', loaded.full_name 117 assert_equal 'CONST', loaded.name 118 assert_nil loaded.visibility 119 assert_equal cm, loaded.parent 120 assert_equal section, loaded.section 121 122 assert loaded.display? 123 end 124 125 def test_marshal_round_trip 126 top_level = @store.add_file 'file.rb' 127 128 c = RDoc::Constant.new 'CONST', nil, 'this is a comment' 129 c.record_location top_level 130 c.is_alias_for = 'Unknown' 131 132 cm = top_level.add_class RDoc::NormalClass, 'Klass' 133 cm.add_constant c 134 135 section = cm.sections.first 136 137 loaded = Marshal.load Marshal.dump c 138 loaded.store = @store 139 140 reloaded = Marshal.load Marshal.dump loaded 141 reloaded.store = @store 142 143 assert_equal section, reloaded.section 144 assert_equal 'Unknown', reloaded.is_alias_for 145 end 146 147 def test_path 148 assert_equal 'C1.html#CONST', @const.path 149 end 150 151end 152