deno.land / x / solid_signals@solid-signals@1.3.7 / src / utils / signalArray.test.ts
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275import { createRoot, createSignal } from "solid-js";import { suite } from "uvu";import * as assert from "uvu/assert";import { createArray, createHistory } from "../signals";import { signalArray } from "./signalArray";
const test1 = suite("signalMap: single-level");const testn = suite("signalMap: multi-level");
test1("Basic", () => { createRoot((dispose) => { const [array, setArray] = signalArray( Array.from({ length: 5 }, (_, i) => createSignal(i)) );
assert.equal( array.map((item) => item()), [0, 1, 2, 3, 4] );
for (const setItem of setArray) { setItem((item) => item * 2); }
assert.equal( array.map((item) => item()), [0, 2, 4, 6, 8] );
dispose(); });});
testn("Basic", () => { createRoot((dispose) => { const [array, setArray] = signalArray( Array.from({ length: 3 }, (_, i) => Array.from({ length: 3 }, (_, j) => createSignal(i * 3 + j)) ) );
assert.equal( array.map((inner) => inner.map((item) => item())), [ [0, 1, 2], [3, 4, 5], [6, 7, 8], ] );
for (const setItem of setArray.flat()) { setItem((item) => item * 2); }
assert.equal( array.map((inner) => inner.map((item) => item())), [ [0, 2, 4], [6, 8, 10], [12, 14, 16], ] );
dispose(); });});
test1("Extended signals", () => { createRoot((dispose) => { const [array, setArray] = signalArray( Array.from({ length: 5 }, (_, i) => createArray([i])) );
assert.equal( array.map((item) => item()), [[0], [1], [2], [3], [4]] );
for (const setItem of setArray) { setItem.push(0); }
assert.equal( array.map((item) => item()), // prettier-ignore [[0, 0], [1, 0], [2, 0], [3, 0], [4, 0]] );
dispose(); });});
testn("Extended signals", () => { createRoot((dispose) => { const [array, setArray] = signalArray( Array.from({ length: 3 }, (_, i) => Array.from({ length: 3 }, (_, j) => createArray([i * 3 + j])) ) );
assert.equal( array.map((inner) => inner.map((item) => item())), [ [[0], [1], [2]], [[3], [4], [5]], [[6], [7], [8]], ] );
for (const setItem of setArray.flat()) { setItem.push(0); }
assert.equal( array.map((inner) => inner.map((item) => item())), // prettier-ignore [ [[0, 0], [1, 0], [2, 0]], [[3, 0], [4, 0], [5, 0]], [[6, 0], [7, 0], [8, 0]], ] );
dispose(); });});
test1("Works with composed signals", () => { createRoot((dispose) => { const [array, setArray] = signalArray( Array.from({ length: 5 }, (_, i) => createHistory.wrap(createArray([i]))) );
assert.equal( array.map((item) => item()), [[0], [1], [2], [3], [4]] ); assert.equal( array.map((item) => item.history()), [[[0]], [[1]], [[2]], [[3]], [[4]]] );
for (const setItem of setArray) { setItem.push(0); }
assert.equal( array.map((item) => item()), // prettier-ignore [[0, 0], [1, 0], [2, 0], [3, 0], [4, 0]] ); assert.equal( array.map((item) => item.history()), // prettier-ignore [[[0], [0, 0]], [[1], [1, 0]], [[2], [2, 0]], [[3], [3, 0]], [[4], [4, 0]]] );
for (const setItem of setArray) { assert.is(setItem.history.back(), true); }
assert.equal( array.map((item) => item()), [[0], [1], [2], [3], [4]] ); assert.equal( array.map((item) => item.history()), [[[0]], [[1]], [[2]], [[3]], [[4]]] ); assert.equal( array.map((item) => item.history.forward()), // prettier-ignore [[[0, 0]], [[1, 0]], [[2, 0]], [[3, 0]], [[4, 0]]] );
for (const setItem of setArray) { assert.is(setItem.history.back(), false); }
dispose(); });});
testn("Works with composed signals", () => { createRoot((dispose) => { const [array, setArray] = signalArray( Array.from({ length: 3 }, (_, i) => Array.from({ length: 3 }, (_, j) => createHistory.wrap(createArray([i * 3 + j])) ) ) );
assert.equal( array.map((inner) => inner.map((item) => item())), [ [[0], [1], [2]], [[3], [4], [5]], [[6], [7], [8]], ] ); assert.equal( array.map((inner) => inner.map((item) => item.history())), [ [[[0]], [[1]], [[2]]], [[[3]], [[4]], [[5]]], [[[6]], [[7]], [[8]]], ] );
for (const setItem of setArray.flat()) { setItem.push(0); }
assert.equal( array.map((inner) => inner.map((item) => item())), // prettier-ignore [ [[0, 0], [1, 0], [2, 0]], [[3, 0], [4, 0], [5, 0]], [[6, 0], [7, 0], [8, 0]], ] );
assert.equal( array.map((inner) => inner.map((item) => item.history())), // prettier-ignore [ [[[0], [0, 0]], [[1], [1, 0]], [[2], [2, 0]]], [[[3], [3, 0]], [[4], [4, 0]], [[5], [5, 0]]], [[[6], [6, 0]], [[7], [7, 0]], [[8], [8, 0]]], ] );
for (const setItem of setArray.flat()) { assert.is(setItem.history.back(), true); }
assert.equal( array.map((inner) => inner.map((item) => item())), [ [[0], [1], [2]], [[3], [4], [5]], [[6], [7], [8]], ] ); assert.equal( array.map((inner) => inner.map((item) => item.history())), [ [[[0]], [[1]], [[2]]], [[[3]], [[4]], [[5]]], [[[6]], [[7]], [[8]]], ] ); assert.equal( array.map((inner) => inner.map((item) => item.history.forward())), // prettier-ignore [ [[[0, 0]], [[1, 0]], [[2, 0]]], [[[3, 0]], [[4, 0]], [[5, 0]]], [[[6, 0]], [[7, 0]], [[8, 0]]], ] );
for (const setItem of setArray.flat()) { assert.is(setItem.history.back(), false); }
dispose(); });});
test1.run();testn.run();
Version Info