summaryrefslogtreecommitdiff
path: root/tests/test_c_generator.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_c_generator.py')
-rw-r--r--tests/test_c_generator.py26
1 files changed, 25 insertions, 1 deletions
diff --git a/tests/test_c_generator.py b/tests/test_c_generator.py
index 7210294..d024616 100644
--- a/tests/test_c_generator.py
+++ b/tests/test_c_generator.py
@@ -4,7 +4,7 @@ import unittest
# Run from the root dir
sys.path.insert(0, '.')
-from pycparser import c_parser, c_generator
+from pycparser import c_parser, c_generator, c_ast
_c_parser = c_parser.CParser(
lex_optimize=False,
@@ -35,6 +35,30 @@ def parse_to_ast(src):
return _c_parser.parse(src)
+class FuncDeclVisitor(c_ast.NodeVisitor):
+ def __init__(self):
+ self.stubs = []
+
+ def visit_FuncDecl(self, node):
+ gen = c_generator.CGenerator()
+ self.stubs.append(gen.visit(node))
+
+
+class TestFunctionDeclGeneration(unittest.TestCase):
+ def test_partial_funcdecl_generation(self):
+ src = r'''
+ void noop(void);
+ void *something(void *thing);
+ int add(int x, int y);'''
+ ast = parse_to_ast(src)
+ v = FuncDeclVisitor()
+ v.visit(ast)
+ self.assertEqual(len(v.stubs), 3)
+ self.assertTrue(r'void noop(void)' in v.stubs)
+ self.assertTrue(r'void *something(void *thing)' in v.stubs)
+ self.assertTrue(r'int add(int x, int y)' in v.stubs)
+
+
class TestCtoC(unittest.TestCase):
def _run_c_to_c(self, src):
ast = parse_to_ast(src)