diff --git a/.gitignore b/.gitignore index ef2d36a..e64586e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,6 @@ /target -*.scm~ \ No newline at end of file + +# dr racket +*.scm~ +*.scm#* +.#*.scm \ No newline at end of file diff --git a/src/snapshots/handball__tests__run-pass@fib.scm.snap b/src/snapshots/handball__tests__run-pass@fib.scm.snap new file mode 100644 index 0000000..67d67d6 --- /dev/null +++ b/src/snapshots/handball__tests__run-pass@fib.scm.snap @@ -0,0 +1,40 @@ +--- +source: src/tests.rs +assertion_line: 45 +expression: run-pass fib.scm + +--- +10.0 +89.0 + +9.0 +55.0 + +8.0 +34.0 + +7.0 +21.0 + +6.0 +13.0 + +5.0 +8.0 + +4.0 +5.0 + +3.0 +3.0 + +2.0 +2.0 + +1.0 +1.0 + +0.0 +1.0 + + diff --git a/src/snapshots/handball__tests__run-pass@multi.scm.snap b/src/snapshots/handball__tests__run-pass@multi.scm.snap new file mode 100644 index 0000000..a2907e7 --- /dev/null +++ b/src/snapshots/handball__tests__run-pass@multi.scm.snap @@ -0,0 +1,7 @@ +--- +source: src/tests.rs +assertion_line: 45 +expression: run-pass multi.scm + +--- +3.0 diff --git a/src/snapshots/handball__tests__run-pass@nested-defs.scm.snap b/src/snapshots/handball__tests__run-pass@nested-defs.scm.snap new file mode 100644 index 0000000..a7ce42a --- /dev/null +++ b/src/snapshots/handball__tests__run-pass@nested-defs.scm.snap @@ -0,0 +1,7 @@ +--- +source: src/tests.rs +assertion_line: 41 +expression: run-pass nested-defs.scm + +--- +1.4142156862745097 diff --git a/src/snapshots/handball__tests__run-pass@sqrt.scm.snap b/src/snapshots/handball__tests__run-pass@sqrt.scm.snap new file mode 100644 index 0000000..4e0e122 --- /dev/null +++ b/src/snapshots/handball__tests__run-pass@sqrt.scm.snap @@ -0,0 +1,7 @@ +--- +source: src/tests.rs +assertion_line: 41 +expression: run-pass sqrt.scm + +--- +1.4142156862745097 diff --git a/src/test/run-pass/fib.scm b/src/test/run-pass/fib.scm new file mode 100644 index 0000000..92cbcab --- /dev/null +++ b/src/test/run-pass/fib.scm @@ -0,0 +1,21 @@ +#lang scheme + +(define (displayln x) (display x) (newline)) + +(define (my-or a b) (if a #t b)) ; Test was written before we had `or` + + +(define (fib-base? n) (my-or (= n 1) (= n 0))) + +(define (fib n) + (if (fib-base? n) 1 + (+ (fib (- n 1)) (fib (- n 2))))) + + +(define (pfib n) (displayln n) (displayln (fib n)) (newline)) + +(define (pfibs n) + (if (= n (- 1)) 0 ; Hack + ((lambda () (pfib n) (pfibs (- n 1)))))) ; Hack + +(pfibs 10) \ No newline at end of file diff --git a/src/test/run-pass/multi.scm b/src/test/run-pass/multi.scm new file mode 100644 index 0000000..6df5bff --- /dev/null +++ b/src/test/run-pass/multi.scm @@ -0,0 +1,5 @@ +#lang scheme + +(define (multi) 1 2 3) + +(display (multi)) \ No newline at end of file diff --git a/src/test/run-pass/nested-defs.scm b/src/test/run-pass/nested-defs.scm new file mode 100644 index 0000000..6d4265a --- /dev/null +++ b/src/test/run-pass/nested-defs.scm @@ -0,0 +1,20 @@ +#lang scheme + +; We dont have closures at the time of writing, but each func gets its own env +; http://sarabander.github.io/sicp/html/1_002e1.xhtml#g_t1_002e1_002e7 + +(define (sqrt x) + (define (sqrt-iter guess x) + (define (good-enough? guess x) + (define (square x) (* x x)) + (< (abs (- (square guess) x)) 0.001)) + (define (improve guess x) + (define (average x y) + (/ (+ x y) 2)) + (average guess (/ x guess))) + (if (good-enough? guess x) + guess + (sqrt-iter (improve guess x) x))) + (sqrt-iter 1.0 x)) + +(display (sqrt 2)) \ No newline at end of file diff --git a/src/test/run-pass/sqrt.scm b/src/test/run-pass/sqrt.scm new file mode 100644 index 0000000..051ac15 --- /dev/null +++ b/src/test/run-pass/sqrt.scm @@ -0,0 +1,25 @@ +#lang scheme + +; We dont have closures at the time of writing, but each func gets its own env +; http://sarabander.github.io/sicp/html/1_002e1.xhtml#g_t1_002e1_002e7 + +(define (sqrt-iter guess x) + (if (good-enough? guess x) + guess + (sqrt-iter (improve guess x) x))) + +(define (improve guess x) + (average guess (/ x guess))) + +(define (average x y) + (/ (+ x y) 2)) + +(define (square x) (* x x)) + +(define (good-enough? guess x) + (< (abs (- (square guess) x)) 0.001)) + +(define (sqrt x) + (sqrt-iter 1.0 x)) + +(display (sqrt 2)) \ No newline at end of file diff --git a/src/tests.rs b/src/tests.rs index f261f4c..7aecb78 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -33,10 +33,6 @@ fn run_pass() { .assert() .success(); - dbg!(&p, p.components().collect::>()); - - dbg!(&p, manifest_dir); - let p = p.strip_prefix(manifest_dir).unwrap(); let p = p.strip_prefix("src/test/run-pass").unwrap(); let p = p.to_str().unwrap();