[vlc-commits] add tests for Par.parse_param + fix existing test

Alberto Invernizzi git at videolan.org
Wed Apr 29 13:12:43 CEST 2020


vlc/python | branch: master | Alberto Invernizzi <alby.inve at gmail.com> | Tue Apr 21 23:03:10 2020 +0200| [4e34bd12c82239ead42892b60a0169f12b5245fd] | committer: Alberto Invernizzi

add tests for Par.parse_param + fix existing test

> http://git.videolan.org/gitweb.cgi/vlc/python.git/?a=commit;h=4e34bd12c82239ead42892b60a0169f12b5245fd
---

 tests/test.py | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 52 insertions(+), 1 deletion(-)

diff --git a/tests/test.py b/tests/test.py
index f5ad4bd..20fc321 100755
--- a/tests/test.py
+++ b/tests/test.py
@@ -221,7 +221,7 @@ if generate is not None:
             self.assertIsNone(generate.api_re.match('/* Avoid unhelpful warnings from libvlc with our deprecated APIs */'))
 
         def test_api_re_match(self):
-            self.assertIsInstance(generate.api_re.match('LIBVLC_API void libvlc_clearerr (void);'), re.Match)
+            self.assertIsNotNone(generate.api_re.match('LIBVLC_API void libvlc_clearerr (void);'))
 
         def test_at_param_re(self):
             match = generate.at_param_re.match('@param p_mi media player')
@@ -251,6 +251,57 @@ if generate is not None:
             match = generate.forward_re.match('VLC_FORWARD_DECLARE_OBJECT(libvlc_media_list_t *) libvlc_media_subitems')
             self.assertEqual(match.groups(), ('libvlc_media_list_t *', ' libvlc_media_subitems'))
 
+    class TestPar(unittest.TestCase):
+        def test_invalid(self):
+            INVALID_TESTS = [
+                # function pointers
+                "int(*name)()",
+                "int *(*name)()",
+                "void *(*name)(const char * buffer)",
+                "void(*name)(const char *, int)",
+                "void(*)(const char *, int)",
+            ]
+
+            for test_instance in INVALID_TESTS:
+                self.assertIsNone(generate.Par.parse_param(test_instance))
+
+        def test_valid(self):
+            VALID_TESTS = [
+                # named param
+                ('int integer_value', ('int', 'integer_value', [False])),
+                ('float decimal_value', ('float', 'decimal_value', [False])),
+
+                # anonymous param
+                ('float', ('float', '', [False])),
+
+                # pointer
+                ('int *pointer_to_integer', ('int*', 'pointer_to_integer', [False, False])),
+                ('const unsigned char * pointer_to_character', ('unsigned char*', 'pointer_to_character', [True, False])),
+                ('const unsigned char * const pointer_to_character', ('unsigned char*', 'pointer_to_character', [True, True])),
+
+                # pointer-to-pointers
+                ('int * const * ptr_to_constptr_to_int',    ('int**', 'ptr_to_constptr_to_int', [False, True, False])),
+                ('int *const * ptr_to_constptr_to_int',     ('int**', 'ptr_to_constptr_to_int', [False, True, False])),
+                ('int * const* ptr_to_constptr_to_int',     ('int**', 'ptr_to_constptr_to_int', [False, True, False])),
+                ('int* const* ptr_to_constptr_to_int',      ('int**', 'ptr_to_constptr_to_int', [False, True, False])),
+
+                ('const int * const * ptr_to_constptr_to_constint', ('int**', 'ptr_to_constptr_to_constint', [True, True, False])),
+                ('const int *const * ptr_to_constptr_to_constint',  ('int**', 'ptr_to_constptr_to_constint', [True, True, False])),
+                ('const int * const* ptr_to_constptr_to_constint',  ('int**', 'ptr_to_constptr_to_constint', [True, True, False])),
+                ('const int* const* ptr_to_constptr_to_constint',   ('int**', 'ptr_to_constptr_to_constint', [True, True, False])),
+
+                ('const int * * ptr_to_ptr_to_constint',    ('int**', 'ptr_to_ptr_to_constint', [True, False, False])),
+                ('const int ** ptr_to_ptr_to_constint',     ('int**', 'ptr_to_ptr_to_constint', [True, False, False])),
+                ('const int * *ptr_to_ptr_to_constint',     ('int**', 'ptr_to_ptr_to_constint', [True, False, False])),
+                ('const int* *ptr_to_ptr_to_constint',      ('int**', 'ptr_to_ptr_to_constint', [True, False, False])),
+            ]
+
+            for parse_raw, (expected_type, expected_name, expected_constness) in VALID_TESTS:
+                param = generate.Par.parse_param(parse_raw)
+                self.assertEqual(expected_type, param.type)
+                self.assertEqual(expected_name, param.name)
+                self.assertListEqual(expected_constness, param.constness)
+
 
 if __name__ == '__main__':
     logging.basicConfig()



More information about the vlc-commits mailing list