summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmile Anclin <emile.anclin@logilab.fr>2009-03-17 15:48:24 +0100
committerEmile Anclin <emile.anclin@logilab.fr>2009-03-17 15:48:24 +0100
commit79d28d09c7e16129aa47fc63574de3e5a578c7f0 (patch)
tree81968ddbe57932f84806a486bba88712f1c8154c
parent62e55d7a58afb67eabc5421a8ea958f1c9c09b39 (diff)
downloadpylint-79d28d09c7e16129aa47fc63574de3e5a578c7f0.tar.gz
relation extraction tests
-rw-r--r--test/unittest_pyreverse_diadefs.py38
-rw-r--r--test/utils.py11
2 files changed, 44 insertions, 5 deletions
diff --git a/test/unittest_pyreverse_diadefs.py b/test/unittest_pyreverse_diadefs.py
index ee848dc..c8859e5 100644
--- a/test/unittest_pyreverse_diadefs.py
+++ b/test/unittest_pyreverse_diadefs.py
@@ -35,6 +35,7 @@ CONFIG = Config()
HANDLER = DiadefsHandler(CONFIG)
def _process_classes(classes):
+ """extract class names of a list"""
result = []
for classe in classes:
result.append({'node' : isinstance(classe.node, astng.Class),
@@ -43,6 +44,7 @@ def _process_classes(classes):
return result
def _process_modules(modules):
+ """extract module names from a list"""
result = []
for module in modules:
result.append({'node' : isinstance(module.node, astng.Module),
@@ -50,6 +52,19 @@ def _process_modules(modules):
result.sort()
return result
+def _process_relations(relations):
+ """extract relation indices from a relation list"""
+ result = []
+ print "processing relations"
+ for rel_type, rels in relations.items():
+ print rel_type
+ for rel in rels:
+ result.append( (rel_type, rel.from_object.title,
+ rel.to_object.title) )
+ result.sort()
+ return result
+
+
class DiaDefGeneratorTC(unittest.TestCase):
def test_option_values(self):
"""test for ancestor, associated and module options"""
@@ -107,6 +122,29 @@ class DefaultDiadefGeneratorTC(unittest.TestCase):
{'node': True, 'name': 'Specialization'}]
)
+ def test_exctract_relations(self):
+ """test extract_relations between classes"""
+ cd = DefaultDiadefGenerator(Linker(PROJECT), HANDLER).visit(PROJECT)[1]
+ cd.extract_relationships()
+ relations = _process_relations(cd.relationships)
+ should = [('association', 'DoNothing', 'Specialization'),
+ ('implements', 'Ancestor', 'Interface'),
+ ('specialization', 'Specialization', 'Ancestor')]
+ self._relations = should
+ self.assertEquals(relations, should)
+
+ def test_functional_relation_extraction(self):
+ """functional test of relations extraction;
+ different classes possibly in different modules"""
+ # XXX should be catching pyreverse environnement problem but doesn't
+ # pyreverse doesn't extracts the relations but this test ok
+ project = ASTNGManager().project_from_files(['data'], astng_wrapper)
+ handler = DiadefsHandler( Config() )
+ diadefs = handler.get_diadefs(project, Linker(project, tag=True) )
+ cd = diadefs[1]
+ relations = _process_relations(cd.relationships)
+ self.assertEquals(relations, self._relations)
+
def test_known_values2(self):
project = ASTNGManager().project_from_files(['data.clientmodule_test'], astng_wrapper)
dd = DefaultDiadefGenerator(Linker(project), HANDLER).visit(project)
diff --git a/test/utils.py b/test/utils.py
index e965cd3..474e327 100644
--- a/test/utils.py
+++ b/test/utils.py
@@ -104,15 +104,16 @@ def get_project(module, name=None):
return manager.project_from_files([module], _astng_wrapper,
project_name=name)
-attrs = {'all_ancestors': None, 'show_associated': None, 'module_names': None,
- 'output_format': 'dot', 'diadefs_file': None, 'quiet': 0,
- 'show_ancestors': None, 'classes': (), 'all_associated': None,
- 'mode': 'PUB_ONLY', 'show_builtin': False, 'only_classnames': False}
+DEFAULTS = {'all_ancestors': None, 'show_associated': None,
+ 'module_names': None,
+ 'output_format': 'dot', 'diadefs_file': None, 'quiet': 0,
+ 'show_ancestors': None, 'classes': (), 'all_associated': None,
+ 'mode': 'PUB_ONLY', 'show_builtin': False, 'only_classnames': False}
class Config(object):
"""config object for tests"""
def __init__(self):
- for attr, value in attrs.items():
+ for attr, value in DEFAULTS.items():
setattr(self, attr, value)
class FileTC(unittest.TestCase):