1require File.expand_path '../xref_test_case', __FILE__
2
3class TestRDocMethodAttr < XrefTestCase
4
5  def test_block_params_equal
6
7    m = RDoc::MethodAttr.new(nil, 'foo')
8
9    m.block_params = ''
10    assert_equal '', m.block_params
11
12    m.block_params = 'a_var'
13    assert_equal 'a_var', m.block_params
14
15    m.block_params = '()'
16    assert_equal '', m.block_params
17
18    m.block_params = '(a_var, b_var)'
19    assert_equal 'a_var, b_var', m.block_params
20
21    m.block_params = '.to_s + "</#{element.upcase}>"'
22    assert_equal '', m.block_params
23
24    m.block_params = 'i.name'
25    assert_equal 'name', m.block_params
26
27    m.block_params = 'attr.expanded_name, attr.value'
28    assert_equal 'expanded_name, value', m.block_params
29
30    m.block_params = 'expanded_name, attr.value'
31    assert_equal 'expanded_name, value', m.block_params
32
33    m.block_params = 'attr.expanded_name, value'
34    assert_equal 'expanded_name, value', m.block_params
35
36    m.block_params = '(@base_notifier)'
37    assert_equal 'base_notifier', m.block_params
38
39    m.block_params = 'if @signal_status == :IN_LOAD'
40    assert_equal '', m.block_params
41
42    m.block_params = 'e if e.kind_of? Element'
43    assert_equal 'e', m.block_params
44
45    m.block_params = '(e, f) if e.kind_of? Element'
46    assert_equal 'e, f', m.block_params
47
48    m.block_params = 'back_path, back_name'
49    assert_equal 'back_path, back_name', m.block_params
50
51    m.block_params = '(*a[1..-1])'
52    assert_equal '*a', m.block_params
53
54    m.block_params = '@@context[:node] if defined? @@context[:node].namespace'
55    assert_equal 'context', m.block_params
56
57    m.block_params = '(result, klass.const_get(constant_name))'
58    assert_equal 'result, const', m.block_params
59
60    m.block_params = 'name.to_s if (bitmap & bit) != 0'
61    assert_equal 'name', m.block_params
62
63    m.block_params = 'line unless line.deleted'
64    assert_equal 'line', m.block_params
65
66    m.block_params = 'str + rs'
67    assert_equal 'str', m.block_params
68
69    m.block_params = 'f+rs'
70    assert_equal 'f', m.block_params
71
72    m.block_params = '[user, realm, hash[user]]'
73    assert_equal 'user, realm, hash', m.block_params
74
75    m.block_params = 'proc{|rc| rc == "rc" ? irbrc : irbrc+rc| ... }'
76    assert_equal 'proc', m.block_params
77
78    m.block_params = 'lambda { |x| x.to_i }'
79    assert_equal 'lambda', m.block_params
80
81    m.block_params = '$&'
82    assert_equal 'str', m.block_params
83
84    m.block_params = 'Inflections.instance'
85    assert_equal 'instance', m.block_params
86
87    m.block_params = 'self.class::STARTED'
88    assert_equal 'STARTED', m.block_params
89
90    m.block_params = 'Test::Unit::TestCase::STARTED'
91    assert_equal 'STARTED', m.block_params
92
93    m.block_params = 'ActiveSupport::OptionMerger.new(self, options)'
94    assert_equal 'option_merger', m.block_params
95
96    m.block_params = ', msg'
97    assert_equal '', m.block_params
98
99    m.block_params = '[size.to_s(16), term, chunk, term].join'
100    assert_equal '[size, term, chunk, term].join', m.block_params
101
102    m.block_params = 'YPath.new( path )'
103    assert_equal 'y_path', m.block_params
104
105  end
106
107  def test_find_method_or_attribute_recursive
108    inc = RDoc::Include.new 'M1', nil
109    @m1.add_include inc # M1 now includes itself
110
111    assert_nil @m1_m.find_method_or_attribute 'm'
112  end
113
114  def test_full_name
115    assert_equal 'C1#m',  @c1_m.full_name
116    assert_equal 'C1::m', @c1__m.full_name
117  end
118
119  def test_output_name
120    assert_equal '#m',  @c1_m.output_name(@c1)
121    assert_equal '::m', @c1__m.output_name(@c1)
122
123    assert_equal 'C1#m', @c1_m.output_name(@c2)
124    assert_equal 'C1.m', @c1__m.output_name(@c2)
125  end
126
127  def test_search_record
128    @c1_m.comment = 'This is a comment.'
129
130    expected = [
131      'm',
132      'C1#m',
133      'm',
134      'C1',
135      'C1.html#method-i-m',
136      '(foo)',
137      "<p>This is a comment.\n",
138    ]
139
140    assert_equal expected, @c1_m.search_record
141  end
142
143  def test_equals2
144    assert_equal @c1_m, @c1_m
145    refute_equal @c1_m, @parent_m
146  end
147
148  def test_to_s
149    assert_equal 'RDoc::AnyMethod: C1#m',  @c1_m.to_s
150    assert_equal 'RDoc::AnyMethod: C2#b',  @c2_b.to_s
151    assert_equal 'RDoc::AnyMethod: C1::m', @c1__m.to_s
152  end
153
154end
155
156