const test = require('tape') const helpers = require('./helpers') const AST = require('../src/ast') const OsloError = require('../src/osloError') test('list function', t => { t.plan(1) const tree = helpers.evaluate('(list 1 2 3)') t.deepEqual( tree[0], new AST.List({ elements: [ new AST.Number({ value: 1, line: 1 }), new AST.Number({ value: 2, line: 1 }), new AST.Number({ value: 3, line: 1 }), ], }), ) }) test('length function', t => { t.plan(1) const tree = helpers.evaluate('(length (list 1 2 3))') t.deepEqual(tree[0], new AST.Number({ value: 3 })) }) test('map', t => { t.plan(1) const tree = helpers.evaluate(` (define my-map (lambda (f xs) (if (= (length xs) 0) (list) (cons (f (first xs)) (my-map f (rest xs)))))) (my-map (lambda (x) (+ x 1)) (list 1 2 3)) `) t.deepEqual( tree[0], new AST.List({ elements: [ new AST.Number({ value: 2 }), new AST.Number({ value: 3 }), new AST.Number({ value: 4 }), ], }), ) })