import {Latus} from '@latus/core'; import {expect} from 'chai'; import { buildInvoke, buildExpression, } from '../src/builders'; import Context from '../src/context'; import compile from '../src/compilers/compile'; const {name} = require('../package.json'); describe(name, () => { let latus; let context; beforeEach(async () => { latus = Latus.mock({ '@avocado/behavior': require('../src'), }); await Promise.all(latus.invokeFlat('@latus/core/starting')); context = new Context({}, latus); }); describe('expression', () => { it('evaluates value expressions', async () => { const test = {foo: 69}; context.add('test', test); const expression = compile(buildExpression(['test', 'foo']), latus); expect(expression(context)).to.equal(test.foo); }); it('evaluates assignment expressions', async () => { const test = {foo: 69}; context.add('test', test); const expression = compile(buildExpression(['test', 'foo'], 420), latus); expression(context); expect(test.foo).to.equal(420); }); it('invokes', async () => { const test = {foo: () => 69}; context.add('test', test); const expression = compile(buildInvoke(['test', 'foo']), latus); expect(expression(context)).to.equal(69); }); }); });