tests/ffi/: Use bytevectors instead of strings.
authorMatt Birkholz <matt@birchwood-abbey.net>
Sat, 25 Feb 2017 02:45:46 +0000 (19:45 -0700)
committerMatt Birkholz <matt@birchwood-abbey.net>
Sat, 25 Feb 2017 02:45:46 +0000 (19:45 -0700)
tests/ffi/test-ffi-wrapper.scm

index 090cd201559297e99d3e699af3bf62a41d02a448..193ba762c9834218acf9195c7a124b5a07a7975f 100644 (file)
@@ -1,4 +1,4 @@
-;;;-*-Scheme-*-
+;;; -*-Scheme-*-
 
 (C-include "ffi-test")
 
 
 (define (test-ffi)
   (let* ((struct (malloc (c-sizeof "TestStruct") '|TestStruct|))
-        (string "input string")
+        (bytevector (string->utf8 "input string"))
         (pi (* 4 (atan 1 1)))
-        (chars (malloc (1+ (* (c-sizeof "char") (string-length string)))
+        (chars (malloc (1+ (* (c-sizeof "char")
+                              (bytevector-length bytevector)))
                        '(* char)))
         (callback-id (C-callback (lambda (d) (* d pi)))))
     (C->= struct "TestStruct first" (char->integer #\A))
     (C->= struct "TestStruct second" pi)
     (C->= struct "TestStruct third" (char->integer #\C))
-    (c-poke-string chars string)
+    (c-poke-string chars bytevector)
     (C->= struct "TestStruct fourth" chars)
     (C-call "test_register_double"
            (C-callback "test_double_callback")
     (let ((d (C-call "test_double" pi struct)))
       (assert-equal (* pi pi pi) d))
     (de-register-c-callback callback-id)
-    (assert-equal (number->string (* 2 (string-length string)))
+    (assert-equal (number->string (* 2 (bytevector-length bytevector)))
                  (let* ((alien (make-alien-to-free
                                 '(* char)
                                 (lambda (retval)
                                   (C-call "test_string" retval
-                                          string struct))))
+                                          bytevector struct))))
                         (new (c-peek-cstring alien)))
                    (free alien)
-                   new))
+                   (utf8->string new)))
     (let ((a (C-call "test_struct" struct struct)))
       (assert-equal a struct)
       (assert-equal (C-> a "TestStruct second")
-                   (+ pi (string-length string))))
+                   (+ pi (bytevector-length bytevector))))
     (let ((union (begin
                   (set-alien/ctype! struct '|TestUnion|)
                   struct)))