Improving test results.
This commit is contained in:
parent
a5e4558df9
commit
b8a19d5c79
|
@ -149,7 +149,6 @@ evaluate = (e, env, continuation) ->
|
||||||
when "lambda"
|
when "lambda"
|
||||||
make_function (astSymbolsToLispSymbols cadr exp), (cddr exp), env, continuation
|
make_function (astSymbolsToLispSymbols cadr exp), (cddr exp), env, continuation
|
||||||
else
|
else
|
||||||
console.log(cdr exp)
|
|
||||||
evlis (cdr exp), env, (args) ->
|
evlis (cdr exp), env, (args) ->
|
||||||
evaluate (car exp), env, (fn) ->
|
evaluate (car exp), env, (fn) ->
|
||||||
invoke fn, args, continuation
|
invoke fn, args, continuation
|
||||||
|
|
|
@ -0,0 +1,139 @@
|
||||||
|
<testsuites name="Mocha Tests">
|
||||||
|
<testsuite name="Core interpreter" tests="13" failures="2" skipped="0" timestamp="Wed, 17 Jun 2015 22:28:41 GMT" time="0.1">
|
||||||
|
<testcase classname="Core interpreter" name="Should handle true statements" time="0.004"/>
|
||||||
|
<testcase classname="Core interpreter" name="Should handle false statements" time="0.001"/>
|
||||||
|
<testcase classname="Core interpreter" name="Should handle return strings" time="0.001"/>
|
||||||
|
<testcase classname="Core interpreter" name="Should handle return strings when false" time="0"/>
|
||||||
|
<testcase classname="Core interpreter" name="Should handle equivalent objects that are not intrinsically truthy" time="0.001"/>
|
||||||
|
<testcase classname="Core interpreter" name="Should handle inequivalent objects that are not intrinsically truthy" time="0"/>
|
||||||
|
<testcase classname="Core interpreter" name="Should handle basic arithmetic" time="0.001"/>
|
||||||
|
<testcase classname="Core interpreter" name="Should handle some algebra" time="0.001"/>
|
||||||
|
<testcase classname="Core interpreter" name="Should handle a basic setting" time="0"/>
|
||||||
|
<testcase classname="Core interpreter" name="Should handle a zero arity thunk" time="0.001">
|
||||||
|
<failure message="Cannot read property '1' of undefined">
|
||||||
|
at nvalu (chapter1/interpreter.coffee:11:19)
|
||||||
|
at handler (chapter1/interpreter.coffee:118:11)
|
||||||
|
at astSymbolsToLispSymbols (chapter1/interpreter.coffee:119:3)
|
||||||
|
at evaluate (chapter1/interpreter.coffee:145:43)
|
||||||
|
at evaluate (chapter1/interpreter.coffee:144:57)
|
||||||
|
at eprogn (chapter1/interpreter.coffee:77:7)
|
||||||
|
at evaluate (chapter1/interpreter.coffee:143:27)
|
||||||
|
at module.exports (chapter1/interpreter.coffee:152:25)
|
||||||
|
at Context.<anonymous> (test/test_chapter1.coffee:38:12)
|
||||||
|
|
||||||
|
</failure>
|
||||||
|
</testcase>
|
||||||
|
<testcase classname="Core interpreter" name="Should handle a two arity thunk" time="0.001"/>
|
||||||
|
<testcase classname="Core interpreter" name="Should handle a recursive function" time="0.001"/>
|
||||||
|
<testcase classname="Core interpreter" name="Should handle an IIFE" time="0">
|
||||||
|
<failure message="Cannot read property '1' of undefined">
|
||||||
|
at nvalu (chapter1/interpreter.coffee:11:19)
|
||||||
|
at handler (chapter1/interpreter.coffee:118:11)
|
||||||
|
at astSymbolsToLispSymbols (chapter1/interpreter.coffee:119:3)
|
||||||
|
at evaluate (chapter1/interpreter.coffee:145:43)
|
||||||
|
at evaluate (chapter1/interpreter.coffee:148:15)
|
||||||
|
at eprogn (chapter1/interpreter.coffee:80:7)
|
||||||
|
at evaluate (chapter1/interpreter.coffee:143:27)
|
||||||
|
at module.exports (chapter1/interpreter.coffee:152:25)
|
||||||
|
at Context.<anonymous> (test/test_chapter1.coffee:47:12)
|
||||||
|
|
||||||
|
</failure>
|
||||||
|
</testcase>
|
||||||
|
</testsuite>
|
||||||
|
<testsuite name="Core interpreter" tests="8" failures="6" skipped="0" timestamp="Wed, 17 Jun 2015 22:28:41 GMT" time="0.103">
|
||||||
|
<testcase classname="Core interpreter" name="Should handle if statements" time="0.003">
|
||||||
|
<failure message="expected [ 'false', 'boolean', __list: true ] to equal false">
|
||||||
|
at Context.<anonymous> (test/test_chapter3.coffee:11:56)
|
||||||
|
|
||||||
|
</failure>
|
||||||
|
</testcase>
|
||||||
|
<testcase classname="Core interpreter" name="Should handle basic arithmetic" time="0"/>
|
||||||
|
<testcase classname="Core interpreter" name="Should handle some algebra" time="0">
|
||||||
|
<failure message="Can't handle a e">
|
||||||
|
at evaluate (chapter3/interpreter.coffee:160:15)
|
||||||
|
at eprogn (chapter3/interpreter.coffee:77:7)
|
||||||
|
at evaluate (chapter3/interpreter.coffee:146:27)
|
||||||
|
at module.exports (chapter3/interpreter.coffee:162:39)
|
||||||
|
at Context.<anonymous> (test/test_chapter3.coffee:24:12)
|
||||||
|
|
||||||
|
</failure>
|
||||||
|
</testcase>
|
||||||
|
<testcase classname="Core interpreter" name="Should handle a basic setting" time="0.001">
|
||||||
|
<failure message="continuation is not a function">
|
||||||
|
at lookup (chapter3/interpreter.coffee:95:7)
|
||||||
|
at lookup (chapter3/interpreter.coffee:97:7)
|
||||||
|
at lookup (chapter3/interpreter.coffee:97:7)
|
||||||
|
at lookup (chapter3/interpreter.coffee:97:7)
|
||||||
|
at lookup (chapter3/interpreter.coffee:97:7)
|
||||||
|
at lookup (chapter3/interpreter.coffee:97:7)
|
||||||
|
at lookup (chapter3/interpreter.coffee:97:7)
|
||||||
|
at lookup (chapter3/interpreter.coffee:97:7)
|
||||||
|
at lookup (chapter3/interpreter.coffee:97:7)
|
||||||
|
at lookup (chapter3/interpreter.coffee:97:7)
|
||||||
|
at evaluate (chapter3/interpreter.coffee:134:12)
|
||||||
|
at eprogn (chapter3/interpreter.coffee:80:7)
|
||||||
|
at chapter3/interpreter.coffee:78:9
|
||||||
|
at update (chapter3/interpreter.coffee:105:7)
|
||||||
|
at update (chapter3/interpreter.coffee:107:7)
|
||||||
|
at update (chapter3/interpreter.coffee:107:7)
|
||||||
|
at update (chapter3/interpreter.coffee:107:7)
|
||||||
|
at update (chapter3/interpreter.coffee:107:7)
|
||||||
|
at update (chapter3/interpreter.coffee:107:7)
|
||||||
|
at update (chapter3/interpreter.coffee:107:7)
|
||||||
|
at update (chapter3/interpreter.coffee:107:7)
|
||||||
|
at update (chapter3/interpreter.coffee:107:7)
|
||||||
|
at update (chapter3/interpreter.coffee:107:7)
|
||||||
|
at chapter3/interpreter.coffee:148:11
|
||||||
|
at evaluate (chapter3/interpreter.coffee:132:12)
|
||||||
|
at evaluate (chapter3/interpreter.coffee:147:26)
|
||||||
|
at eprogn (chapter3/interpreter.coffee:77:7)
|
||||||
|
at evaluate (chapter3/interpreter.coffee:146:27)
|
||||||
|
at module.exports (chapter3/interpreter.coffee:162:39)
|
||||||
|
at Context.<anonymous> (test/test_chapter3.coffee:27:12)
|
||||||
|
|
||||||
|
</failure>
|
||||||
|
</testcase>
|
||||||
|
<testcase classname="Core interpreter" name="Should handle a zero arity thunk" time="0.001">
|
||||||
|
<failure message="Cannot read property '1' of undefined">
|
||||||
|
at nvalu (chapter3/interpreter.coffee:11:19)
|
||||||
|
at handler (chapter3/interpreter.coffee:120:11)
|
||||||
|
at astSymbolsToLispSymbols (chapter3/interpreter.coffee:121:3)
|
||||||
|
at evaluate (chapter3/interpreter.coffee:150:26)
|
||||||
|
at evaluate (chapter3/interpreter.coffee:147:26)
|
||||||
|
at eprogn (chapter3/interpreter.coffee:77:7)
|
||||||
|
at evaluate (chapter3/interpreter.coffee:146:27)
|
||||||
|
at module.exports (chapter3/interpreter.coffee:162:39)
|
||||||
|
at Context.<anonymous> (test/test_chapter3.coffee:30:12)
|
||||||
|
|
||||||
|
</failure>
|
||||||
|
</testcase>
|
||||||
|
<testcase classname="Core interpreter" name="Should handle a two arity thunk" time="0"/>
|
||||||
|
<testcase classname="Core interpreter" name="Should handle a recursive function" time="0.001">
|
||||||
|
<failure message="expected [ 'false', 'boolean', __list: true ] to equal 120">
|
||||||
|
Index: string
|
||||||
|
===================================================================
|
||||||
|
--- string
|
||||||
|
+++ string
|
||||||
|
|
||||||
|
at Context.<anonymous> (test/test_chapter3.coffee:36:108)
|
||||||
|
|
||||||
|
</failure>
|
||||||
|
</testcase>
|
||||||
|
<testcase classname="Core interpreter" name="Should handle an IIFE" time="0">
|
||||||
|
<failure message="Cannot read property '1' of undefined">
|
||||||
|
at nvalu (chapter3/interpreter.coffee:11:19)
|
||||||
|
at handler (chapter3/interpreter.coffee:120:11)
|
||||||
|
at astSymbolsToLispSymbols (chapter3/interpreter.coffee:121:3)
|
||||||
|
at evaluate (chapter3/interpreter.coffee:150:26)
|
||||||
|
at chapter3/interpreter.coffee:157:9
|
||||||
|
at evlis (chapter3/interpreter.coffee:90:5)
|
||||||
|
at evaluate (chapter3/interpreter.coffee:156:7)
|
||||||
|
at eprogn (chapter3/interpreter.coffee:80:7)
|
||||||
|
at evaluate (chapter3/interpreter.coffee:146:27)
|
||||||
|
at module.exports (chapter3/interpreter.coffee:162:39)
|
||||||
|
at Context.<anonymous> (test/test_chapter3.coffee:39:12)
|
||||||
|
|
||||||
|
</failure>
|
||||||
|
</testcase>
|
||||||
|
</testsuite>
|
||||||
|
</testsuites>
|
|
@ -2,17 +2,25 @@ chai = require 'chai'
|
||||||
chai.should()
|
chai.should()
|
||||||
expect = chai.expect
|
expect = chai.expect
|
||||||
|
|
||||||
|
{cons} = require "cons-lists/lists"
|
||||||
lisp = require '../chapter1/interpreter'
|
lisp = require '../chapter1/interpreter'
|
||||||
{read, readForms} = require '../chapter1/reader'
|
{read, readForms} = require '../chapter1/reader'
|
||||||
|
|
||||||
|
the_false_value = (cons "false", "boolean")
|
||||||
|
|
||||||
describe "Core interpreter", ->
|
describe "Core interpreter", ->
|
||||||
it "Should handle if statements", ->
|
it "Should handle true statements", ->
|
||||||
expect(lisp read "(begin (if (lt 0 1) #t #f))").to.equal(true)
|
expect(lisp read "(begin (if (lt 0 1) #t #f))").to.equal(true)
|
||||||
expect(lisp read "(begin (if (lt 1 0) #t #f))").to.equal(false)
|
it "Should handle false statements", ->
|
||||||
expect(lisp read '(begin (if (lt 1 0) "y" "n"))').to.equal("n")
|
expect(lisp read "(begin (if (lt 1 0) #t #f))").to.deep.equal(the_false_value)
|
||||||
|
it "Should handle return strings", ->
|
||||||
expect(lisp read '(begin (if (lt 0 1) "y" "n"))').to.equal("y")
|
expect(lisp read '(begin (if (lt 0 1) "y" "n"))').to.equal("y")
|
||||||
expect(lisp read '(begin (if (eq "y" "y") "y" "n"))').to.equal("y")
|
it "Should handle return strings when false", ->
|
||||||
expect(lisp read '(begin (if (eq "y" "x") "y" "n"))').to.equal("n")
|
expect(lisp read '(begin (if (lt 1 0) "y" "n"))').to.equal("n")
|
||||||
|
it "Should handle equivalent objects that are not intrinsically truthy", ->
|
||||||
|
expect(lisp read '(begin (if (eq? "y" "y") "y" "n"))').to.equal("y")
|
||||||
|
it "Should handle inequivalent objects that are not intrinsically truthy", ->
|
||||||
|
expect(lisp read '(begin (if (eq? "y" "x") "y" "n"))').to.equal("n")
|
||||||
|
|
||||||
it "Should handle basic arithmetic", ->
|
it "Should handle basic arithmetic", ->
|
||||||
expect(lisp read '(begin (+ 5 5))').to.equal(10)
|
expect(lisp read '(begin (+ 5 5))').to.equal(10)
|
||||||
|
@ -21,7 +29,7 @@ describe "Core interpreter", ->
|
||||||
expect(lisp read '(begin (- 9 5))').to.equal(4)
|
expect(lisp read '(begin (- 9 5))').to.equal(4)
|
||||||
|
|
||||||
it "Should handle some algebra", ->
|
it "Should handle some algebra", ->
|
||||||
expect(lisp read '(begin (* (+ 5 5) (* 2 3))').to.equal(60)
|
expect(lisp read '(begin (* (+ 5 5) (* 2 3)))').to.equal(60)
|
||||||
|
|
||||||
it "Should handle a basic setting", ->
|
it "Should handle a basic setting", ->
|
||||||
expect(lisp read '(begin (set! fact 4) fact)').to.equal(4)
|
expect(lisp read '(begin (set! fact 4) fact)').to.equal(4)
|
||||||
|
|
Loading…
Reference in New Issue