summaryrefslogtreecommitdiff
path: root/tests/scanner/test_transformer.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/scanner/test_transformer.py')
-rw-r--r--tests/scanner/test_transformer.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/scanner/test_transformer.py b/tests/scanner/test_transformer.py
index 3feed441..1b7aef3c 100644
--- a/tests/scanner/test_transformer.py
+++ b/tests/scanner/test_transformer.py
@@ -97,6 +97,8 @@ class TestStructTypedefs(unittest.TestCase):
node = self.namespace.get('Struct')
self.assertTrue(node is not None)
self.assertTrue(isinstance(node, ast.Record))
+ self.assertFalse(node.opaque)
+ self.assertFalse(node.pointer)
self.assertFalse(node.disguised)
self.assertEqual(len(node.fields), 1)
@@ -111,6 +113,8 @@ class TestStructTypedefs(unittest.TestCase):
node = self.namespace.get('Struct')
self.assertTrue(node is not None)
self.assertTrue(isinstance(node, ast.Record))
+ self.assertFalse(node.opaque)
+ self.assertFalse(node.pointer)
self.assertFalse(node.disguised)
self.assertEqual(len(node.fields), 1)
@@ -125,6 +129,8 @@ class TestStructTypedefs(unittest.TestCase):
node = self.namespace.get('Struct')
self.assertTrue(node is not None)
self.assertTrue(isinstance(node, ast.Record))
+ self.assertFalse(node.opaque)
+ self.assertFalse(node.pointer)
self.assertFalse(node.disguised)
self.assertEqual(len(node.fields), 1)
@@ -138,6 +144,8 @@ class TestStructTypedefs(unittest.TestCase):
node = self.namespace.get('Struct')
self.assertTrue(node is not None)
self.assertTrue(isinstance(node, ast.Record))
+ self.assertFalse(node.opaque)
+ self.assertFalse(node.pointer)
self.assertFalse(node.disguised)
self.assertEqual(len(node.fields), 1)
@@ -151,6 +159,8 @@ class TestStructTypedefs(unittest.TestCase):
node = self.namespace.get('Struct')
self.assertTrue(node is not None)
self.assertTrue(isinstance(node, ast.Record))
+ self.assertFalse(node.opaque)
+ self.assertFalse(node.pointer)
self.assertFalse(node.disguised)
self.assertEqual(len(node.fields), 1)
@@ -167,6 +177,8 @@ class TestStructTypedefs(unittest.TestCase):
node = self.namespace.get('Struct')
self.assertTrue(node is not None)
self.assertTrue(isinstance(node, ast.Record))
+ self.assertFalse(node.opaque)
+ self.assertFalse(node.pointer)
self.assertFalse(node.disguised)
self.assertEqual(len(node.fields), 1)
@@ -194,6 +206,8 @@ class TestStructTypedefs(unittest.TestCase):
node = self.namespace.get('Struct')
self.assertTrue(node is not None)
self.assertTrue(isinstance(node, ast.Record))
+ self.assertFalse(node.opaque)
+ self.assertFalse(node.pointer)
self.assertFalse(node.disguised)
self.assertEqual(len(node.fields), 1)
self.assertEqual(node.ctype, 'TestStruct')
@@ -201,6 +215,8 @@ class TestStructTypedefs(unittest.TestCase):
shared = self.namespace.get('StructAlias')
self.assertTrue(shared is not None)
self.assertTrue(isinstance(shared, ast.Record))
+ self.assertFalse(shared.opaque)
+ self.assertFalse(shared.pointer)
self.assertFalse(shared.disguised)
self.assertEqual(len(shared.fields), 1)
self.assertEqual(shared.ctype, 'TestStructAlias')
@@ -218,6 +234,8 @@ class TestStructTypedefs(unittest.TestCase):
node = self.namespace.get('Struct')
self.assertTrue(node is not None)
self.assertTrue(isinstance(node, ast.Record))
+ self.assertFalse(node.opaque)
+ self.assertFalse(node.pointer)
self.assertFalse(node.disguised)
self.assertEqual(len(node.fields), 1)
self.assertEqual(node.ctype, 'TestStruct')
@@ -225,6 +243,8 @@ class TestStructTypedefs(unittest.TestCase):
shared = self.namespace.get('StructAlias')
self.assertTrue(shared is not None)
self.assertTrue(isinstance(shared, ast.Record))
+ self.assertFalse(shared.opaque)
+ self.assertFalse(shared.pointer)
self.assertFalse(shared.disguised)
self.assertEqual(len(shared.fields), 1)
self.assertEqual(shared.ctype, 'TestStructAlias')
@@ -262,6 +282,8 @@ class TestStructTypedefs(unittest.TestCase):
node = self.namespace.get('Struct')
self.assertTrue(node is not None)
self.assertTrue(isinstance(node, ast.Record))
+ self.assertFalse(node.opaque)
+ self.assertFalse(node.pointer)
self.assertFalse(node.disguised)
self.assertEqual(node.ctype, 'TestStruct')
self.assertEqual(len(node.fields), 1)
@@ -270,10 +292,27 @@ class TestStructTypedefs(unittest.TestCase):
self.assertTrue(ptr is not None)
# This currently gives a disguised Record instead of an Alias
self.assertTrue(isinstance(ptr, ast.Record))
+ self.assertFalse(ptr.opaque)
+ self.assertTrue(ptr.pointer)
self.assertTrue(ptr.disguised)
self.assertEqual(len(ptr.fields), 0)
self.assertEqual(ptr.ctype, 'TestStructPtr')
+ def test_opaque_struct(self):
+ load_namespace_from_source_string(self.namespace, """
+ typedef struct _TestStruct TestStruct;
+ """)
+ self.assertEqual(len(self.namespace.names), 1)
+
+ node = self.namespace.get('Struct')
+ self.assertIsNotNone(node)
+ self.assertIsInstance(node, ast.Record)
+ self.assertTrue(node.opaque)
+ self.assertFalse(node.pointer)
+ self.assertTrue(node.disguised)
+ self.assertEqual(node.ctype, 'TestStruct')
+ self.assertFalse(node.fields)
+
class TestNestedStructs(unittest.TestCase):
def setUp(self):