You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
4.5 KiB
112 lines
4.5 KiB
from cffi.model import *
|
|
|
|
|
|
def test_void_type():
|
|
assert void_type.get_c_name() == "void"
|
|
assert void_type.get_c_name("foo") == "void foo"
|
|
assert void_type.get_c_name("*foo") == "void *foo"
|
|
|
|
def test_primitive_type():
|
|
int_type = PrimitiveType("int")
|
|
assert int_type.get_c_name() == "int"
|
|
assert int_type.get_c_name("foo") == "int foo"
|
|
assert int_type.get_c_name("*foo") == "int *foo"
|
|
assert int_type.get_c_name("[5]") == "int[5]"
|
|
|
|
def test_raw_function_type():
|
|
int_type = PrimitiveType("int")
|
|
fn_type = RawFunctionType([], int_type, False)
|
|
assert fn_type.get_c_name() == "int()(void)"
|
|
assert fn_type.get_c_name("*") == "int( *)(void)"
|
|
assert fn_type.get_c_name("*foo") == "int( *foo)(void)"
|
|
fn_type = RawFunctionType([int_type], int_type, False)
|
|
assert fn_type.get_c_name() == "int()(int)"
|
|
fn_type = RawFunctionType([int_type] * 2, int_type, False)
|
|
assert fn_type.get_c_name() == "int()(int, int)"
|
|
#
|
|
fn_type = RawFunctionType([int_type], int_type, True)
|
|
assert fn_type.get_c_name() == "int()(int, ...)"
|
|
assert fn_type.get_c_name("*foo") == "int( *foo)(int, ...)"
|
|
#
|
|
res_type = FunctionPtrType([int_type], int_type, True)
|
|
fn_type = RawFunctionType([int_type], res_type, True)
|
|
assert fn_type.get_c_name("x") == "int(*( x)(int, ...))(int, ...)"
|
|
|
|
def test_function_ptr_type():
|
|
int_type = PrimitiveType("int")
|
|
fn_type = FunctionPtrType([], int_type, False)
|
|
assert fn_type.get_c_name() == "int(*)(void)"
|
|
assert fn_type.get_c_name("*") == "int(* *)(void)"
|
|
assert fn_type.get_c_name("*foo") == "int(* *foo)(void)"
|
|
fn_type = FunctionPtrType([int_type], int_type, False)
|
|
assert fn_type.get_c_name() == "int(*)(int)"
|
|
fn_type = FunctionPtrType([int_type] * 2, int_type, False)
|
|
assert fn_type.get_c_name() == "int(*)(int, int)"
|
|
#
|
|
fn_type = FunctionPtrType([int_type], int_type, True)
|
|
assert fn_type.get_c_name() == "int(*)(int, ...)"
|
|
|
|
def test_pointer_type():
|
|
ptr_type = PointerType(PrimitiveType("int"))
|
|
assert ptr_type.get_c_name("x") == "int * x"
|
|
|
|
def test_const_pointer_type():
|
|
ptr_type = ConstPointerType(PrimitiveType("int"))
|
|
assert ptr_type.get_c_name("x") == "int const * x"
|
|
ptr_type = ConstPointerType(ArrayType(PrimitiveType("int"), 5))
|
|
assert ptr_type.get_c_name("") == "int(const *)[5]"
|
|
assert ptr_type.get_c_name("*x") == "int(const * *x)[5]"
|
|
|
|
def test_qual_pointer_type():
|
|
ptr_type = PointerType(PrimitiveType("long long"), Q_RESTRICT)
|
|
assert ptr_type.get_c_name("") == "long long __restrict *"
|
|
assert const_voidp_type.get_c_name("") == "void const *"
|
|
|
|
def test_unknown_pointer_type():
|
|
ptr_type = unknown_ptr_type("foo_p")
|
|
assert ptr_type.get_c_name("") == "foo_p"
|
|
assert ptr_type.get_c_name("x") == "foo_p x"
|
|
|
|
def test_unknown_type():
|
|
u_type = unknown_type("foo_t")
|
|
assert u_type.get_c_name("") == "foo_t"
|
|
assert u_type.get_c_name("x") == "foo_t x"
|
|
|
|
def test_array_type():
|
|
a_type = ArrayType(PrimitiveType("int"), None)
|
|
assert a_type.get_c_name("") == "int[]"
|
|
assert a_type.get_c_name("x") == "int x[]"
|
|
assert a_type.get_c_name("*x") == "int(*x)[]"
|
|
assert a_type.get_c_name(" *x") == "int(*x)[]"
|
|
assert a_type.get_c_name("[5]") == "int[5][]"
|
|
a_type = ArrayType(unknown_type("foo_t"), 5)
|
|
assert a_type.get_c_name("") == "foo_t[5]"
|
|
assert a_type.get_c_name("x") == "foo_t x[5]"
|
|
assert a_type.get_c_name("*x") == "foo_t(*x)[5]"
|
|
a_type = ArrayType(unknown_ptr_type("foo_p"), None)
|
|
assert a_type.get_c_name("") == "foo_p[]"
|
|
assert a_type.get_c_name("x") == "foo_p x[]"
|
|
assert a_type.get_c_name("*x") == "foo_p(*x)[]"
|
|
a_type = ArrayType(ConstPointerType(PrimitiveType("int")), None)
|
|
assert a_type.get_c_name("") == "int const *[]"
|
|
assert a_type.get_c_name("x") == "int const * x[]"
|
|
assert a_type.get_c_name("*x") == "int const *(*x)[]"
|
|
fn_type = FunctionPtrType([], PrimitiveType("int"), False)
|
|
a_type = ArrayType(fn_type, 5)
|
|
assert a_type.get_c_name("") == "int(*[5])(void)"
|
|
assert a_type.get_c_name("x") == "int(* x[5])(void)"
|
|
assert a_type.get_c_name("*x") == "int(*(*x)[5])(void)"
|
|
|
|
def test_struct_type():
|
|
struct_type = StructType("foo_s", None, None, None)
|
|
assert struct_type.get_c_name() == "struct foo_s"
|
|
assert struct_type.get_c_name("*x") == "struct foo_s *x"
|
|
|
|
def test_union_type():
|
|
union_type = UnionType("foo_s", None, None, None)
|
|
assert union_type.get_c_name() == "union foo_s"
|
|
|
|
def test_enum_type():
|
|
enum_type = EnumType("foo_e", [], [])
|
|
assert enum_type.get_c_name() == "enum foo_e"
|