diff --git a/packages/svelte/tests/runtime-runes/samples/state-onchange-arrays/_config.js b/packages/svelte/tests/runtime-runes/samples/state-onchange-arrays/_config.js new file mode 100644 index 0000000000..7b89518f75 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/state-onchange-arrays/_config.js @@ -0,0 +1,23 @@ +import { flushSync } from 'svelte'; +import { test } from '../../test'; + +export default test({ + async test({ assert, target, logs }) { + const [btn, btn2, btn3] = target.querySelectorAll('button'); + + flushSync(() => { + btn.click(); + }); + assert.deepEqual(logs, ['arr']); + + flushSync(() => { + btn2.click(); + }); + assert.deepEqual(logs, ['arr', 'arr']); + + flushSync(() => { + btn3.click(); + }); + assert.deepEqual(logs, ['arr', 'arr', 'arr']); + } +}); diff --git a/packages/svelte/tests/runtime-runes/samples/state-onchange-arrays/main.svelte b/packages/svelte/tests/runtime-runes/samples/state-onchange-arrays/main.svelte new file mode 100644 index 0000000000..41f8c7a948 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/state-onchange-arrays/main.svelte @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/packages/svelte/tests/runtime-runes/samples/state-onchange-classes/_config.js b/packages/svelte/tests/runtime-runes/samples/state-onchange-classes/_config.js new file mode 100644 index 0000000000..acb7054cc4 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/state-onchange-classes/_config.js @@ -0,0 +1,27 @@ +import { flushSync } from 'svelte'; +import { test } from '../../test'; + +export default test({ + async test({ assert, target, logs }) { + const [btn, btn2, btn3] = target.querySelectorAll('button'); + + assert.deepEqual(logs, ['constructor count', 'constructor proxy']); + + logs.length = 0; + + flushSync(() => { + btn.click(); + }); + assert.deepEqual(logs, ['class count']); + + flushSync(() => { + btn2.click(); + }); + assert.deepEqual(logs, ['class count', 'class proxy']); + + flushSync(() => { + btn3.click(); + }); + assert.deepEqual(logs, ['class count', 'class proxy', 'class proxy']); + } +}); diff --git a/packages/svelte/tests/runtime-runes/samples/state-onchange-classes/main.svelte b/packages/svelte/tests/runtime-runes/samples/state-onchange-classes/main.svelte new file mode 100644 index 0000000000..a42c1c1245 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/state-onchange-classes/main.svelte @@ -0,0 +1,37 @@ + + + + + \ No newline at end of file diff --git a/packages/svelte/tests/runtime-runes/samples/state-onchange-proxies/_config.js b/packages/svelte/tests/runtime-runes/samples/state-onchange-proxies/_config.js new file mode 100644 index 0000000000..17d5205d17 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/state-onchange-proxies/_config.js @@ -0,0 +1,18 @@ +import { flushSync } from 'svelte'; +import { test } from '../../test'; + +export default test({ + async test({ assert, target, logs }) { + const [btn, btn2] = target.querySelectorAll('button'); + + flushSync(() => { + btn.click(); + }); + assert.deepEqual(logs, ['proxy']); + + flushSync(() => { + btn2.click(); + }); + assert.deepEqual(logs, ['proxy', 'proxy']); + } +}); diff --git a/packages/svelte/tests/runtime-runes/samples/state-onchange-proxies/main.svelte b/packages/svelte/tests/runtime-runes/samples/state-onchange-proxies/main.svelte new file mode 100644 index 0000000000..5340b23159 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/state-onchange-proxies/main.svelte @@ -0,0 +1,10 @@ + + + + diff --git a/packages/svelte/tests/runtime-runes/samples/state-onchange/_config.js b/packages/svelte/tests/runtime-runes/samples/state-onchange/_config.js index 82625ded0a..91d469a1e9 100644 --- a/packages/svelte/tests/runtime-runes/samples/state-onchange/_config.js +++ b/packages/svelte/tests/runtime-runes/samples/state-onchange/_config.js @@ -3,89 +3,11 @@ import { test } from '../../test'; export default test({ async test({ assert, target, logs }) { - const [btn, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9] = target.querySelectorAll('button'); - - assert.deepEqual(logs, ['constructor count', 'constructor proxy']); - - logs.length = 0; + const btn = target.querySelector('button'); flushSync(() => { - btn.click(); + btn?.click(); }); assert.deepEqual(logs, ['count']); - - flushSync(() => { - btn2.click(); - }); - assert.deepEqual(logs, ['count', 'proxy']); - - flushSync(() => { - btn3.click(); - }); - assert.deepEqual(logs, ['count', 'proxy', 'proxy']); - - flushSync(() => { - btn4.click(); - }); - assert.deepEqual(logs, ['count', 'proxy', 'proxy', 'class count']); - - flushSync(() => { - btn5.click(); - }); - assert.deepEqual(logs, ['count', 'proxy', 'proxy', 'class count', 'class proxy']); - - flushSync(() => { - btn6.click(); - }); - assert.deepEqual(logs, [ - 'count', - 'proxy', - 'proxy', - 'class count', - 'class proxy', - 'class proxy' - ]); - - flushSync(() => { - btn7.click(); - }); - assert.deepEqual(logs, [ - 'count', - 'proxy', - 'proxy', - 'class count', - 'class proxy', - 'class proxy', - 'arr' - ]); - - flushSync(() => { - btn8.click(); - }); - assert.deepEqual(logs, [ - 'count', - 'proxy', - 'proxy', - 'class count', - 'class proxy', - 'class proxy', - 'arr', - 'arr' - ]); - - flushSync(() => { - btn9.click(); - }); - assert.deepEqual(logs, [ - 'count', - 'proxy', - 'proxy', - 'class count', - 'class proxy', - 'class proxy', - 'arr', - 'arr', - 'arr' - ]); } }); diff --git a/packages/svelte/tests/runtime-runes/samples/state-onchange/main.svelte b/packages/svelte/tests/runtime-runes/samples/state-onchange/main.svelte index 565e8477dc..8dc265b1df 100644 --- a/packages/svelte/tests/runtime-runes/samples/state-onchange/main.svelte +++ b/packages/svelte/tests/runtime-runes/samples/state-onchange/main.svelte @@ -4,61 +4,6 @@ console.log("count"); } }) - - let proxy = $state({count: 0}, { - onchange(){ - console.log("proxy"); - } - }) - - class Test{ - count = $state(0, { - onchange(){ - console.log("class count"); - } - }) - proxy = $state({count: 0}, { - onchange(){ - console.log("class proxy"); - } - }) - - #in_constructor = $state(0, { - onchange(){ - console.log("constructor count"); - } - }); - - #in_constructor_proxy = $state({ count: 0 }, { - onchange(){ - console.log("constructor proxy"); - } - }); - - - constructor(){ - this.#in_constructor = 42; - this.#in_constructor_proxy.count++; - } - } - - const class_test = new Test(); - - let arr = $state([0,1,2], { - onchange(){ - console.log("arr"); - } - }) - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file