Add a mega test for async/await

pull/9962/head
Nguyen Tran 3 years ago
parent 58add53eb8
commit 27cb52d8f2

@ -0,0 +1,59 @@
import { test } from '../../test';
export default test({
html: `
<button>Update me!</button>
<p>0</p>
<p>0</p>
<p>0</p>
<p>0</p>
<p>0</p>
<p>0</p>
<p>0</p>
<p>0</p>
<p>0</p>
<p>0</p>
<p>0</p>
<p>0</p>
<p>0</p>
<p>0</p>
<p>0</p>
<p>0</p>
<p>0</p>
<p>0</p>
`,
async test({ assert, target, window }) {
const btn = target.querySelector('button');
const clickEvent = new window.Event('click', { bubbles: true });
await btn?.dispatchEvent(clickEvent);
for (let i = 1; i < 100; i += 1) {
await Promise.resolve();
}
assert.htmlEqual(
target.innerHTML,
`
<button>Update me!</button>
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<p>5</p>
<p>6</p>
<p>7</p>
<p>8</p>
<p>9</p>
<p>10</p>
<p>11</p>
<p>12</p>
<p>13</p>
<p>14</p>
<p>15</p>
<p>16</p>
<p>17</p>
<p>18</p>
`
);
}
});

@ -0,0 +1,62 @@
<script>
let a = $state(0);
let b = $state(0);
let c = $state(0);
let d = $state(0);
let e = $state(0);
let f = $state(0);
let g = $state(0);
let h = $state(0);
let i = $state(0);
let j = $state(0);
let k = $state(0);
let l = $state(0);
let m = $state(0);
let n = $state(0);
let o = $state(0);
let p = $state(0);
let q = $state(0);
let r = $state(0);
const update = async () => {
[a, b] = [1, await Promise.resolve(2)];
({ c = await Promise.resolve(3), d } = { d: 4 });
[e] = [await Promise.resolve(2) + await Promise.resolve(3)];
({ f = false || await Promise.resolve(6) } = {});
let func = Promise.resolve(() => 7);
[g = (await func)()] = [];
let mult = (a, b) => (a * b);
({ h } = { h: mult(2, await Promise.resolve(4))});
[i] = [new Date(await Promise.resolve(9)).getTime()];
[j = "19" ? 10 : await Promise.resolve(11)] = [];
let obj = ({ [await Promise.resolve("prop")]: k } = { prop: 11 });
[l = obj[await Promise.resolve("prop")] + 1] = [];
[m] = [`${1}${await Promise.resolve("3")}`];
[n] = [-(await Promise.resolve(-14))];
[o] = [(console.log(15), await Promise.resolve(15))];
({ anotherprop: p = await Promise.resolve(16) } = obj);
let val;
({ val = (async (x) => await x)(Promise.resolve(17)), q = await val } = []);
({ val = (async function (x) { return await x; })(Promise.resolve(18)), r = await val } = []);
}
</script>
<button on:click={update}>Update me!</button>
<p>{a}</p>
<p>{b}</p>
<p>{c}</p>
<p>{d}</p>
<p>{e}</p>
<p>{f}</p>
<p>{g}</p>
<p>{h}</p>
<p>{i}</p>
<p>{j}</p>
<p>{k}</p>
<p>{l}</p>
<p>{m}</p>
<p>{n}</p>
<p>{o}</p>
<p>{p}</p>
<p>{q}</p>
<p>{r}</p>
Loading…
Cancel
Save