;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Mar 2002
;;;;
-;;;; $Id: union.cl,v 1.4 2002/04/02 21:29:45 kevin Exp $
+;;;; $Id: union.cl,v 1.5 2002/04/02 23:27:05 kevin Exp $
;;;;
;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
;;;;
(sf :float)
(df :double))
-(defun test-union-1 ()
+(defun run-union-1 ()
(let ((u (uffi:allocate-foreign-object 'tunion1)))
(setf (uffi:get-slot-value u 'tunion1 'uint)
(+ (char-code #\A)
(uffi:free-foreign-object u))
(values))
+(defun test-union-1 ()
+ (let ((u (uffi:allocate-foreign-object 'tunion1)))
+ (setf (uffi:get-slot-value u 'tunion1 'uint)
+ (+ (char-code #\A)
+ (* 256 (char-code #\B))
+ (* 65536 (char-code #\C))
+ (* 16777216 255)))
+ (util.test:test (uffi:ensure-char-character
+ (uffi:get-slot-value u 'tunion1 'char))
+ #\A
+ :test #'eql
+ :fail-info "Error with union character")
+
+ (util.test:test (> 0 (uffi:get-slot-value u 'tunion1 'int))
+ t
+ :fail-info
+ "Error with negative int in union")
+ (util.test:test (plusp (uffi:get-slot-value u 'tunion1 'uint))
+ t
+ :fail-info
+ "Error with unsigned int in union")
+ (uffi:free-foreign-object u))
+ (values))
+
#+examples-uffi
+(run-union-1)
+
+
+#+test-uffi
(test-union-1)