X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=tests%2Fforeign-var.lisp;fp=tests%2Fforeign-var.lisp;h=52bceb159221330f1d5e03eaaaf1f8cb7133da4e;hb=a27a393f26a7a423d758e902dbff07c81ccead91;hp=e0c323532f96b9f0b970a4ef4d44afb1e2994156;hpb=7612015bdcfa851374a4e8c6f3ff68a8dd8b9a9a;p=uffi.git diff --git a/tests/foreign-var.lisp b/tests/foreign-var.lisp index e0c3235..52bceb1 100644 --- a/tests/foreign-var.lisp +++ b/tests/foreign-var.lisp @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Aug 2003 ;;;; -;;;; $Id: foreign-var.lisp,v 1.2 2003/08/14 21:58:44 kevin Exp $ +;;;; $Id: foreign-var.lisp,v 1.3 2003/08/15 02:34:34 kevin Exp $ ;;;; ;;;; ************************************************************************* @@ -32,3 +32,51 @@ (deftest fvar.8 double-3-1 3.1d0) +(uffi:def-foreign-var ("fvar_addend" *fvar-addend*) :int "uffi_tests") + +(uffi:def-struct fvar-struct + (i :int) + (d :double)) + +(uffi:def-foreign-var ("fvar_struct" *fvar-struct*) fvar-struct + "uffi_tests") + +(uffi:def-function ("fvar_struct_int" fvar-struct-int) + () + :returning :int + :module "uffi_tests") + + (uffi:def-function ("fvar_struct_double" fvar-struct-double) + () + :returning :double + :module "uffi_tests") + +(deftest fvarst.1 *fvar-addend* 3) +(deftest fvarst.2 (uffi:get-slot-value *fvar-struct* 'fvar-struct 'i) 42) +(deftest fvarst.3 (= (+ *fvar-addend* + (uffi:get-slot-value *fvar-struct* 'fvar-struct 'i)) + (fvar-struct-int)) + t) +(deftest fvarst.4 (uffi:get-slot-value *fvar-struct* 'fvar-struct 'd) 3.2d0) +(deftest fvarst.5 (= (uffi:get-slot-value *fvar-struct* 'fvar-struct 'd) + (fvar-struct-double)) + t) + +(deftest fvarst.6 + (let ((orig *fvar-addend*)) + (incf *fvar-addend* 3) + (prog1 + *fvar-addend* + (setf *fvar-addend* orig))) + 6) + +(deftest fvarst.7 + (let ((orig *fvar-addend*)) + (incf *fvar-addend* 3) + (prog1 + (fvar-struct-int) + (setf *fvar-addend* orig))) + 48) + +;;(decf (uffi:get-slot-value *fvar-struct* 'fvar-struct 'i) 10) +;;(deftest fvarst.8 (fvar-struct-int) 38)