123456789101112131415161718192021222324252627282930313233343536373839404142 |
- const test = require('tape')
- const helpers = require('./helpers')
-
- const AST = require('../src/ast')
- const Evaluator = require('../src/evaluator')
-
- test('applies functions from core library', t => {
- t.plan(1)
-
- const tree = helpers.evaluate('(+ 1 2)')
- t.deepEqual(tree[0], new AST.Number({ value: 3 }))
- })
-
- test('applies lambda functions', t => {
- t.plan(1)
-
- const tree = helpers.evaluate('((lambda (x y) (+ x y)) 1 2)')
- t.deepEqual(tree[0], new AST.Number({ value: 3 }))
- })
-
- test('define', t => {
- t.plan(2)
-
- let tree = helpers.evaluate('(define x 5) (+ x 1)')
- t.deepEqual(tree[0], new AST.Number({ value: 6 }))
-
- tree = helpers.evaluate('(define plusOne (lambda (x) (+ x 1))) (plusOne 5)')
- t.deepEqual(tree[0], new AST.Number({ value: 6 }))
- })
-
- test('conditionals', t => {
- t.plan(3)
-
- let tree = helpers.evaluate('(if #t 1 0)')
- t.deepEqual(tree[0], new AST.Number({ value: 1 }))
-
- tree = helpers.evaluate('(if #f 1 0)')
- t.deepEqual(tree[0], new AST.Number({ value: 0 }))
-
- tree = helpers.evaluate('(if (= (+ 4 9) (- 20 7)) (+ 10 9) (- 4 2))')
- t.deepEqual(tree[0], new AST.Number({ value: 19 }))
- })
|