factor/core/alien/structs/structs-tests.factor

45 lines
974 B
Factor
Raw Normal View History

2008-03-01 17:00:45 -05:00
IN: alien.structs.tests
2007-09-20 18:09:08 -04:00
USING: alien alien.syntax alien.c-types kernel tools.test
sequences system libc words vocabs namespaces ;
C-STRUCT: bar
{ "int" "x" }
{ { "int" 8 } "y" } ;
[ 36 ] [ "bar" heap-size ] unit-test
[ t ] [ \ <displaced-alien> "bar" c-type c-type-getter memq? ] unit-test
2008-02-14 21:27:48 -05:00
! This was actually only correct on Windows/x86:
! C-STRUCT: align-test
! { "int" "x" }
! { "double" "y" } ;
!
! [ 16 ] [ "align-test" heap-size ] unit-test
!
! cell 4 = [
! C-STRUCT: one
! { "long" "a" } { "double" "b" } { "int" "c" } ;
!
! [ 24 ] [ "one" heap-size ] unit-test
! ] when
2007-09-20 18:09:08 -04:00
: MAX_FOOS 30 ;
C-STRUCT: foox
{ { "int" MAX_FOOS } "x" } ;
[ 120 ] [ "foox" heap-size ] unit-test
C-UNION: barx
{ "int" MAX_FOOS }
"float" ;
[ 120 ] [ "barx" heap-size ] unit-test
"help" vocab [
"help" "help" lookup "help" set
[ ] [ \ foox-x "help" get execute ] unit-test
[ ] [ \ set-foox-x "help" get execute ] unit-test
] when