Skip to content

Commit e41a8ea

Browse files
committed
add commented-out test, todo investigate
1 parent 81f24f4 commit e41a8ea

File tree

2 files changed

+150
-0
lines changed

2 files changed

+150
-0
lines changed
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
import { tick } from 'svelte';
2+
import { test } from '../../test';
3+
4+
export default test({
5+
skip: true,
6+
async test({ assert, target }) {
7+
const [add, shift] = target.querySelectorAll('button');
8+
9+
add.click();
10+
await tick();
11+
add.click();
12+
await tick();
13+
add.click();
14+
await tick();
15+
16+
// TODO pending count / number of pushes is off
17+
18+
assert.htmlEqual(
19+
target.innerHTML,
20+
`
21+
<button>add</button>
22+
<button>shift</button>
23+
<p>pending=6 values.length=1 values=[1]</p>
24+
<div>not keyed:
25+
<div>1</div>
26+
</div>
27+
<div>keyed:
28+
<div>1</div>
29+
</div>
30+
`
31+
);
32+
33+
shift.click();
34+
await tick();
35+
shift.click();
36+
await tick();
37+
assert.htmlEqual(
38+
target.innerHTML,
39+
`
40+
<button>add</button>
41+
<button>shift</button>
42+
<p>pending=4 values.length=2 values=[1,2]</p>
43+
<div>not keyed:
44+
<div>1</div>
45+
<div>2</div>
46+
</div>
47+
<div>keyed:
48+
<div>1</div>
49+
<div>2</div>
50+
</div>
51+
`
52+
);
53+
54+
shift.click();
55+
await tick();
56+
shift.click();
57+
await tick();
58+
assert.htmlEqual(
59+
target.innerHTML,
60+
`
61+
<button>add</button>
62+
<button>shift</button>
63+
<p>pending=2 values.length=3 values=[1,2,3]</p>
64+
<div>not keyed:
65+
<div>1</div>
66+
<div>2</div>
67+
<div>3</div>
68+
</div>
69+
<div>keyed:
70+
<div>1</div>
71+
<div>2</div>
72+
<div>3</div>
73+
</div>
74+
`
75+
);
76+
77+
shift.click();
78+
await tick();
79+
shift.click();
80+
await tick();
81+
assert.htmlEqual(
82+
target.innerHTML,
83+
`
84+
<button>add</button>
85+
<button>shift</button>
86+
<p>pending=0 values.length=4 values=[1,2,3,4]</p>
87+
<div>not keyed:
88+
<div>1</div>
89+
<div>2</div>
90+
<div>3</div>
91+
<div>4</div>
92+
</div>
93+
<div>keyed:
94+
<div>1</div>
95+
<div>2</div>
96+
<div>3</div>
97+
<div>4</div>
98+
</div>
99+
`
100+
);
101+
}
102+
});
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<script>
2+
let values = $state([1]);
3+
4+
const queue = [];
5+
6+
function push(v) {
7+
if (v === 1) return v;
8+
9+
const p = Promise.withResolvers();
10+
queue.push(() => p.resolve(v));
11+
return p.promise;
12+
}
13+
14+
function shift() {
15+
const fn = queue.shift();
16+
if (fn) fn();
17+
}
18+
19+
function addValue() {
20+
values.push(values.length+1);
21+
}
22+
</script>
23+
24+
<button onclick={addValue}>add</button>
25+
<button onclick={shift}>shift</button>
26+
27+
<p>
28+
pending={$effect.pending()}
29+
values.length={values.length}
30+
values=[{values}]
31+
</p>
32+
33+
<div>
34+
not keyed:
35+
{#each values as v}
36+
<div>
37+
{await push(v)}
38+
</div>
39+
{/each}
40+
</div>
41+
<div>
42+
keyed:
43+
{#each values as v(v)}
44+
<div>
45+
{await push(v)}
46+
</div>
47+
{/each}
48+
</div>

0 commit comments

Comments
 (0)