diff options
| author | Stefan Behnel <stefan_ml@behnel.de> | 2012-08-30 20:25:44 +0200 |
|---|---|---|
| committer | Stefan Behnel <stefan_ml@behnel.de> | 2012-08-30 20:25:44 +0200 |
| commit | b614aa32bdf8990b6db65f802163fa508706b8a1 (patch) | |
| tree | b4f6924df8426777fa64fad969efa68ea0dd7fd1 /Cython/Compiler/Tests | |
| parent | df57c172a922f384534fb270dd12be2f27134174 (diff) | |
| download | cython-b614aa32bdf8990b6db65f802163fa508706b8a1.tar.gz | |
clean up and simplify signature matching test
Diffstat (limited to 'Cython/Compiler/Tests')
| -rw-r--r-- | Cython/Compiler/Tests/TestSignatureMatching.py | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/Cython/Compiler/Tests/TestSignatureMatching.py b/Cython/Compiler/Tests/TestSignatureMatching.py index b2a369c77..8410ec593 100644 --- a/Cython/Compiler/Tests/TestSignatureMatching.py +++ b/Cython/Compiler/Tests/TestSignatureMatching.py @@ -4,17 +4,17 @@ from Cython.Compiler import PyrexTypes as pt from Cython.Compiler.ExprNodes import NameNode from Cython.Compiler.PyrexTypes import CFuncTypeArg +def cfunctype(*arg_types): + return pt.CFuncType(pt.c_int_type, + [ CFuncTypeArg("name", arg_type, None) for arg_type in arg_types ]) + +def cppclasstype(name, base_classes): + return pt.CppClassType(name, None, 'CPP_'+name, base_classes) + class SignatureMatcherTest(unittest.TestCase): """ Test the signature matching algorithm for overloaded signatures. """ - def _cfunctype(self, return_type, *arg_types): - return pt.CFuncType(return_type, - [ CFuncTypeArg("name", arg_type, None) for arg_type in arg_types ]) - - def _cppclasstype(self, name, base_classes): - return pt.CppClassType(name, None, 'CPP_'+name, base_classes) - def assertMatches(self, expected_type, arg_types, functions): args = [ NameNode(None, type=arg_type) for arg_type in arg_types ] match = pt.best_match(args, functions) @@ -24,9 +24,9 @@ class SignatureMatcherTest(unittest.TestCase): def test_cpp_reference_single_arg(self): function_types = [ - self._cfunctype(pt.c_int_type, pt.CReferenceType(pt.c_int_type)), - self._cfunctype(pt.c_long_type, pt.CReferenceType(pt.c_long_type)), - self._cfunctype(pt.c_double_type, pt.CReferenceType(pt.c_double_type)), + cfunctype(pt.CReferenceType(pt.c_int_type)), + cfunctype(pt.CReferenceType(pt.c_long_type)), + cfunctype(pt.CReferenceType(pt.c_double_type)), ] functions = [ NameNode(None, type=t) for t in function_types ] @@ -36,11 +36,9 @@ class SignatureMatcherTest(unittest.TestCase): def test_cpp_reference_two_args(self): function_types = [ - self._cfunctype( - pt.c_int_type, + cfunctype( pt.CReferenceType(pt.c_int_type), pt.CReferenceType(pt.c_long_type)), - self._cfunctype( - pt.c_int_type, + cfunctype( pt.CReferenceType(pt.c_long_type), pt.CReferenceType(pt.c_long_type)), ] @@ -50,10 +48,10 @@ class SignatureMatcherTest(unittest.TestCase): self.assertMatches(function_types[1], [pt.c_long_type, pt.c_int_type], functions) def test_cpp_reference_cpp_class(self): - classes = [ self._cppclasstype("Test%d"%i, []) for i in range(2) ] + classes = [ cppclasstype("Test%d"%i, []) for i in range(2) ] function_types = [ - self._cfunctype(pt.c_int_type, pt.CReferenceType(classes[0])), - self._cfunctype(pt.c_int_type, pt.CReferenceType(classes[1])), + cfunctype(pt.CReferenceType(classes[0])), + cfunctype(pt.CReferenceType(classes[1])), ] functions = [ NameNode(None, type=t) for t in function_types ] @@ -61,14 +59,16 @@ class SignatureMatcherTest(unittest.TestCase): self.assertMatches(function_types[1], [classes[1]], functions) def test_cpp_reference_cpp_class_and_int(self): - classes = [ self._cppclasstype("Test%d"%i, []) for i in range(2) ] + classes = [ cppclasstype("Test%d"%i, []) for i in range(2) ] function_types = [ - self._cfunctype(pt.c_int_type, - pt.CReferenceType(classes[0]), pt.c_int_type), - self._cfunctype(pt.c_int_type, - pt.CReferenceType(classes[1]), pt.c_long_type), + cfunctype(pt.CReferenceType(classes[0]), pt.c_int_type), + cfunctype(pt.CReferenceType(classes[0]), pt.c_long_type), + cfunctype(pt.CReferenceType(classes[1]), pt.c_int_type), + cfunctype(pt.CReferenceType(classes[1]), pt.c_long_type), ] functions = [ NameNode(None, type=t) for t in function_types ] self.assertMatches(function_types[0], [classes[0], pt.c_int_type], functions) - self.assertMatches(function_types[1], [classes[1], pt.c_int_type], functions) + self.assertMatches(function_types[1], [classes[0], pt.c_long_type], functions) + self.assertMatches(function_types[2], [classes[1], pt.c_int_type], functions) + self.assertMatches(function_types[3], [classes[1], pt.c_long_type], functions) |
