39
39
def _process_classes(classes):
40
40
"""extract class names of a list"""
42
for classe in classes:
43
result.append({'node' : isinstance(classe.node, astng.Class),
44
'name' : classe.title})
48
def _process_modules(modules):
49
"""extract module names from a list"""
51
for module in modules:
52
result.append({'node' : isinstance(module.node, astng.Module),
53
'name': module.title})
41
return sorted([(isinstance(c.node, astng.Class), c.title) for c in classes])
57
43
def _process_relations(relations):
58
44
"""extract relation indices from a relation list"""
60
for rel_type, rels in relations.items():
46
for rel_type, rels in relations.iteritems():
62
48
result.append( (rel_type, rel.from_object.title,
63
49
rel.to_object.title) )
73
59
cl_config = Config()
74
60
cl_config.classes = ['Specialization']
75
61
cl_h = DiaDefGenerator(Linker(PROJECT), DiadefsHandler(cl_config) )
76
self.assertEquals( (0, 0), df_h._get_levels())
77
self.assertEquals( False, df_h.module_names)
78
self.assertEquals( (-1, -1), cl_h._get_levels())
79
self.assertEquals( True, cl_h.module_names)
62
self.assertEqual( (0, 0), df_h._get_levels())
63
self.assertEqual( False, df_h.module_names)
64
self.assertEqual( (-1, -1), cl_h._get_levels())
65
self.assertEqual( True, cl_h.module_names)
80
66
for hndl in [df_h, cl_h]:
81
67
hndl.config.all_ancestors = True
82
68
hndl.config.all_associated = True
83
69
hndl.config.module_names = True
84
70
hndl._set_default_options()
85
self.assertEquals( (-1, -1), hndl._get_levels())
86
self.assertEquals( True, hndl.module_names)
71
self.assertEqual( (-1, -1), hndl._get_levels())
72
self.assertEqual( True, hndl.module_names)
87
73
handler = DiadefsHandler( Config())
88
74
df_h = DiaDefGenerator(Linker(PROJECT), handler)
89
75
cl_config = Config()
94
80
hndl.config.show_associated = 1
95
81
hndl.config.module_names = False
96
82
hndl._set_default_options()
97
self.assertEquals( (2, 1), hndl._get_levels())
98
self.assertEquals( False, hndl.module_names)
83
self.assertEqual( (2, 1), hndl._get_levels())
84
self.assertEqual( False, hndl.module_names)
99
85
#def test_default_values(self):
100
86
"""test efault values for package or class diagrams"""
101
87
# TODO : should test difference between default values for package
104
90
class DefaultDiadefGeneratorTC(unittest.TestCase):
105
91
def test_known_values1(self):
106
92
dd = DefaultDiadefGenerator(Linker(PROJECT), HANDLER).visit(PROJECT)
107
self.assertEquals(len(dd), 2)
93
self.assertEqual(len(dd), 2)
108
94
keys = [d.TYPE for d in dd]
109
self.assertEquals(keys, ['package', 'class'])
95
self.assertEqual(keys, ['package', 'class'])
111
self.assertEquals(pd.title, 'packages No Name')
112
modules = _process_modules(pd.objects)
113
self.assertEquals(modules, [{'node': True, 'name': 'data'},
114
{'node': True, 'name': 'data.clientmodule_test'},
115
{'node': True, 'name': 'data.suppliermodule_test'}])
97
self.assertEqual(pd.title, 'packages No Name')
98
modules = sorted([(isinstance(m.node, astng.Module), m.title)
100
self.assertEqual(modules, [(True, 'data'),
101
(True, 'data.clientmodule_test'),
102
(True, 'data.suppliermodule_test')])
117
self.assertEquals(cd.title, 'classes No Name')
104
self.assertEqual(cd.title, 'classes No Name')
118
105
classes = _process_classes(cd.objects)
119
self.assertEquals(classes, [{'node': True, 'name': 'Ancestor'},
120
{'node': True, 'name': 'DoNothing'},
121
{'node': True, 'name': 'Interface'},
122
{'node': True, 'name': 'Specialization'}]
106
self.assertEqual(classes, [(True, 'Ancestor'),
109
(True, 'Specialization')]
125
112
_should_rels = [('association', 'DoNothing', 'Ancestor'),
131
118
cd = DefaultDiadefGenerator(Linker(PROJECT), HANDLER).visit(PROJECT)[1]
132
119
cd.extract_relationships()
133
120
relations = _process_relations(cd.relationships)
134
self.assertEquals(relations, self._should_rels)
121
self.assertEqual(relations, self._should_rels)
136
123
def test_functional_relation_extraction(self):
137
124
"""functional test of relations extraction;
143
130
diadefs = handler.get_diadefs(project, Linker(project, tag=True) )
145
132
relations = _process_relations(cd.relationships)
146
self.assertEquals(relations, self._should_rels)
133
self.assertEqual(relations, self._should_rels)
148
135
def test_known_values2(self):
149
136
project = MANAGER.project_from_files(['data.clientmodule_test'], astng_wrapper)
150
137
dd = DefaultDiadefGenerator(Linker(project), HANDLER).visit(project)
151
self.assertEquals(len(dd), 1)
138
self.assertEqual(len(dd), 1)
152
139
keys = [d.TYPE for d in dd]
153
self.assertEquals(keys, ['class'])
140
self.assertEqual(keys, ['class'])
155
self.assertEquals(cd.title, 'classes No Name')
142
self.assertEqual(cd.title, 'classes No Name')
156
143
classes = _process_classes(cd.objects)
157
self.assertEquals(classes, [{'node': True, 'name': 'Ancestor'},
158
{'node': True, 'name': 'DoNothing'},
159
{'node': True, 'name': 'Specialization'}]
144
self.assertEqual(classes, [(True, 'Ancestor'),
146
(True, 'Specialization')]
162
149
class ClassDiadefGeneratorTC(unittest.TestCase):
165
152
cdg = ClassDiadefGenerator(Linker(PROJECT), HANDLER)
166
153
special = 'data.clientmodule_test.Specialization'
167
154
cd = cdg.class_diagram(PROJECT, special)
168
self.assertEquals(cd.title, special)
155
self.assertEqual(cd.title, special)
169
156
classes = _process_classes(cd.objects)
170
self.assertEquals(classes, [{'node': True,
171
'name': 'data.clientmodule_test.Ancestor'},
172
{'node': True, 'name': special},
174
'name': 'data.suppliermodule_test.DoNothing'},
157
self.assertEqual(classes, [(True, 'data.clientmodule_test.Ancestor'),
159
(True, 'data.suppliermodule_test.DoNothing'),
177
162
def test_known_values2(self):
178
163
HANDLER.config.module_names = False
179
164
cd = ClassDiadefGenerator(Linker(PROJECT), HANDLER).class_diagram(PROJECT, 'data.clientmodule_test.Specialization')
180
self.assertEquals(cd.title, 'data.clientmodule_test.Specialization')
165
self.assertEqual(cd.title, 'data.clientmodule_test.Specialization')
181
166
classes = _process_classes(cd.objects)
182
self.assertEquals(classes, [{'node': True, 'name': 'Ancestor' },
183
{'node': True, 'name': 'DoNothing'},
184
{'node': True, 'name': 'Specialization'}
167
self.assertEqual(classes, [(True, 'Ancestor'),
169
(True, 'Specialization')
188
173
if __name__ == '__main__':