1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
|
require 'rubygems'
require 'minitest/autorun'
require File.expand_path '../xref_test_case', __FILE__
class TestRDocCrossReference < XrefTestCase
def setup
super
@xref = RDoc::CrossReference.new @c1
end
def assert_ref expected, name
assert_equal expected, @xref.resolve(name, 'fail')
end
def refute_ref name
assert_equal name, @xref.resolve(name, name)
end
def test_resolve_C2
@xref = RDoc::CrossReference.new @c2
refute_ref '#m'
assert_ref @c1__m, 'C1::m'
assert_ref @c2_c3, 'C2::C3'
assert_ref @c2_c3_m, 'C2::C3#m'
assert_ref @c2_c3_h1, 'C3::H1'
assert_ref @c4, 'C4'
assert_ref @c3_h2, 'C3::H2'
refute_ref 'H1'
end
def test_resolve_C2_C3
@xref = RDoc::CrossReference.new @c2_c3
assert_ref @c2_c3_m, '#m'
assert_ref @c2_c3, 'C3'
assert_ref @c2_c3_m, 'C3#m'
assert_ref @c2_c3_h1, 'H1'
assert_ref @c2_c3_h1, 'C3::H1'
assert_ref @c4, 'C4'
assert_ref @c3_h2, 'C3::H2'
end
def test_resolve_C3
@xref = RDoc::CrossReference.new @c3
assert_ref @c3, 'C3'
refute_ref '#m'
refute_ref 'C3#m'
assert_ref @c3_h1, 'H1'
assert_ref @c3_h1, 'C3::H1'
assert_ref @c3_h2, 'C3::H2'
assert_ref @c4, 'C4'
end
def test_resolve_C4
@xref = RDoc::CrossReference.new @c4
# C4 ref inside a C4 containing a C4 should resolve to the contained class
assert_ref @c4_c4, 'C4'
end
def test_resolve_C4_C4
@xref = RDoc::CrossReference.new @c4_c4
# A C4 reference inside a C4 class contained within a C4 class should
# resolve to the inner C4 class.
assert_ref @c4_c4, 'C4'
end
def test_resolve_class
assert_ref @c1, 'C1'
refute_ref 'H1'
assert_ref @c2, 'C2'
assert_ref @c2_c3, 'C2::C3'
assert_ref @c2_c3_h1, 'C2::C3::H1'
assert_ref @c3, '::C3'
assert_ref @c3_h1, '::C3::H1'
assert_ref @c4_c4, 'C4::C4'
end
def test_resolve_file
assert_ref @xref_data, 'xref_data.rb'
end
def test_resolve_method
assert_ref @c1__m, 'm'
assert_ref @c1_m, '#m'
assert_ref @c1__m, '::m'
assert_ref @c1_m, 'C1#m'
assert_ref @c1__m, 'C1.m'
assert_ref @c1__m, 'C1::m'
assert_ref @c1_m, 'C1#m'
assert_ref @c1_m, 'C1#m()'
assert_ref @c1_m, 'C1#m(*)'
assert_ref @c1__m, 'C1.m'
assert_ref @c1__m, 'C1.m()'
assert_ref @c1__m, 'C1.m(*)'
assert_ref @c1__m, 'C1::m'
assert_ref @c1__m, 'C1::m()'
assert_ref @c1__m, 'C1::m(*)'
assert_ref @c2_c3_m, 'C2::C3#m'
assert_ref @c2_c3_m, 'C2::C3.m'
# TODO stop escaping - HTML5 allows anything but space
assert_ref @c2_c3_h1_meh, 'C2::C3::H1#m?'
assert_ref @c2_c3_m, '::C2::C3#m'
assert_ref @c2_c3_m, '::C2::C3#m()'
assert_ref @c2_c3_m, '::C2::C3#m(*)'
end
def test_resolve_no_ref
assert_equal '', @xref.resolve('', '')
assert_equal "bogus", @xref.resolve("bogus", "bogus")
assert_equal "\\bogus", @xref.resolve("\\bogus", "\\bogus")
assert_equal "\\\\bogus", @xref.resolve("\\\\bogus", "\\\\bogus")
assert_equal "\\#n", @xref.resolve("\\#n", "fail")
assert_equal "\\#n()", @xref.resolve("\\#n()", "fail")
assert_equal "\\#n(*)", @xref.resolve("\\#n(*)", "fail")
assert_equal "C1", @xref.resolve("\\C1", "fail")
assert_equal "::C3", @xref.resolve("\\::C3", "fail")
assert_equal "succeed", @xref.resolve("::C3::H1#n", "succeed")
assert_equal "succeed", @xref.resolve("::C3::H1#n(*)", "succeed")
assert_equal "\\::C3::H1#n", @xref.resolve("\\::C3::H1#n", "fail")
end
end
|