silphius/app/astride/evaluators/object.test.js

61 lines
1.2 KiB
JavaScript
Raw Normal View History

2024-06-16 08:01:01 -05:00
import {expect, test} from 'vitest';
import evaluate from '@/astride/evaluate.js';
import expression from '@/astride/test/expression.js';
2024-06-16 08:01:01 -05:00
test('evaluates object expression', async () => {
let evaluated;
2024-06-18 21:46:51 -05:00
evaluated = evaluate(await expression(`({
2024-06-16 08:01:01 -05:00
["foo"]: 16,
bar: 32,
'baz': 64,
})`));
expect(evaluated.value)
.to.deep.equal({
foo: 16,
bar: 32,
baz: 64,
});
});
test('evaluates async object expression', async () => {
let evaluated;
2024-06-18 21:46:51 -05:00
evaluated = evaluate(await expression(`({
2024-06-16 08:01:01 -05:00
foo: await 32,
})`));
expect(evaluated.async)
.to.equal(true);
expect(await evaluated.value)
.to.deep.equal({
foo: 32,
});
});
test('evaluates object spread expression', async () => {
let evaluated;
2024-06-18 21:46:51 -05:00
evaluated = evaluate(await expression(`({
2024-06-16 08:01:01 -05:00
foo: 16,
...({bar: 32}),
})`));
expect(evaluated.value)
.to.deep.equal({
foo: 16,
bar: 32,
});
});
test('evaluates async spread expression', async () => {
let evaluated;
2024-06-18 21:46:51 -05:00
evaluated = evaluate(await expression(`({
2024-06-16 08:01:01 -05:00
foo: 16,
...(await {bar: 32}),
})`));
expect(evaluated.async)
.to.equal(true);
expect(await evaluated.value)
.to.deep.equal({
foo: 16,
bar: 32,
});
});