UNPKG

expression-language

Version:

Javascript implementation of symfony/expression-language

79 lines (78 loc) 2.79 kB
"use strict"; var _Compiler = _interopRequireDefault(require("../Compiler")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } test('getFunction looks up a registered function by name', () => { let compiler = new _Compiler.default({ foo: { compiler: () => 'foo()', evaluator: () => 1 } }); expect(compiler.getFunction('foo').evaluator()).toBe(1); }); test('raw appends to the source and getSource/reset expose and clear it', () => { let compiler = new _Compiler.default({}); compiler.raw('abc').raw('def'); expect(compiler.getSource()).toBe('abcdef'); expect(compiler.reset()).toBe(compiler); expect(compiler.getSource()).toBe(''); }); test('compile delegates to the node and returns the compiler for chaining', () => { let compiler = new _Compiler.default({}); let node = { compile: jest.fn() }; expect(compiler.compile(node)).toBe(compiler); expect(node.compile).toHaveBeenCalledWith(compiler); }); test('subcompile isolates and restores the current source', () => { let compiler = new _Compiler.default({}); compiler.raw('outer-'); let node = { compile: c => c.raw('inner') }; let result = compiler.subcompile(node); expect(result).toBe('inner'); expect(compiler.getSource()).toBe('outer-'); }); test('string quotes and escapes the value', () => { let compiler = new _Compiler.default({}); compiler.string('say "hi"'); expect(compiler.getSource()).toBe('"say \\"hi\\""'); }); test('repr writes identifiers raw, without quoting', () => { let compiler = new _Compiler.default({}); compiler.repr('someIdentifier', true); expect(compiler.getSource()).toBe('someIdentifier'); }); test('repr writes integers and floats raw', () => { let compiler = new _Compiler.default({}); compiler.repr(42); expect(compiler.getSource()).toBe('42'); let compiler2 = new _Compiler.default({}); compiler2.repr(3.14); expect(compiler2.getSource()).toBe('3.14'); }); test('repr writes null and booleans as literals', () => { let compiler = new _Compiler.default({}); compiler.repr(null).raw(',').repr(true).raw(',').repr(false); expect(compiler.getSource()).toBe('null,true,false'); }); test('repr writes arrays using array literal syntax', () => { let compiler = new _Compiler.default({}); compiler.repr([1, 'two', true]); expect(compiler.getSource()).toBe('[1, "two", true]'); }); test('repr writes plain objects using object literal syntax', () => { let compiler = new _Compiler.default({}); compiler.repr({ a: 1, b: 'two' }); expect(compiler.getSource()).toBe('{"a":1, "b":"two"}'); }); test('repr writes strings quoted', () => { let compiler = new _Compiler.default({}); compiler.repr('hello'); expect(compiler.getSource()).toBe('"hello"'); });