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, }); });