[Git][cmucl/cmucl][issue-242-c-call-char-result-wrong] 2 commits: Add tests for unsigned return types
Raymond Toy (@rtoy)
gitlab at common-lisp.net
Fri Jun 16 13:36:39 UTC 2023
Raymond Toy pushed to branch issue-242-c-call-char-result-wrong at cmucl / cmucl
Commits:
d7f0d936 by Raymond Toy at 2023-06-16T06:29:46-07:00
Add tests for unsigned return types
- - - - -
10a18a52 by Raymond Toy at 2023-06-16T06:35:11-07:00
Add comment on what :naturalize-gen method does
Since I can never remember, add a comment for what the
`:naturalize-gen` alien method is for.
- - - - -
2 changed files:
- src/code/alieneval.lisp
- tests/issues.lisp
Changes:
=====================================
src/code/alieneval.lisp
=====================================
@@ -170,7 +170,10 @@
(alien-rep nil :type (or null function))
(extract-gen nil :type (or null function))
(deposit-gen nil :type (or null function))
- (naturalize-gen nil :type (or null function))
+ ;;
+ ;; Method that accepts the alien type and the alien value. The
+ ;; method converts the alien value into an appropriate lisp value.
+ (naturalize-gen nil :type (or null function)
(deport-gen nil :type (or null function))
;; Cast?
(arg-tn nil :type (or null function))
=====================================
tests/issues.lisp
=====================================
@@ -1036,3 +1036,39 @@
n)))
(dolist (x '(1023 -1023 #x7fffffff #x-80000000))
(assert-equal x (fun x)))))
+
+(define-test issue.242.test-alien-return-unsigned-char
+ (:tag :issues)
+ (flet ((fun (n)
+ (alien:alien-funcall
+ (alien:extern-alien "int_to_unsigned_char"
+ (function c-call:unsigned-char c-call:int))
+ n))
+ (expected (n)
+ (ldb (byte 8 0) n)))
+ (dolist (x '(99 -99 1023 -1023))
+ (assert-equal (expected x) (fun x)))))
+
+(define-test issue.242.test-alien-return-unsigned-short
+ (:tag :issues)
+ (flet ((fun (n)
+ (alien:alien-funcall
+ (alien:extern-alien "int_to_unsigned_short"
+ (function c-call:unsigned-short c-call:int))
+ n))
+ (expected (n)
+ (ldb (byte 16 0) n)))
+ (dolist (x '(1023 -1023 100000 -100000))
+ (assert-equal (expected x) (fun x)))))
+
+(define-test issue.242.test-alien-return-unsigned-int
+ (:tag :issues)
+ (flet ((fun (n)
+ (alien:alien-funcall
+ (alien:extern-alien "int_to_unsigned_int"
+ (function c-call:unsigned-int c-call:int))
+ n))
+ (expected (n)
+ (ldb (byte 32 0) n)))
+ (dolist (x '(1023 -1023 #x7fffffff #x-80000000))
+ (assert-equal (expected x) (fun x)))))
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/2cc3c60e2692a1709fcf4852f7fdc413b4accf81...10a18a52c01b8a5e03ebe3587e97664b0b2ffe7f
--
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/compare/2cc3c60e2692a1709fcf4852f7fdc413b4accf81...10a18a52c01b8a5e03ebe3587e97664b0b2ffe7f
You're receiving this email because of your account on gitlab.common-lisp.net.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/cmucl-cvs/attachments/20230616/4e395b38/attachment-0001.html>
More information about the cmucl-cvs
mailing list