import type { VmRecord } from '@mirascript/mirascript'; import { Evaluator, Expression, Scope } from '../dist/index.js'; const e = new Evaluator(); const s = new Scope((k) => (k === 'v' ? { a: 2, b: 1, c: undefined } : undefined)); describe('Evaluator should provided functions', () => { it('should eval keys/values/entries', () => { expect(e.evaluate(Expression('keys(v)'), s)).toEqual(['a', 'b', 'c']); expect(e.evaluate(Expression('values(v)'), s)).toEqual([2, 1, undefined]); expect(e.evaluate(Expression('entries(v)'), s)).toEqual([ { 0: 'a', 1: 2 }, { 0: 'b', 1: 1 }, { 0: 'c', 1: null }, ]); }); it('should eval type', () => { expect(e.evaluate(Expression('type(exp) == "function"'), s)).toBe(true); expect(e.evaluate(Expression('type(exp) == "function"'), s)).toBe(true); }); });