UNPKG

expression-language

Version:

Javascript implementation of symfony/expression-language

43 lines (42 loc) 4.09 kB
"use strict"; var _ConditionalNode = _interopRequireDefault(require("../ConditionalNode")); var _ConstantNode = _interopRequireDefault(require("../ConstantNode")); var _Compiler = _interopRequireDefault(require("../../Compiler")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function getEvaluateData() { return [[1, new _ConditionalNode.default(new _ConstantNode.default(true), new _ConstantNode.default(1), new _ConstantNode.default(2))], [2, new _ConditionalNode.default(new _ConstantNode.default(false), new _ConstantNode.default(1), new _ConstantNode.default(2))], // Shorthand: condition ? 'yes' => condition ? 'yes' : '' ['yes', new _ConditionalNode.default(new _ConstantNode.default(true), new _ConstantNode.default('yes'), new _ConstantNode.default(''))], ['', new _ConditionalNode.default(new _ConstantNode.default(false), new _ConstantNode.default('yes'), new _ConstantNode.default(''))], // Elvis-like: a ? b => a ? a : b ['left', new _ConditionalNode.default(new _ConstantNode.default('left'), new _ConstantNode.default('left'), new _ConstantNode.default('right'))], ['right', new _ConditionalNode.default(new _ConstantNode.default(false), new _ConstantNode.default(false), new _ConstantNode.default('right'))]]; } function getCompileData() { return [['((true) ? (1) : (2))', new _ConditionalNode.default(new _ConstantNode.default(true), new _ConstantNode.default(1), new _ConstantNode.default(2))], ['((false) ? (1) : (2))', new _ConditionalNode.default(new _ConstantNode.default(false), new _ConstantNode.default(1), new _ConstantNode.default(2))], ['((true) ? ("yes") : (""))', new _ConditionalNode.default(new _ConstantNode.default(true), new _ConstantNode.default('yes'), new _ConstantNode.default(''))], ['((false) ? ("yes") : (""))', new _ConditionalNode.default(new _ConstantNode.default(false), new _ConstantNode.default('yes'), new _ConstantNode.default(''))], ['(("left") ? ("left") : ("right"))', new _ConditionalNode.default(new _ConstantNode.default('left'), new _ConstantNode.default('left'), new _ConstantNode.default('right'))], ['((false) ? (false) : ("right"))', new _ConditionalNode.default(new _ConstantNode.default(false), new _ConstantNode.default(false), new _ConstantNode.default('right'))]]; } function getDumpData() { return [['(true ? 1 : 2)', new _ConditionalNode.default(new _ConstantNode.default(true), new _ConstantNode.default(1), new _ConstantNode.default(2))], ['(false ? 1 : 2)', new _ConditionalNode.default(new _ConstantNode.default(false), new _ConstantNode.default(1), new _ConstantNode.default(2))], ['(true ? "yes" : "")', new _ConditionalNode.default(new _ConstantNode.default(true), new _ConstantNode.default('yes'), new _ConstantNode.default(''))], ['(false ? "yes" : "")', new _ConditionalNode.default(new _ConstantNode.default(false), new _ConstantNode.default('yes'), new _ConstantNode.default(''))], ['("left" ? "left" : "right")', new _ConditionalNode.default(new _ConstantNode.default('left'), new _ConstantNode.default('left'), new _ConstantNode.default('right'))], ['(false ? false : "right")', new _ConditionalNode.default(new _ConstantNode.default(false), new _ConstantNode.default(false), new _ConstantNode.default('right'))]]; } test('evaluate ConditionalNode', () => { for (let evaluateParams of getEvaluateData()) { //console.log("Evaluating: ", evaluateParams); let evaluated = evaluateParams[1].evaluate({}, {}); //console.log("Evaluated: ", evaluated); if (evaluateParams[0] !== null && typeof evaluateParams[0] === "object") { expect(evaluated).toMatchObject(evaluateParams[0]); } else { expect(evaluated).toBe(evaluateParams[0]); } } }); test('compile ConditionalNode', () => { for (let compileParams of getCompileData()) { let compiler = new _Compiler.default({}); compileParams[1].compile(compiler); expect(compiler.getSource()).toBe(compileParams[0]); } }); test('dump ConditionalNode', () => { for (let dumpParams of getDumpData()) { expect(dumpParams[1].dump()).toBe(dumpParams[0]); } });