1 USING: alien alien.syntax alien.c-types alien.parser
2 eval kernel tools.test sequences system libc alien.strings
3 io.encodings.ascii io.encodings.utf8 math.constants classes.struct classes
4 accessors compiler.units ;
5 IN: alien.c-types.tests
9 [ 492 ] [ { int xyz } heap-size ] unit-test
11 [ -1 ] [ -1 <char> *char ] unit-test
12 [ -1 ] [ -1 <short> *short ] unit-test
13 [ -1 ] [ -1 <int> *int ] unit-test
19 [ t ] [ pointer: void c-type void* c-type = ] unit-test
20 [ t ] [ pointer: int c-type void* c-type = ] unit-test
21 [ t ] [ pointer: int* c-type void* c-type = ] unit-test
22 [ f ] [ pointer: foo c-type void* c-type = ] unit-test
23 [ t ] [ pointer: foo* c-type void* c-type = ] unit-test
25 [ t ] [ pointer: char c-type char* c-type = ] unit-test
27 [ t ] [ pointer: foo c-type-boxer-quot foo c-type-boxer-quot = ] unit-test
29 [ t ] [ foo heap-size int heap-size = ] unit-test
33 [ t ] [ int c-type MyInt c-type = ] unit-test
34 [ t ] [ void* c-type pointer: MyInt c-type = ] unit-test
36 [ 32 ] [ { int 8 } heap-size ] unit-test
40 [ t ] [ pointer: char c-type pointer: MyChar c-type = ] unit-test
41 [ t ] [ char* c-type pointer: MyChar c-type = ] unit-test
43 TYPEDEF: char MyFunkyChar
44 { char* ascii } pointer: MyFunkyChar typedef
46 [ f ] [ pointer: char c-type pointer: MyFunkyChar c-type = ] unit-test
47 [ { char* ascii } ] [ pointer: MyFunkyChar c-type ] unit-test
49 TYPEDEF: char* MyString
51 [ t ] [ char* c-type MyString c-type = ] unit-test
52 [ t ] [ void* c-type pointer: MyString c-type = ] unit-test
54 TYPEDEF: int* MyIntArray
56 [ t ] [ void* c-type MyIntArray c-type = ] unit-test
58 TYPEDEF: char* MyLPBYTE
60 [ t ] [ { char* utf8 } c-type MyLPBYTE c-type = ] unit-test
63 0 B{ 1 2 3 4 } <displaced-alien> <void*>
66 os windows? cpu x86.64? and [
67 [ -2147467259 ] [ 2147500037 <long> *long ] unit-test
70 [ 0 ] [ -10 uchar c-type-clamp ] unit-test
71 [ 12 ] [ 12 uchar c-type-clamp ] unit-test
72 [ -10 ] [ -10 char c-type-clamp ] unit-test
73 [ 127 ] [ 230 char c-type-clamp ] unit-test
74 [ t ] [ pi dup float c-type-clamp = ] unit-test
78 [ t ] [ void* c-type pointer: opaque c-type = ] unit-test
79 [ opaque c-type ] [ no-c-type? ] must-fail-with
83 IN: alien.c-types.tests
84 FUNCTION: opaque return_opaque ( ) ;
85 """ eval( -- ) ] [ no-c-type? ] must-fail-with
88 STRUCT: backward { x forward* } ;
89 STRUCT: forward { x backward* } ;
91 [ t ] [ forward c-type struct-c-type? ] unit-test
92 [ t ] [ backward c-type struct-c-type? ] unit-test
94 DEFER: struct-redefined
100 USING: alien.c-types classes.struct ;
101 IN: alien.c-types.tests
103 STRUCT: struct-redefined { x int } ;
107 USING: alien.syntax ;
108 IN: alien.c-types.tests
110 C-TYPE: struct-redefined
113 \ struct-redefined class?
117 "IN: alien.c-types.tests
120 TYPEDEF: int type-redefinition-test
121 TYPEDEF: int type-redefinition-test" eval( -- )
123 [ error>> error>> redefine-error? ]