un-inception/test/qr.scm
russell@unturf.com d7388d43ba feat: add QR code functional tests across 41 languages
Native QR generation for each language's ecosystem:
- 27 languages use package manager QR libraries (qrcode, rqrcode, ZXing, etc.)
- 10 languages use C FFI to libqrencode (dlopen, ISO_C_BINDING, @cImport, critcl)
- 2 shell languages use qrencode CLI (native shell paradigm)
- 1 language (Prolog) uses C FFI with CLI fallback

Section 9 added to test-sdk.sh with get_qr_file() mapping and
QR:unsandbox-qr-ok:ROWS pattern validation across the hydra matrix.
2026-01-27 18:24:54 -05:00

22 lines
816 B
Scheme

(use-modules (system foreign)
(rnrs bytevectors))
(define libqr (dynamic-link "libqrencode"))
(define qr-encode-string
(pointer->procedure '*
(dynamic-func "QRcode_encodeString" libqr)
(list '* int32 int32 int32 int32)))
(define qr-free
(pointer->procedure void
(dynamic-func "QRcode_free" libqr)
(list '*)))
(let* ((text (string->pointer "unsandbox-qr-ok"))
(qr-ptr (qr-encode-string text 0 1 2 1))
;; QRcode struct: { int version, int width, unsigned char *data }
(version (bytevector-sint-ref (pointer->bytevector qr-ptr 4) 0 (native-endianness) 4))
(width (bytevector-sint-ref (pointer->bytevector (make-pointer (+ (pointer-address qr-ptr) 4)) 4) 0 (native-endianness) 4)))
(format #t "QR:unsandbox-qr-ok:ROWS:~d~%" width)
(qr-free qr-ptr))