Ajout FishPeper

This commit is contained in:
Serge NOEL
2026-04-21 12:19:15 +02:00
parent 6744da3f88
commit 0c361a2440
2160 changed files with 589301 additions and 1 deletions

View File

@@ -0,0 +1,124 @@
import { test } from 'tap';
import evaluateExpression from '../src/server/lib/evaluate-expression';
test('resolved', (t) => {
const src = '[1,2,3+4*10+(n||6),foo(3+5),obj[""+"x"].y]';
const res = evaluateExpression(src, {
n: false,
foo: function (x) {
return x * 100;
},
obj: {
x: {
y: 555
}
}
});
t.deepEqual(res, [1, 2, 49, 800, 555]);
t.end();
});
test('unresolved', (t) => {
const src = '[1,2,3+4*10*z+n,foo(3+5),obj[""+"x"].y]';
const res = evaluateExpression(src, {
n: 6,
foo: function (x) {
return x * 100;
},
obj: {
x: {
y: 555
}
}
});
t.equal(res, undefined);
t.end();
});
test('boolean', (t) => {
const src = '[ 1===2+3-16/4, [2]==2, [2]!==2, [2]!==[2] ]';
t.deepEqual(evaluateExpression(src), [true, true, true, true]);
t.end();
});
test('array methods', (t) => {
const src = '[1, 2, 3].map(function(n) { return n * 2 })';
t.deepEqual(evaluateExpression(src), [2, 4, 6]);
t.end();
});
test('array methods with vars', (t) => {
const src = '[1, 2, 3].map(function(n) { return n * x })';
t.deepEqual(evaluateExpression(src, { x: 2 }), [2, 4, 6]);
t.end();
});
test('evaluate this', (t) => {
const src = 'this.x + this.y.z';
const res = evaluateExpression(src, {
'this': {
x: 1,
y: {
z: 100
}
}
});
t.equal(res, 101);
t.end();
});
test('unresolved function expression', (t) => {
const src = '(function(){console.log("Not Good")})';
const res = evaluateExpression(src);
t.equal(res, undefined);
t.end();
});
test('immediate-invoked function expression with a return value', (t) => {
const src = '(function(){ return !!x; }(x))';
const res = evaluateExpression(src, { x: 1 });
t.equal(res, true);
t.end();
});
test('function property', (t) => {
const src = '[1,2,3+4*10+n,beep.boop(3+5),obj[""+"x"].y]';
const res = evaluateExpression(src, {
n: 6,
beep: {
boop: function (x) {
return x * 100;
}
},
obj: {
x: {
y: 555
}
}
});
t.deepEqual(res, [1, 2, 49, 800, 555]);
t.end();
});
test('untagged template strings', (t) => {
const src = '`${1},${2 + n},${"4,5"}`'; // eslint-disable-line no-template-curly-in-string
const res = evaluateExpression(src, {
n: 6
});
t.deepEqual(res, '1,8,4,5');
t.end();
});
test('tagged template strings', (t) => {
const src = 'taggedTemplate`${1},${2 + n},${"4,5"}`'; // eslint-disable-line no-template-curly-in-string
const res = evaluateExpression(src, {
taggedTemplate: function (strings, ...values) {
t.deepEqual(strings, ['', ',', ',', '']);
t.deepEqual(values, [1, 8, '4,5']);
return 'foo';
},
n: 6
});
t.deepEqual(res, 'foo');
t.end();
});