factor/extra/alien/marshall/syntax/syntax-tests.factor

49 lines
1.2 KiB
Factor
Raw Normal View History

2009-07-07 17:39:39 -04:00
! Copyright (C) 2009 Jeremy Hughes.
! See http://factorcode.org/license.txt for BSD license.
USING: alien.inline alien.marshall.syntax destructors
tools.test accessors kernel ;
2009-07-07 17:39:39 -04:00
IN: alien.marshall.syntax.tests
DELETE-C-LIBRARY: test
2009-07-07 17:39:39 -04:00
C-LIBRARY: test
CM-FUNCTION: void outarg1 ( int* a )
2009-07-07 17:39:39 -04:00
*a += 2;
;
CM-FUNCTION: unsigned-long* outarg2 ( unsigned-long a, unsigned-long* b )
2009-07-07 17:39:39 -04:00
unsigned long* x = (unsigned long*) malloc(sizeof(unsigned long));
*b = 10 + *b;
*x = a + *b;
return x;
;
CM-STRUCTURE: wedge
{ "double" "degrees" } ;
CM-STRUCTURE: sundial
{ "double" "radius" }
{ "wedge" "wedge" } ;
CM-FUNCTION: double hours ( sundial* d )
return d->wedge.degrees / 30;
;
CM-FUNCTION: void change_time ( double hours, sundial* d )
d->wedge.degrees = hours * 30;
;
2009-07-07 17:39:39 -04:00
;C-LIBRARY
{ 1 1 } [ outarg1 ] must-infer-as
[ 3 ] [ 1 outarg1 ] unit-test
2009-07-07 17:39:39 -04:00
{ 2 2 } [ outarg2 ] must-infer-as
[ 18 15 ] [ 3 5 outarg2 ] unit-test
{ 1 1 } [ hours ] must-infer-as
[ 5.0 ] [ <sundial> <wedge> 150 >>degrees >>wedge hours ] unit-test
{ 2 0 } [ change_time ] must-infer-as
[ 150.0 ] [ 5 <sundial> <wedge> 11 >>degrees >>wedge [ change_time ] keep wedge>> degrees>> ] unit-test