Update AllegroCL for :long-long on 64-bit platforms
[uffi.git] / tests / union.lisp
index 4268b91cdceff3da15ce0be14c80b15eeb654ce7..f1f6b781e854af90fbc1178cbfe75d7d425164c8 100644 (file)
@@ -7,15 +7,13 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Mar 2002
 ;;;;
-;;;; $Id$
-;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002-2003 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2010 by Kevin M. Rosenberg
 ;;;;
 ;;;; *************************************************************************
 
 (in-package #:uffi-tests)
 
-(uffi:def-union tunion1 
+(uffi:def-union tunion1
     (char :char)
   (int :int)
   (uint :unsigned-int)
 (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))
+         (* 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)))
+         (* 65536 (char-code #\B))
+         (* 256 (char-code #\C))
+         (* 1 128)))
+
+(deftest :union.1
+    (uffi:ensure-char-character
+     (uffi:get-slot-value *u* 'tunion1 'char))
+  #\A)
+
+(deftest :union.2
+    (uffi:ensure-char-integer
+     (uffi:get-slot-value *u* 'tunion1 'char))
+  65)
+
+#-(or sparc sparc-v9 openmcl digitool)
+(deftest :union.3 (plusp (uffi:get-slot-value *u* 'tunion1 'uint)) t)
+
+
+#-openmcl
+(uffi:def-union foo-u
+    (bar :pointer-self))
+
+#-openmcl
+(uffi:def-foreign-type foo-u-ptr (* foo-u))
+
+;; tests that compilation worked
+#-openmcl
+(deftest :unions.4
+  (with-foreign-object (p 'foo-u)
+    t)
+  t)
 
-(deftest union.1 (uffi:ensure-char-character 
-                 (uffi:get-slot-value *u* 'tunion1 'char)) #\A)
+#-openmcl
+(deftest :unions.5
+    (progn
+      (uffi:def-foreign-type foo-union (:union foo-u))
+      t)
+  t)
 
-#-(or sparc sparc-v9 mcl)
-(deftest union.2 (plusp (uffi:get-slot-value *u* 'tunion1 'uint)) t)
 
 
-;;    (uffi:free-foreign-object u))