import {Latus} from '@latus/core'; import {expect} from 'chai'; import { buildCondition, buildValue, } from '../src/builders'; import Context from '../src/context'; import compile from '../src/compilers/compile'; 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('Condition', () => { it('has equality operator', async () => { const condition = compile(buildCondition('is', [ buildValue(69), buildValue(69), ]), latus); expect(condition(context)).to.be.true; }); it('has inequality operator', async () => { const condition = compile(buildCondition('isnt', [ buildValue(69), buildValue(68), ]), latus); expect(condition(context)).to.be.true; }); it('has greater than operator', async () => { const condition = compile(buildCondition('>', [ buildValue(69), buildValue(68), ]), latus); expect(condition(context)).to.be.true; }); it('has greater than or equal operator', async () => { expect(compile(buildCondition('>=', [ buildValue(69), buildValue(69), ]), latus)(context)).to.be.true; expect(compile(buildCondition('>=', [ buildValue(69), buildValue(68), ]), latus)(context)).to.be.true; }); it('has less than operator', async () => { const condition = compile(buildCondition('<', [ buildValue(69), buildValue(70), ]), latus); expect(condition(context)).to.be.true; }); it('has less than or equal operator', async () => { expect(compile(buildCondition('<=', [ buildValue(69), buildValue(69), ]), latus)(context)).to.be.true; expect(compile(buildCondition('<=', [ buildValue(69), buildValue(70), ]), latus)(context)).to.be.true; }); it('has or operator', async () => { expect(compile(buildCondition('or', [ buildValue(true), buildValue(false), ]), latus)(context)).to.be.true; expect(compile(buildCondition('or', [ buildValue(true), buildValue(true), ]), latus)(context)).to.be.true; expect(compile(buildCondition('or', [ buildValue(false), buildValue(false), ]), latus)(context)).to.be.false; }); it('has and operator', async () => { expect(compile(buildCondition('and', [ buildValue(true), buildValue(false), ]), latus)(context)).to.be.false; expect(compile(buildCondition('and', [ buildValue(true), buildValue(true), ]), latus)(context)).to.be.true; expect(compile(buildCondition('and', [ buildValue(false), buildValue(false), ]), latus)(context)).to.be.false; }); it('has contains operator', async () => { expect(compile(buildCondition('contains', [ buildValue([1, 2, 3, 69]), buildValue(69), ]), latus)(context)).to.be.true; expect(compile(buildCondition('contains', [ buildValue([1, 2, 3]), buildValue(69), ]), latus)(context)).to.be.false; expect(compile(buildCondition('contains', [ buildValue(69), buildValue(69), ]), latus)(context)).to.be.false; }); });