summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAmir Gonnen <amirgonnen@gmail.com>2019-03-28 00:22:44 +0200
committerEli Bendersky <eliben@users.noreply.github.com>2019-03-27 15:22:44 -0700
commite1a1d737be66308b633215fa26ac5ed30e890103 (patch)
tree05c2766212f9e5f14fa8b78743a4a8f2577b6508 /tests
parent96059858252ea3673226a9a4d03a356bd51ba47e (diff)
downloadpycparser-e1a1d737be66308b633215fa26ac5ed30e890103.tar.gz
Generate pointer types correctly (#315)
* Add visit_PtrDecl to generate ptr types correctly Also removed code duplication from visit_ArrayDecl and visit_TypeDecl by calling _generate_type instead, without emitting the declname. Added tests for ptr type generation * Truncate lines longer than 80 characters per https://github.com/eliben/pycparser/pull/315/files#r269553083
Diffstat (limited to 'tests')
-rw-r--r--tests/test_c_generator.py18
1 files changed, 16 insertions, 2 deletions
diff --git a/tests/test_c_generator.py b/tests/test_c_generator.py
index e2f7bee..b48094e 100644
--- a/tests/test_c_generator.py
+++ b/tests/test_c_generator.py
@@ -336,8 +336,22 @@ class TestCtoC(unittest.TestCase):
self._assert_ctoc_correct('int g(const int a[const 20]){}')
ast = parse_to_ast('const int a[const 20];')
generator = c_generator.CGenerator()
- self.assertEqual(generator.visit(ast.ext[0].type), 'const int[const 20]')
- self.assertEqual(generator.visit(ast.ext[0].type.type), 'const int')
+ self.assertEqual(generator.visit(ast.ext[0].type),
+ 'const int [const 20]')
+ self.assertEqual(generator.visit(ast.ext[0].type.type),
+ 'const int')
+
+ def test_ptr_decl(self):
+ src = 'const int ** const x;'
+ self._assert_ctoc_correct(src)
+ ast = parse_to_ast(src)
+ generator = c_generator.CGenerator()
+ self.assertEqual(generator.visit(ast.ext[0].type),
+ 'const int ** const')
+ self.assertEqual(generator.visit(ast.ext[0].type.type),
+ 'const int *')
+ self.assertEqual(generator.visit(ast.ext[0].type.type.type),
+ 'const int')
if __name__ == "__main__":
unittest.main()