X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=tests%2Fpointers.lisp;h=cebb359fd1fa677583858f528c72d5a1363c8c41;hb=09464c82191ef241c749756bbad5ffaadd8f6e5f;hp=6af7f79f3ca8ee721097bef04b78555bace7f332;hpb=ebedde4e67b858b1f65c5eb4dc7bc45978ed1e40;p=uffi.git diff --git a/tests/pointers.lisp b/tests/pointers.lisp index 6af7f79..cebb359 100644 --- a/tests/pointers.lisp +++ b/tests/pointers.lisp @@ -15,27 +15,56 @@ (in-package #:uffi-tests) -(deftest chptr.1 +(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 +(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 +(deftest :chptr.3 (let ((native-string "test string")) (uffi:with-foreign-string (fs native-string) - (numberp - (deref-pointer fs :byte)))) - t) + (ensure-char-integer + (deref-pointer fs :unsigned-char)))) + 116) +(deftest :chptr.4 + (let ((native-string "test string")) + (uffi:with-foreign-string (fs native-string) + (integerp + (ensure-char-integer + (deref-pointer fs :unsigned-char))))) + 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") + + +