r10396: 2005-04-12 Kevin Rosenberg (kevin@rosenberg.net)
[uffi.git] / tests / pointers.lisp
index 6af7f79f3ca8ee721097bef04b78555bace7f332..716844893801679bbd6b03d59db6dda65209b99e 100644 (file)
 (deftest chptr.1
     (let ((native-string "test string"))
       (uffi:with-foreign-string (fs native-string)
-       (characterp
-        (ensure-char-character
-         (deref-pointer fs :char)))))
-  t)
+       (ensure-char-character
+        (deref-pointer fs :char))))
+  #\t)
 
 (deftest chptr.2
     (let ((native-string "test string"))
       (uffi:with-foreign-string (fs native-string)
-       (characterp
-        (ensure-char-character
-         (deref-pointer fs :unsigned-char)))))
-  t)
+       (ensure-char-character
+        (deref-pointer fs :unsigned-char))))
+  #\t)
 
 (deftest chptr.3
+    (let ((native-string "test string"))
+      (uffi:with-foreign-string (fs native-string)
+       (ensure-char-integer
+        (deref-pointer fs :unsigned-char))))
+  116)
+
+(deftest chptr.4
     (let ((native-string "test string"))
       (uffi:with-foreign-string (fs native-string)
        (numberp
         (deref-pointer fs :byte))))
   t)
-
        
+(deftest chptr.5
+    (let ((fs (uffi:allocate-foreign-object :unsigned-char 128)))
+      (setf (uffi:deref-array fs '(:array :unsigned-char) 0)
+           (uffi:ensure-char-storable #\a))
+      (setf (uffi:deref-array fs '(:array :unsigned-char) 1)
+           (uffi:ensure-char-storable (code-char 0)))
+      (uffi:convert-from-foreign-string fs))
+  "a")
+
+;; This produces an array which needs fli:foreign-aref to access
+;; rather than fli:dereference
+
+#-lispworks
+(deftest chptr.6
+    (uffi:with-foreign-object (fs '(:array :unsigned-char 128))
+      (setf (uffi:deref-array fs '(:array :unsigned-char) 0)
+           (uffi:ensure-char-storable #\a))
+      (setf (uffi:deref-array fs '(:array :unsigned-char) 1)
+           (uffi:ensure-char-storable (code-char 0)))
+      (uffi:convert-from-foreign-string fs))
+  "a")
+
+      
+