| 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" |