61 lines
1.2 KiB
JavaScript
61 lines
1.2 KiB
JavaScript
|
import {expect, test} from 'vitest';
|
||
|
|
||
|
import {first} from '@/swcx/builders.js';
|
||
|
import evaluate from '@/swcx/evaluate.js';
|
||
|
|
||
|
test('evaluates object expression', async () => {
|
||
|
let evaluated;
|
||
|
evaluated = evaluate(await first(`({
|
||
|
["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;
|
||
|
evaluated = evaluate(await first(`({
|
||
|
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;
|
||
|
evaluated = evaluate(await first(`({
|
||
|
foo: 16,
|
||
|
...({bar: 32}),
|
||
|
})`));
|
||
|
expect(evaluated.value)
|
||
|
.to.deep.equal({
|
||
|
foo: 16,
|
||
|
bar: 32,
|
||
|
});
|
||
|
});
|
||
|
|
||
|
test('evaluates async spread expression', async () => {
|
||
|
let evaluated;
|
||
|
evaluated = evaluate(await first(`({
|
||
|
foo: 16,
|
||
|
...(await {bar: 32}),
|
||
|
})`));
|
||
|
expect(evaluated.async)
|
||
|
.to.equal(true);
|
||
|
expect(await evaluated.value)
|
||
|
.to.deep.equal({
|
||
|
foo: 16,
|
||
|
bar: 32,
|
||
|
});
|
||
|
});
|