X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=examples%2Funion.cl;h=bd6e5b4fbab628f7244de67068df86c3568f654d;hb=acdc714a0b8ea9c0df0c9ffc56699fa010bd549e;hp=d0d32812ab4661592af50cd81ea940a4ce6d3361;hpb=f73eb94e15649aba5fcfbe3a900aa72f31f46a96;p=uffi.git diff --git a/examples/union.cl b/examples/union.cl index d0d3281..bd6e5b4 100644 --- a/examples/union.cl +++ b/examples/union.cl @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Mar 2002 ;;;; -;;;; $Id: union.cl,v 1.3 2002/03/23 16:32:39 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 ;;;; @@ -25,7 +25,7 @@ (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) @@ -42,5 +42,33 @@ (uffi:free-foreign-object u)) (values)) -#+uffi-test +(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)