1require File.expand_path '../xref_test_case', __FILE__
2
3class TestRDocExtend < XrefTestCase
4
5  def setup
6    super
7
8    @ext = RDoc::Extend.new 'M1', 'comment'
9    @ext.parent = @m1
10    @ext.store = @store
11  end
12
13  def test_module
14    assert_equal @m1, @ext.module
15    assert_equal 'Unknown', RDoc::Extend.new('Unknown', 'comment').module
16  end
17
18  def test_module_extended
19    m1 = @xref_data.add_module RDoc::NormalModule, 'Mod1'
20                  m1.add_module RDoc::NormalModule, 'Mod3'
21    m1_m2       = m1.add_module RDoc::NormalModule, 'Mod2'
22    m1_m2_m3    = m1_m2.add_module RDoc::NormalModule, 'Mod3'
23                  m1_m2_m3.add_module RDoc::NormalModule, 'Mod4'
24                  m1_m2.add_module RDoc::NormalModule, 'Mod4'
25    m1_m2_k0    = m1_m2.add_class RDoc::NormalClass, 'Klass0'
26    m1_m2_k0_m4 = m1_m2_k0.add_module RDoc::NormalModule, 'Mod4'
27                  m1_m2_k0_m4.add_module RDoc::NormalModule, 'Mod6'
28                  m1_m2_k0.add_module RDoc::NormalModule, 'Mod5'
29
30    e0_m4 = RDoc::Extend.new 'Mod4', nil
31    e0_m5 = RDoc::Extend.new 'Mod5', nil
32    e0_m6 = RDoc::Extend.new 'Mod6', nil
33    e0_m1 = RDoc::Extend.new 'Mod1', nil
34    e0_m2 = RDoc::Extend.new 'Mod2', nil
35    e0_m3 = RDoc::Extend.new 'Mod3', nil
36
37    m1_m2_k0.add_extend e0_m4
38    m1_m2_k0.add_extend e0_m5
39    m1_m2_k0.add_extend e0_m6
40    m1_m2_k0.add_extend e0_m1
41    m1_m2_k0.add_extend e0_m2
42    m1_m2_k0.add_extend e0_m3
43
44    assert_equal [e0_m4, e0_m5, e0_m6, e0_m1, e0_m2, e0_m3], m1_m2_k0.extends
45    assert_equal ['Object'], m1_m2_k0.ancestors
46
47    m1_k1 = m1.add_class RDoc::NormalClass, 'Klass1'
48
49    e1_m1 = RDoc::Extend.new 'Mod1', nil
50    e1_m2 = RDoc::Extend.new 'Mod2', nil
51    e1_m3 = RDoc::Extend.new 'Mod3', nil
52    e1_m4 = RDoc::Extend.new 'Mod4', nil
53    e1_k0_m4 = RDoc::Extend.new 'Klass0::Mod4', nil
54
55    m1_k1.add_extend e1_m1
56    m1_k1.add_extend e1_m2
57    m1_k1.add_extend e1_m3
58    m1_k1.add_extend e1_m4
59    m1_k1.add_extend e1_k0_m4
60
61    assert_equal [e1_m1, e1_m2, e1_m3, e1_m4, e1_k0_m4], m1_k1.extends
62    assert_equal ['Object'], m1_k1.ancestors
63
64    m1_k2 = m1.add_class RDoc::NormalClass, 'Klass2'
65
66    e2_m1 = RDoc::Extend.new 'Mod1', nil
67    e2_m2 = RDoc::Extend.new 'Mod2', nil
68    e2_m3 = RDoc::Extend.new 'Mod3', nil
69    e2_k0_m4 = RDoc::Extend.new 'Klass0::Mod4', nil
70
71    m1_k2.add_extend e2_m1
72    m1_k2.add_extend e2_m3
73    m1_k2.add_extend e2_m2
74    m1_k2.add_extend e2_k0_m4
75
76    assert_equal [e2_m1, e2_m3, e2_m2, e2_k0_m4], m1_k2.extends
77    assert_equal ['Object'], m1_k2.ancestors
78
79    m1_k3 = m1.add_class RDoc::NormalClass, 'Klass3'
80
81    e3_m1 = RDoc::Extend.new 'Mod1', nil
82    e3_m2 = RDoc::Extend.new 'Mod2', nil
83    e3_m4 = RDoc::Extend.new 'Mod4', nil
84
85    m1_k3.add_extend e3_m1
86    m1_k3.add_extend e3_m2
87    m1_k3.add_extend e3_m4
88
89    assert_equal [e3_m1, e3_m2, e3_m4], m1_k3.extends
90    assert_equal ['Object'], m1_k3.ancestors
91  end
92
93end
94
95