Fix if-let, add when-let

This commit is contained in:
2025-01-30 08:51:07 -06:00
parent 4c685b1171
commit 75224b9100
2 changed files with 28 additions and 12 deletions

View File

@@ -31,6 +31,21 @@
(define-test "test"
(assert-equal 'a (if-not #f 'a 'b))))
(define-test-suite "if-let"
(define-test "positive case"
(assert-equal 2 (if-let ([v (or #f 1)]) (+ v 1) 3)))
(define-test "negative case"
(assert-equal 3 (if-let ([v (and #f 1)]) (+ v 1) 3)))
(define-test "variable not shadowed in false arm"
(define v 3)
(assert-equal 3 (if-let ([v #f]) (+ v 1) v))))
(define-test-suite "when-let"
(define-test "positive case"
(assert-equal 2 (when-let ([v (or #f 1)]) (+ v 1))))
(define-test "negative case"
(assert-equal (when #f #t) (when-let ([v (and #f 1)]) (+ v 1)))))
(define-test-suite "for"
(define-test "permutation"
(define value (for ([i (iota 2)]
@@ -38,12 +53,6 @@
(cons i j)))
(assert-equal '((0 . 0) (0 . 1) (1 . 0) (1 . 1)) value)))
(define-test-suite "if-let"
(define-test "positive-case"
(assert-equal 2 (if-let ([v (or #f 1)]) (+ v 1))))
(define-test "negative-case"
(assert-equal #f (if-let ([v (and #f 1)]) (+ v 1)))))
(define-test-suite "partial"
(define-test "test"
(define value (partial / 2))