import { Evaluator, Expression, Scope } from '../dist/index.js'; const e = new Evaluator(); const s = new Scope({}, false); const st = new Scope({}, true); describe('Evaluator.template should work correctly', () => { it('should eval null', () => { const result = e.template(null, s); expect(result).toBe(''); }); it('should eval undefined', () => { const result = e.template(undefined, s); expect(result).toBe(''); }); it('should eval empty', () => { const result = e.template(''); expect(result).toBe(''); }); it('should eval const', () => { const result = e.template('12', s); expect(result).toBe('12'); }); it('should eval exp', () => { const result = e.template('$(1 + 1)', s); expect(result).toBe('2'); }); it('should eval error', () => { const result = e.template('$(exp+++)', s); expect(result).toBe(''); }); it('should eval error with throws', () => { expect(() => e.template('$(exp+++)', st)).toThrow(/Failed to compile/); }); it('should eval error with no scope', () => { expect(() => e.template('$(exp+++)', null)).toThrow(/Failed to compile/); }); it('should eval bad type', () => { // @ts-expect-error 测试错误输入 expect(() => e.template(new Date(0), s)).toThrow(TypeError); }); it('should eval bad return', () => { expect(e.template('${return 0;}', s)).toBe(''); }); it('should eval bad return with throws', () => { expect(() => e.template('${return 0;}', st)).toThrow(TypeError); }); });