1 ;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*-
2 ;;;; *************************************************************************
3 ;;;; FILE IDENTIFICATION
6 ;;;; Purpose: Tests of foreign variables
7 ;;;; Authors: Kevin M. Rosenberg and Edi Weitz
8 ;;;; Date Started: Aug 2003
12 ;;;; *************************************************************************
14 (in-package #:uffi-tests)
16 (def-foreign-var "uchar_13" :unsigned-byte "uffi_tests")
17 (def-foreign-var "schar_neg_120" :byte "uffi_tests")
18 (def-foreign-var "uword_257" :unsigned-short "uffi_tests")
19 (def-foreign-var "sword_neg_321" :short "uffi_tests")
20 (def-foreign-var "uint_1234567" :int "uffi_tests")
21 (def-foreign-var "sint_neg_123456" :int "uffi_tests")
22 (def-foreign-var "float_neg_4_5" :float "uffi_tests")
23 (def-foreign-var "double_3_1" :double "uffi_tests")
25 (deftest fvar.1 uchar-13 13)
26 (deftest fvar.2 schar-neg-120 -120)
27 (deftest fvar.3 uword-257 257)
28 (deftest fvar.4 sword-neg-321 -321)
29 (deftest fvar.5 uint-1234567 1234567)
30 (deftest fvar.6 sint-neg-123456 -123456)
31 (deftest fvar.7 float-neg-4-5 -4.5f0)
32 (deftest fvar.8 double-3-1 3.1d0)
35 (uffi:def-foreign-var ("fvar_addend" *fvar-addend*) :int "uffi_tests")
37 (uffi:def-struct fvar-struct
41 (uffi:def-foreign-var ("fvar_struct" *fvar-struct*) fvar-struct
44 (uffi:def-function ("fvar_struct_int" fvar-struct-int)
49 (uffi:def-function ("fvar_struct_double" fvar-struct-double)
54 (deftest fvarst.1 *fvar-addend* 3)
55 (deftest fvarst.2 (uffi:get-slot-value *fvar-struct* 'fvar-struct 'i) 42)
56 (deftest fvarst.3 (= (+ *fvar-addend*
57 (uffi:get-slot-value *fvar-struct* 'fvar-struct 'i))
60 (deftest fvarst.4 (uffi:get-slot-value *fvar-struct* 'fvar-struct 'd) 3.2d0)
61 (deftest fvarst.5 (= (uffi:get-slot-value *fvar-struct* 'fvar-struct 'd)
66 (let ((orig *fvar-addend*))
67 (incf *fvar-addend* 3)
70 (setf *fvar-addend* orig)))
74 (let ((orig *fvar-addend*))
75 (incf *fvar-addend* 3)
78 (setf *fvar-addend* orig)))
82 (let ((orig (uffi:get-slot-value *fvar-struct* 'fvar-struct 'i)))
83 (decf (uffi:get-slot-value *fvar-struct* 'fvar-struct 'i) 10)
86 (setf (uffi:get-slot-value *fvar-struct* 'fvar-struct 'i) orig)))