avocado/packages/behavior/test/condition.js
2021-01-03 20:24:14 -06:00

116 lines
3.4 KiB
JavaScript

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';
const {name} = require('../package.json');
describe(name, () => {
let latus;
let context;
beforeEach(async () => {
latus = Latus.mock([
['@avocado/behavior', `${__dirname}/../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;
});
});
});