UNPKG

cream-and-sugar

Version:

A deliciously functional syntax for JavaScript with native support for JSX

38 lines (32 loc) 1.28 kB
import assert from 'assert'; import { nlToSpace } from './utils'; import { compileCode } from '../src/compiler/compiler'; describe('Array Comprehensions', () => { it('should compile a basic array comprehension', () => { const toCompile = 'for food in foods do eat food'; const expected = nlToSpace(`foods.map(function (food) { return eat(food); }.bind(this));`); assert.equal(nlToSpace(compileCode(toCompile)), expected); }); it('should compile a basic array comprehension using 2 parameters', () => { const toCompile = 'for food, index in foods do eat food, index'; const expected = nlToSpace(`foods.map(function (food, index) { return eat(food, index); }.bind(this));`); assert.equal(nlToSpace(compileCode(toCompile)), expected); }); it('should compile an array comprehension with a qualifier', () => { const toCompile = 'for food, index in foods do eat food, index onlyif index is 0'; const expected = nlToSpace(`(function () { const acc_ = []; foods.forEach(function (food, index) { if (index === 0) { acc_.push(eat(food, index)); } }.bind(this)); return acc_; }.bind(this)());`); assert.equal(nlToSpace(compileCode(toCompile)), expected); }); });