]> granicus.if.org Git - clang/commitdiff
[clang.py] Add tests for Type.is_volatile_qualified and Type.is_restrict_qualified
authorGregory Szorc <gregory.szorc@gmail.com>
Mon, 20 Feb 2012 17:58:02 +0000 (17:58 +0000)
committerGregory Szorc <gregory.szorc@gmail.com>
Mon, 20 Feb 2012 17:58:02 +0000 (17:58 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150971 91177308-0d34-0410-b5e6-96231b3b80d8

bindings/python/tests/cindex/test_type.py

index 86b81422590c09926d2685f9fbe6abc2d73ff192..0ddfe4fb0a9d34d33f7be5e59f4581f5bd7f26ca 100644 (file)
@@ -1,3 +1,4 @@
+from clang.cindex import Cursor
 from clang.cindex import CursorKind
 from clang.cindex import Index
 from clang.cindex import TypeKind
@@ -30,11 +31,23 @@ def get_tu(source=kInput, lang='c'):
     assert tu is not None
     return tu
 
-def get_cursor(tu, spelling):
-    for cursor in tu.cursor.get_children():
+def get_cursor(source, spelling):
+    children = []
+    if isinstance(source, Cursor):
+        children = source.get_children()
+    else:
+        # Assume TU
+        children = source.cursor.get_children()
+
+    for cursor in children:
         if cursor.spelling == spelling:
             return cursor
 
+        # Recurse into children.
+        result = get_cursor(cursor, spelling)
+        if result is not None:
+            return result
+
     return None
 
 def test_a_struct():
@@ -249,3 +262,33 @@ def test_element_count():
         assert False
     except:
         assert True
+
+def test_is_volatile_qualified():
+    """Ensure Type.is_volatile_qualified works."""
+
+    tu = get_tu('volatile int i = 4; int j = 2;')
+
+    i = get_cursor(tu, 'i')
+    j = get_cursor(tu, 'j')
+
+    assert i is not None
+    assert j is not None
+
+    assert isinstance(i.type.is_volatile_qualified(), bool)
+    assert i.type.is_volatile_qualified()
+    assert not j.type.is_volatile_qualified()
+
+def test_is_restrict_qualified():
+    """Ensure Type.is_restrict_qualified works."""
+
+    tu = get_tu('struct s { void * restrict i; void * j };')
+
+    i = get_cursor(tu, 'i')
+    j = get_cursor(tu, 'j')
+
+    assert i is not None
+    assert j is not None
+
+    assert isinstance(i.type.is_restrict_qualified(), bool)
+    assert i.type.is_restrict_qualified()
+    assert not j.type.is_restrict_qualified()