(use test) (use moremacros) (use hash-let srfi-69) (use numeric-macros) (test-group "Macro: str#" (test "" (str# "")) (test "abc" (str# "abc")) (test "(+ 1 2) = 3" (str# "(+ 1 2) = #(+ 1 2)")) (test "(+ a b) = 3" (let ((a 1) (b 2)) (str# "(+ a b) = #(+ a b)"))) (test "must have sharp (#) characters" (str# "must have sharp (##) characters")) (test "issues with #-expressions" (str# "issues with #(conc #\\# #\\- \"expressions\")")) (test "1:2" (let ((a 1) (b 2)) (str# "#(identity a):#(identity b)"))) (test "2345" (str# "#(+ 23)#(+ 45)")) (test "23#45" (str# "#(+ 23)###(+ 45)")) (test "23:45" (str# "#(+ 23):#(+ 45)")) ; (test "" (str# "")) (test "abc" (str# "abc")) (test "(+ 1 2) = 3" (str# "(+ 1 2) = #{(+ 1 2)}")) (test "(+ a b) = 3" (let ((a 1) (b 2)) (str# "(+ a b) = #{(+ a b)}"))) (test "must have sharp (#) characters" (str# "must have sharp (##) characters")) (test "issues with #-expressions" (str# "issues with #{(conc #\\# #\\- \"expressions\")}")) (test "1:2" (let ((a 1) (b 2)) (str# "#{a}:#{b}"))) (test "2345" (str# "#{23}#{45}")) (test "23#45" (str# "#{23}###{45}")) (test "23:45" (str# "#{23}:#{45}")) ) (test-group "Macro: swap-set!, fluid-set!, stiff-set!" (let ((a 1) (b 2)) ;(test '(1 2) (list a b)) (swap-set! a b) (test '(2 1) (list a b)) ) (let ((a 1) (b 2)) ;(test '(1 2) (list a b)) (fluid-set! a 23 b (+ a b)) (test '(23 3) (list a b)) ) (let ((a 1) (b 2)) ;(test '(1 2) (list a b)) (stiff-set! a 23 b (+ a b)) (test '(23 25) (list a b)) ) ) (test-group "Macro: set!/op" (let ((a 1) (b 2)) (set!/op a + 2 <> b) (test 5 a) ) ) (test-group "Macro: type-case" (test 'numeric (type-case 23 ((symbol string char) 'symbolic) (number 'numeric) (else 'otheric))) (test '(23 numeric) (type-case* 23 ((symbol string char) (list it 'symbolic)) (number (list it 'numeric)) (else (list it 'otheric)))) ) (test-group "Numeric" (let ((ia 1) (fa 1.0)) (test 2 (fx++ ia)) (test 0 (fx-- ia)) (test 2.0 (fp++ fa)) (test 0.0 (fp-- fa)) (test 2.0 (fl++ fa)) (test 0.0 (fl-- fa)) (test 2 (++ ia)) (test 2.0 (++ fa)) (test 0 (-- ia)) (test 0.0 (-- fa)) ) (let ((ia 1)) (fx++! ia) (test 2 ia) (fx--! ia) (test 1 ia) ) (let ((fa 1.0)) (fp++! fa) (test 2.0 fa) (fp--! fa) (test 1.0 fa) (fl++! fa) (test 2.0 fa) (fl--! fa) (test 1.0 fa) ) (let ((ia 1) (fa 1.0)) (++! ia) (test 2 ia) (++! fa) (test 2.0 fa) (--! ia) (test 1 ia) (--! fa) (test 1.0 fa) ) ) (test-group "hash-let" (define tbl (make-hash-table)) (hash-table-set! tbl 'abc "commercial network") (hash-table-set! tbl "abc" "commercial network") (hash-table-set! tbl 'cbs "commercial network") (hash-table-set! tbl "cbs" "commercial network") (hash-let tbl ((abc) (cbs "cbs") (pbs (string-append "p" "bs") #t) tbs) (test "commercial network" abc) (test "commercial network" cbs) (test #t pbs) (test #f tbs) ) ) (test-exit)