diff options
author | Ken Raeburn <raeburn@raeburn.org> | 2012-05-20 18:34:56 -0400 |
---|---|---|
committer | Ken Raeburn <raeburn@raeburn.org> | 2012-05-21 01:14:44 -0400 |
commit | 8e7cacf139134fdf1f8579384e83b2973992d7d8 (patch) | |
tree | 5f084b3077abc43af7678609c49aeae004a65427 | |
parent | 499f3de0d746191d92432ab90b585bad5ef1f3cc (diff) | |
download | guile-wip-raeburn-misc.tar.gz |
Test signed narrow arguments in FFI better.wip-raeburn-misc
* test-suite/standalone/test-ffi-lib.c (test_ffi_s16_s8): New function.
* test-suite/standalone/test-ffi: Test it. Also test test_ffi_sum with
both positive and negative values for the narrower-than-64-bit
arguments.
-rwxr-xr-x | test-suite/standalone/test-ffi | 12 | ||||
-rw-r--r-- | test-suite/standalone/test-ffi-lib.c | 6 |
2 files changed, 16 insertions, 2 deletions
diff --git a/test-suite/standalone/test-ffi b/test-suite/standalone/test-ffi index ad686603e..4dabd29f5 100755 --- a/test-suite/standalone/test-ffi +++ b/test-suite/standalone/test-ffi @@ -99,6 +99,10 @@ exec guile -q -s "$0" "$@" (pointer->procedure int16 (dynamic-func "test_ffi_s16_u8" lib) (list uint8))) (test (f-s16-u8 10) -19990) +(define f-s16-s8 + (pointer->procedure int16 (dynamic-func "test_ffi_s16_s8" lib) (list int8))) +(test (f-s16-s8 -10) -20010) + (define f-u16-u8 (pointer->procedure uint16 (dynamic-func "test_ffi_u16_u8" lib) (list uint8))) (test (f-u16-u8 10) 40010) @@ -166,8 +170,12 @@ exec guile -q -s "$0" "$@" (define f-sum (pointer->procedure int64 (dynamic-func "test_ffi_sum" lib) (list int8 int16 int32 int64))) -(test (f-sum -1 2000 -30000 40000000000) - (+ -1 2000 -30000 40000000000)) +; test sign-extension of narrow arguments +(test (f-sum -1 -2000 -30000 40000000000) + (+ -1 -2000 -30000 40000000000)) +; test zero-extension of narrow arguments +(test (f-sum 1 2000 30000 40000000000) + (+ 1 2000 30000 40000000000)) ;; ;; Structs diff --git a/test-suite/standalone/test-ffi-lib.c b/test-suite/standalone/test-ffi-lib.c index 37d6e43cc..50a200886 100644 --- a/test-suite/standalone/test-ffi-lib.c +++ b/test-suite/standalone/test-ffi-lib.c @@ -87,6 +87,12 @@ scm_t_int16 test_ffi_s16_u8 (scm_t_uint8 a) return -20000 + a; } +scm_t_int16 test_ffi_s16_s8 (scm_t_int8 a); +scm_t_int16 test_ffi_s16_s8 (scm_t_int8 a) +{ + return -20000 + a; +} + scm_t_int16 test_ffi_s16_s64 (scm_t_int64 a); scm_t_int16 test_ffi_s16_s64 (scm_t_int64 a) { |