;; ------------------------------------------------------------------------ ;; | | ;; | FILE : lexical-address-tests.rkt | ;; | AUTHOR : Eugene Wallingford | ;; | CREATION DATE : 2024/04/01 | ;; | | ;; | DESCRIPTION : A few Rackunit tests for lexical-address. | ;; | | ;; ------------------------------------------------------------------------ #lang racket (require rackunit) (require "lexical-address.rkt") ;; ------------------------------------------------------------------------- (check-equal? (lexical-address 'a) '(a : 0 0)) (check-equal? (lexical-address '(a b c)) '((a : 0 0) (b : 0 1) (c : 0 2))) (check-equal? (lexical-address '(if a b c)) '(if (a : 0 0) (b : 0 1) (c : 0 2))) (check-equal? (lexical-address '(lambda (a b c) (if (eq? b c) ((lambda (c) (cons a c)) a) b)) ) '(lambda (a b c) (if ((eq? : 1 0) (b : 0 1) (c : 0 2)) ((lambda (c) ((cons : 2 1) (a : 1 0) (c : 0 0))) (a : 0 0)) (b : 0 1)))) (check-equal? (lexical-address '(lambda (f) ((lambda (h) (lambda (n) ((f (h h)) n))) (lambda (h) (lambda (n) ((f (h h)) n)))))) '(lambda (f) ((lambda (h) (lambda (n) (((f : 2 0) ((h : 1 0) (h : 1 0))) (n : 0 0)))) (lambda (h) (lambda (n) (((f : 2 0) ((h : 1 0) (h : 1 0))) (n : 0 0))))))) ;; -------------------------------------------------------------------------