X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=tests%2Funion.cl;h=fc14c4a7c251d67b01fff40cb0852a73d269d7e1;hb=bcd9fb3deb580f2976e7505a7433795ed6ad1bb3;hp=b876699b6f1fd7ae5fc312e47a16c049f9351c25;hpb=1796f8c038481234982c983cb0ee611c3ffac4c6;p=uffi.git diff --git a/tests/union.cl b/tests/union.cl index b876699..fc14c4a 100644 --- a/tests/union.cl +++ b/tests/union.cl @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Mar 2002 ;;;; -;;;; $Id: union.cl,v 1.2 2002/03/21 08:30:10 kevin Exp $ +;;;; $Id: union.cl,v 1.10 2002/09/29 17:31:20 kevin Exp $ ;;;; ;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg ;;;; @@ -25,22 +25,65 @@ (sf :float) (df :double)) -(defun test-union-1 () - (let ((u (uffi:allocate-foreign-object tunion1))) - (setf (uffi:get-slot-value u 'tunion1 'uint) - (+ (char-code #\A) +(defun run-union-1 () + (let ((u (uffi:allocate-foreign-object 'tunion1))) + (setf (uffi:get-slot-value u 'tunion1 'uint) + ;; little endian + #-(or sparc sparc-v9 powerpc ppc) + (+ (* 1 (char-code #\A)) (* 256 (char-code #\B)) (* 65536 (char-code #\C)) - (* 16777216 255))) - (format t "~&Should be #\A: ~S" + (* 16777216 128)) + ;; big endian + #+(or sparc sparc-v9 powerpc ppc) + (+ (* 16777216 (char-code #\A)) + (* 65536 (char-code #\B)) + (* 256 (char-code #\C)) + (* 1 128))) + (format *standard-output* "~&Should be #\A: ~S" (uffi:ensure-char-character (uffi:get-slot-value u 'tunion1 'char))) - (format t "~&Should be negative number: ~D" + (format *standard-output* "~&Should be negative number: ~D" (uffi:get-slot-value u 'tunion1 'int)) - (format t "~&Should be positive number: ~D" + (format *standard-output* "~&Should be positive number: ~D" (uffi:get-slot-value u 'tunion1 'uint)) (uffi:free-foreign-object u)) (values)) -#+uffi-test +#+test-uffi +(defun test-union-1 () + (let ((u (uffi:allocate-foreign-object 'tunion1))) + (setf (uffi:get-slot-value u 'tunion1 'uint) + #-(or sparc sparc-v9 powerpc ppc) + (+ (* 1 (char-code #\A)) + (* 256 (char-code #\B)) + (* 65536 (char-code #\C)) + (* 16777216 128)) + #+(or sparc sparc-v9 powerpc ppc) + (+ (* 16777216 (char-code #\A)) + (* 65536 (char-code #\B)) + (* 256 (char-code #\C)) + (* 1 128))) ;set signed bit + (util.test:test (uffi:ensure-char-character + (uffi:get-slot-value u 'tunion1 'char)) + #\A + :test #'eql + :fail-info "Error with union character") + #-(or sparc sparc-v9 mcl) + (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)