[clang.py] Add tests for Type.is_volatile_qualified and Type.is_restrict_qualified

llvm-svn: 150971
This commit is contained in:
Gregory Szorc 2012-02-20 17:58:02 +00:00
parent 495c7dae5d
commit a5a89b9564
1 changed files with 45 additions and 2 deletions

View 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()