38 lines
1.1 KiB
CoffeeScript
38 lines
1.1 KiB
CoffeeScript
|
chai = require 'chai'
|
||
|
chai.should()
|
||
|
expect = chai.expect
|
||
|
|
||
|
olisp = require '../chapter5/interpreter5a'
|
||
|
{read} = require '../chapter5/reader'
|
||
|
|
||
|
lisp = (ast) ->
|
||
|
ret = undefined
|
||
|
olisp ast, (i) -> ret = i
|
||
|
return ret
|
||
|
|
||
|
benchmark = [
|
||
|
"(begin",
|
||
|
" (set! primes",
|
||
|
" (lambda (n f max)",
|
||
|
" ((lambda (filter)",
|
||
|
" (begin",
|
||
|
" (set! filter (lambda (p)",
|
||
|
" (lambda (n) (= 0 (remainder n p))) ))",
|
||
|
" (if (> n max)",
|
||
|
" '()",
|
||
|
" (if (f n)",
|
||
|
" (primes (+ n 1) f max)",
|
||
|
" (cons n",
|
||
|
" ((lambda (ff)",
|
||
|
" (primes (+ n 1)",
|
||
|
" (lambda (p) (if (f p) t (ff p)))",
|
||
|
" max ) )",
|
||
|
" (filter n) ) ) ) ) ) )",
|
||
|
" 'wait ) ) )",
|
||
|
" (primes 2 (lambda (x) f) 50) )"].join('')
|
||
|
|
||
|
|
||
|
describe "Chapter 5: It runs.", ->
|
||
|
it "Runs the primes search example", ->
|
||
|
expect(lisp read benchmark).to.equal(true)
|