From 424906af0a04468243e80efaa1a3efd793e44d27 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 22 Mar 2017 12:08:17 -0600 Subject: [PATCH] ffi/com: fix unsigned-int test Closes #1633 --- racket/collects/ffi/unsafe/com.rkt | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/racket/collects/ffi/unsafe/com.rkt b/racket/collects/ffi/unsafe/com.rkt index dc2691b8dc..c63d7e9fb9 100644 --- a/racket/collects/ffi/unsafe/com.rkt +++ b/racket/collects/ffi/unsafe/com.rkt @@ -1485,7 +1485,7 @@ (define (unsigned-int? v n) (and (exact-integer? v) - (positive? v) + (not (negative? v)) (zero? (arithmetic-shift v (- n))))) (define (signed-int? v n) @@ -2334,3 +2334,19 @@ (unless inited? (CoInitialize) (set! inited? #t))) + +;; ---------------------------------------- +;; Basic tests + +(module+ test + (define-syntax-rule (check-true e) + (unless e + (error "test failed" 'e))) + (check-true (unsigned-int? 0 32)) + (check-true (not (unsigned-int? -1 32))) + (check-true (unsigned-int? (sub1 (expt 2 32)) 32)) + (check-true (not (unsigned-int? (expt 2 32) 32))) + (check-true (not (unsigned-int? (sub1 (expt 2 33)) 32))) + (check-true (signed-int? 0 32)) + (check-true (signed-int? -1 32)) + (check-true (not (signed-int? (sub1 (expt 2 32)) 32))))