r10608: update license
[uffi.git] / tests / casts.lisp
1 ;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*-
2 ;;;; *************************************************************************
3 ;;;; FILE IDENTIFICAION
4 ;;;;
5 ;;;; Name:          casts.lisp
6 ;;;; Purpose:       Tests of with-cast-pointer
7 ;;;; Programmer:    Kevin M. Rosenberg / Edi Weitz
8 ;;;; Date Started:  Aug 2003
9 ;;;;
10 ;;;; $Id$
11 ;;;;
12 ;;;; This file, part of UFFI, is Copyright (c) 2003-2005 by Kevin M. Rosenberg
13 ;;;;
14 ;;;; *************************************************************************
15
16 (in-package #:uffi-tests)
17
18 (uffi:def-function ("cast_test_int" cast-test-int)
19     ()
20   :module "uffi_tests"
21   :returning :pointer-void)
22
23 (uffi:def-function ("cast_test_float" cast-test-float)
24     ()
25   :module "uffi_tests"
26   :returning :pointer-void)
27
28 (deftest :cast.1
29   (progn
30     (uffi:with-cast-pointer (temp (cast-test-int) :int)
31       (assert (= (uffi:deref-pointer temp :int) 23)))
32     (let ((result (cast-test-int)))
33       (uffi:with-cast-pointer (result2 result :int)
34         (assert (= (uffi:deref-pointer result2 :int) 23)))
35       (uffi:with-cast-pointer (temp result :int)
36         (assert (= (uffi:deref-pointer temp :int) 23))))
37     t)
38   t)
39
40 (deftest :cast.2
41     (progn
42       (uffi:with-cast-pointer (temp (cast-test-float) :double)
43         (assert (= (uffi:deref-pointer temp :double) 3.21d0)))
44       (let ((result (cast-test-float)))
45         (uffi:with-cast-pointer (result2 result :double)
46           (assert (= (uffi:deref-pointer result2 :double) 3.21d0)))
47         (uffi:with-cast-pointer (temp result :double)
48           (assert (= (uffi:deref-pointer temp :double) 3.21d0))))
49       t)
50   t)
51