UNPKG

@onlabsorg/swan-js

Version:

A simple yet powerful expression language written in JavaScript

63 lines (50 loc) 2.1 kB
var expect = require("chai").expect; var swan = require('../index'); describe("SWAN LANGUAGE", () => { require('./types'); require('./interpreter'); describe("modules", () => { require('./modules/math'); require('./modules/json'); require('./modules/time'); require('./modules/debug'); require('./modules/dict'); require('./modules/path'); require('./modules/text'); require('./modules/list'); }); require('./builtins'); describe("Swan API", () => { describe("createContext(...namespaces)", () => { it("should extend the builtins", () => { const builtins = require("../lib/builtins"); const context = swan.createContext({}); for (let key in builtins) { if (key !== "this") { expect(context[key]).to.equal(builtins[key]); } } expect(context.this.unwrap()).to.equal(context); }); it("should contain all the properties of the passed namespaces", () => { const context = swan.createContext({x:10,y:20}, {x:11,z:31}); expect(context.x).to.equal(11); expect(context.y).to.equal(20); expect(context.z).to.equal(31); }); }); describe("parse(expression)(context)", () => { it("should return an evaluate function that returns js values", async () => { const evaluate = swan.parse("2+x"); expect(evaluate).to.be.a("function"); expect(await evaluate({x:10})).to.equal(12); expect(await swan.parse("2+1")()).to.equal(3) }); }); describe("types", () => { it("should contain the exports of the types module", () => { expect(swan.types).to.equal(require('../lib/types')); }); }); }); });