Skip to content

Commit 752204a

Browse files
committed
Add is_async tests
1 parent 2456f09 commit 752204a

File tree

12 files changed

+306
-0
lines changed

12 files changed

+306
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { test } from '../../test';
2+
import { setTimeout } from 'timers/promises';
3+
4+
export default test({
5+
html: `
6+
<button>Update me!</button>
7+
<p>5</p>
8+
<p>7</p>
9+
<p>9</p>
10+
<p>12</p>
11+
`,
12+
13+
async test({ assert, target, window }) {
14+
const btn = target.querySelector('button');
15+
const clickEvent = new window.Event('click', { bubbles: true });
16+
await btn?.dispatchEvent(clickEvent);
17+
18+
await setTimeout(100);
19+
20+
assert.htmlEqual(
21+
target.innerHTML,
22+
`
23+
<button>Update me!</button>
24+
<p>12</p>
25+
<p>19</p>
26+
<p>15</p>
27+
<p>7</p>
28+
`
29+
);
30+
}
31+
});
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<script>
2+
let a = $state(5);
3+
let b = $state(7);
4+
let c = $state(9);
5+
let d = $state(12);
6+
7+
const update = async () => {
8+
[a, b, c, d] = [
9+
12,
10+
19,
11+
await new Promise((resolve) => setTimeout(() => resolve(15), 100)),
12+
7,
13+
];
14+
}
15+
</script>
16+
17+
<button on:click={update}>Update me!</button>
18+
<p>{a}</p>
19+
<p>{b}</p>
20+
<p>{c}</p>
21+
<p>{d}</p>
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { test } from '../../test';
2+
import { setTimeout } from 'timers/promises';
3+
4+
export default test({
5+
html: `
6+
<button>Update me!</button>
7+
<p>5</p>
8+
<p>7</p>
9+
<p>9</p>
10+
<p>12</p>
11+
`,
12+
13+
async test({ assert, target, window }) {
14+
const btn = target.querySelector('button');
15+
const clickEvent = new window.Event('click', { bubbles: true });
16+
await btn?.dispatchEvent(clickEvent);
17+
18+
await setTimeout(100);
19+
20+
assert.htmlEqual(
21+
target.innerHTML,
22+
`
23+
<button>Update me!</button>
24+
<p>12</p>
25+
<p>19</p>
26+
<p>15</p>
27+
<p>7</p>
28+
`
29+
);
30+
}
31+
});
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<script>
2+
let a = $state(5);
3+
let b = $state(7);
4+
let c = $state(9);
5+
let d = $state(12);
6+
7+
const update = async () => {
8+
({ a, b = (10 + await Promise.resolve(9)), c, d } = { a: 12, c: 15, d: 7 });
9+
}
10+
</script>
11+
12+
<button on:click={update}>Update me!</button>
13+
<p>{a}</p>
14+
<p>{b}</p>
15+
<p>{c}</p>
16+
<p>{d}</p>
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { test } from '../../test';
2+
import { setTimeout } from 'timers/promises';
3+
4+
export default test({
5+
html: `
6+
<button>Update me!</button>
7+
<p>5</p>
8+
<p>7</p>
9+
<p>9</p>
10+
<p>12</p>
11+
`,
12+
13+
async test({ assert, target, window }) {
14+
const btn = target.querySelector('button');
15+
const clickEvent = new window.Event('click', { bubbles: true });
16+
await btn?.dispatchEvent(clickEvent);
17+
18+
await setTimeout(100);
19+
20+
assert.htmlEqual(
21+
target.innerHTML,
22+
`
23+
<button>Update me!</button>
24+
<p>12</p>
25+
<p>19</p>
26+
<p>15</p>
27+
<p>7</p>
28+
`
29+
);
30+
}
31+
});
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<script>
2+
let a = $state(5);
3+
let b = $state(7);
4+
let c = $state(9);
5+
let d = $state(12);
6+
7+
const update = async () => {
8+
({ a, b = (10 + 9), c, d } = { a: 12, c: await Promise.resolve(15), d: 7 });
9+
}
10+
</script>
11+
12+
<button on:click={update}>Update me!</button>
13+
<p>{a}</p>
14+
<p>{b}</p>
15+
<p>{c}</p>
16+
<p>{d}</p>
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { test } from '../../test';
2+
import { setTimeout } from 'timers/promises';
3+
4+
export default test({
5+
html: `
6+
<button>Update me!</button>
7+
<p>5</p>
8+
<p>7</p>
9+
<p>9</p>
10+
<p>12</p>
11+
`,
12+
13+
async test({ assert, target, window }) {
14+
const btn = target.querySelector('button');
15+
const clickEvent = new window.Event('click', { bubbles: true });
16+
await btn?.dispatchEvent(clickEvent);
17+
18+
await setTimeout(100);
19+
20+
assert.htmlEqual(
21+
target.innerHTML,
22+
`
23+
<button>Update me!</button>
24+
<p>12</p>
25+
<p>19</p>
26+
<p>15</p>
27+
<p>7</p>
28+
`
29+
);
30+
}
31+
});
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<script>
2+
let a = $state(5);
3+
let b = $state(7);
4+
let c = $state(9);
5+
let d = $state(12);
6+
7+
let z = $state(null);
8+
9+
const update = async () => {
10+
// @ts-ignore
11+
[c] = ({ a = (console.log(11), await Promise.resolve(11)), b = 19 }) = [15]);
12+
({ d } = { d: ((a, b) => a + b)(1, await Promise.resolve(6)) });
13+
}
14+
</script>
15+
16+
<button on:click={update}>Update me!</button>
17+
<p>{a}</p>
18+
<p>{b}</p>
19+
<p>{c}</p>
20+
<p>{d}</p>
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { test } from '../../test';
2+
import { setTimeout } from 'timers/promises';
3+
4+
export default test({
5+
html: `
6+
<button>Update me!</button>
7+
<p>5</p>
8+
<p>7</p>
9+
<p>9</p>
10+
<p>12</p>
11+
`,
12+
13+
async test({ assert, target, window }) {
14+
const btn = target.querySelector('button');
15+
const clickEvent = new window.Event('click', { bubbles: true });
16+
await btn?.dispatchEvent(clickEvent);
17+
18+
await setTimeout(100);
19+
20+
assert.htmlEqual(
21+
target.innerHTML,
22+
`
23+
<button>Update me!</button>
24+
<p>12</p>
25+
<p>19</p>
26+
<p>15</p>
27+
<p>7</p>
28+
`
29+
);
30+
}
31+
});
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<script>
2+
let a = $state("5");
3+
let b = $state("7");
4+
let c = $state("9");
5+
let d = $state("12");
6+
let e = $state(null);
7+
8+
let f = Promise.resolve(() => "7");
9+
10+
const update = async () => {
11+
// @ts-ignore
12+
[a = `${1}${await Promise.resolve(2)}`] = [];
13+
[b = "19" ? "19" : await Promise.resolve("20")] = [];
14+
([c = "15"] = ([d = (await f)()] = ({ e = async (x) => await x } = [])));
15+
}
16+
</script>
17+
18+
<button on:click={update}>Update me!</button>
19+
<p>{a}</p>
20+
<p>{b}</p>
21+
<p>{c}</p>
22+
<p>{d}</p>
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { test } from '../../test';
2+
import { setTimeout } from 'timers/promises';
3+
4+
export default test({
5+
html: `
6+
<button>Update me!</button>
7+
<p>5</p>
8+
<p>7</p>
9+
<p>9</p>
10+
<p>12</p>
11+
`,
12+
13+
async test({ assert, target, window }) {
14+
const btn = target.querySelector('button');
15+
const clickEvent = new window.Event('click', { bubbles: true });
16+
await btn?.dispatchEvent(clickEvent);
17+
18+
await setTimeout(100);
19+
20+
assert.htmlEqual(
21+
target.innerHTML,
22+
`
23+
<button>Update me!</button>
24+
<p>12</p>
25+
<p>19</p>
26+
<p>15</p>
27+
<p>7</p>
28+
`
29+
);
30+
}
31+
});
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<script>
2+
let a = $state(5);
3+
let b = $state(7);
4+
let c = $state(9);
5+
let d = $state(12);
6+
7+
let z = {
8+
a: Promise.resolve(12),
9+
b: Promise.resolve(-19),
10+
c: Promise.resolve(0),
11+
d: Promise.resolve(7),
12+
}
13+
14+
const update = async () => {
15+
[a = await z.a] = [];
16+
[b = -(await z.b)] = [];
17+
[c, ...{ d = function () {} && (await z.c || await z.d) }] = [15];
18+
}
19+
</script>
20+
21+
<button on:click={update}>Update me!</button>
22+
<p>{a}</p>
23+
<p>{b}</p>
24+
<p>{c}</p>
25+
<p>{d}</p>

0 commit comments

Comments
 (0)