evaluator: add if and primitives and tests
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
tests
|
||||
testEvalCarExpressionEvaluatesItsArgument
|
||||
self
|
||||
assert: (ph parseAndEval: '(car (cons (quote a) (cons (quote b) ())))')
|
||||
equals: #a
|
@@ -0,0 +1,3 @@
|
||||
tests
|
||||
testEvalCdrExpressionEvaluatesItsArgument
|
||||
self assert: (ph parseAndEval: '(cdr (quote (quote a)))') equals: #(a)
|
@@ -0,0 +1,4 @@
|
||||
tests
|
||||
testEvalExpressionArith
|
||||
self assert: (ph parseAndEval: '(* (+ 2 3) 8)') equals: 40.
|
||||
self assert: (ph parseAndEval: '(* 8 (+ 2 3))') equals: 40
|
@@ -0,0 +1,3 @@
|
||||
tests
|
||||
testEvalExpressionMult
|
||||
self assert: (ph parseAndEval: '(* 3 8)') equals: 24
|
@@ -0,0 +1,4 @@
|
||||
tests
|
||||
testEvalIf
|
||||
self assert: (ph parseAndEval: '(if true 4 5)') equals: 4.
|
||||
self assert: (ph parseAndEval: '(if false 4 5)') equals: 5
|
@@ -0,0 +1,3 @@
|
||||
tests
|
||||
testEvalListExpression
|
||||
self assert: (ph parseAndEval: '(cons (quote a) ())') equals: #(a)
|
@@ -0,0 +1,8 @@
|
||||
tests
|
||||
testEvalQuote
|
||||
self
|
||||
assert: (ph parseAndEval: '(quote (* x x))')
|
||||
equals: #(#* #x #x).
|
||||
self
|
||||
assert: (ph parseAndEval: '(quote (quote (* x x)))')
|
||||
equals: #(quote #(#* #x #x))
|
@@ -0,0 +1,5 @@
|
||||
tests
|
||||
testIsNull
|
||||
self assert: (ph parseAndEval: '(isNull #())').
|
||||
self assert: (ph parseAndEval: '(isNull (quote ()))').
|
||||
self deny: (ph parseAndEval: '(isNull (cons (quote a) #()))')
|
@@ -0,0 +1,4 @@
|
||||
tests
|
||||
testNot
|
||||
self assert: (ph parseAndEval: '(not false)').
|
||||
self deny: (ph parseAndEval: '(not true)')
|
Reference in New Issue
Block a user