|
|
@ -1,6 +1,11 @@
|
|
|
|
import { describe, assert, it } from 'vitest';
|
|
|
|
import { describe, assert, it } from 'vitest';
|
|
|
|
import * as $ from '../../src/internal/client/runtime';
|
|
|
|
import * as $ from '../../src/internal/client/runtime';
|
|
|
|
import { effect, render_effect, user_effect } from '../../src/internal/client/reactivity/effects';
|
|
|
|
import {
|
|
|
|
|
|
|
|
derived,
|
|
|
|
|
|
|
|
effect,
|
|
|
|
|
|
|
|
render_effect,
|
|
|
|
|
|
|
|
user_effect
|
|
|
|
|
|
|
|
} from '../../src/internal/client/reactivity/computations';
|
|
|
|
import { source } from '../../src/internal/client/reactivity/sources';
|
|
|
|
import { source } from '../../src/internal/client/reactivity/sources';
|
|
|
|
import type { ComputationSignal } from '../../src/internal/client/types';
|
|
|
|
import type { ComputationSignal } from '../../src/internal/client/types';
|
|
|
|
|
|
|
|
|
|
|
@ -39,7 +44,7 @@ describe('signals', () => {
|
|
|
|
const log: string[] = [];
|
|
|
|
const log: string[] = [];
|
|
|
|
|
|
|
|
|
|
|
|
let count = source(0);
|
|
|
|
let count = source(0);
|
|
|
|
let double = $.derived(() => $.get(count) * 2);
|
|
|
|
let double = derived(() => $.get(count) * 2);
|
|
|
|
effect(() => {
|
|
|
|
effect(() => {
|
|
|
|
log.push(`${$.get(count)}:${$.get(double)}`);
|
|
|
|
log.push(`${$.get(count)}:${$.get(double)}`);
|
|
|
|
});
|
|
|
|
});
|
|
|
@ -56,7 +61,7 @@ describe('signals', () => {
|
|
|
|
const log: string[] = [];
|
|
|
|
const log: string[] = [];
|
|
|
|
|
|
|
|
|
|
|
|
let count = source(0);
|
|
|
|
let count = source(0);
|
|
|
|
let double = $.derived(() => $.get(count) * 2);
|
|
|
|
let double = derived(() => $.get(count) * 2);
|
|
|
|
|
|
|
|
|
|
|
|
effect(() => {
|
|
|
|
effect(() => {
|
|
|
|
log.push(`A:${$.get(count)}:${$.get(double)}`);
|
|
|
|
log.push(`A:${$.get(count)}:${$.get(double)}`);
|
|
|
@ -77,7 +82,7 @@ describe('signals', () => {
|
|
|
|
const log: string[] = [];
|
|
|
|
const log: string[] = [];
|
|
|
|
|
|
|
|
|
|
|
|
let count = source(0);
|
|
|
|
let count = source(0);
|
|
|
|
let double = $.derived(() => $.get(count) * 2);
|
|
|
|
let double = derived(() => $.get(count) * 2);
|
|
|
|
|
|
|
|
|
|
|
|
effect(() => {
|
|
|
|
effect(() => {
|
|
|
|
log.push(`A:${$.get(double)}`);
|
|
|
|
log.push(`A:${$.get(double)}`);
|
|
|
@ -98,7 +103,7 @@ describe('signals', () => {
|
|
|
|
const log: number[] = [];
|
|
|
|
const log: number[] = [];
|
|
|
|
|
|
|
|
|
|
|
|
let count = source(0);
|
|
|
|
let count = source(0);
|
|
|
|
let double = $.derived(() => $.get(count) * 2);
|
|
|
|
let double = derived(() => $.get(count) * 2);
|
|
|
|
|
|
|
|
|
|
|
|
effect(() => {
|
|
|
|
effect(() => {
|
|
|
|
log.push($.get(double));
|
|
|
|
log.push($.get(double));
|
|
|
@ -116,8 +121,8 @@ describe('signals', () => {
|
|
|
|
const log: number[] = [];
|
|
|
|
const log: number[] = [];
|
|
|
|
|
|
|
|
|
|
|
|
let count = source(0);
|
|
|
|
let count = source(0);
|
|
|
|
let double = $.derived(() => $.get(count) * 2);
|
|
|
|
let double = derived(() => $.get(count) * 2);
|
|
|
|
let quadruple = $.derived(() => $.get(double) * 2);
|
|
|
|
let quadruple = derived(() => $.get(double) * 2);
|
|
|
|
|
|
|
|
|
|
|
|
effect(() => {
|
|
|
|
effect(() => {
|
|
|
|
log.push($.get(quadruple));
|
|
|
|
log.push($.get(quadruple));
|
|
|
@ -140,11 +145,11 @@ describe('signals', () => {
|
|
|
|
|
|
|
|
|
|
|
|
const A = source(0);
|
|
|
|
const A = source(0);
|
|
|
|
const B = source(0);
|
|
|
|
const B = source(0);
|
|
|
|
const C = $.derived(() => ($.get(A) % 2) + ($.get(B) % 2));
|
|
|
|
const C = derived(() => ($.get(A) % 2) + ($.get(B) % 2));
|
|
|
|
const D = $.derived(() => numbers.map((i) => i + ($.get(A) % 2) - ($.get(B) % 2)));
|
|
|
|
const D = derived(() => numbers.map((i) => i + ($.get(A) % 2) - ($.get(B) % 2)));
|
|
|
|
const E = $.derived(() => hard($.get(C) + $.get(A) + $.get(D)[0]!, 'E'));
|
|
|
|
const E = derived(() => hard($.get(C) + $.get(A) + $.get(D)[0]!, 'E'));
|
|
|
|
const F = $.derived(() => hard($.get(D)[0]! && $.get(B), 'F'));
|
|
|
|
const F = derived(() => hard($.get(D)[0]! && $.get(B), 'F'));
|
|
|
|
const G = $.derived(() => $.get(C) + ($.get(C) || $.get(E) % 2) + $.get(D)[0]! + $.get(F));
|
|
|
|
const G = derived(() => $.get(C) + ($.get(C) || $.get(E) % 2) + $.get(D)[0]! + $.get(F));
|
|
|
|
effect(() => {
|
|
|
|
effect(() => {
|
|
|
|
res.push(hard($.get(G), 'H'));
|
|
|
|
res.push(hard($.get(G), 'H'));
|
|
|
|
});
|
|
|
|
});
|
|
|
@ -180,10 +185,10 @@ describe('signals', () => {
|
|
|
|
|
|
|
|
|
|
|
|
let count = source(0);
|
|
|
|
let count = source(0);
|
|
|
|
const read = () => {
|
|
|
|
const read = () => {
|
|
|
|
const x = $.derived(() => ({ count: $.get(count) }));
|
|
|
|
const x = derived(() => ({ count: $.get(count) }));
|
|
|
|
return $.get(x);
|
|
|
|
return $.get(x);
|
|
|
|
};
|
|
|
|
};
|
|
|
|
const derivedCount = $.derived(() => read().count);
|
|
|
|
const derivedCount = derived(() => read().count);
|
|
|
|
user_effect(() => {
|
|
|
|
user_effect(() => {
|
|
|
|
log.push($.get(derivedCount));
|
|
|
|
log.push($.get(derivedCount));
|
|
|
|
});
|
|
|
|
});
|
|
|
@ -208,9 +213,9 @@ describe('signals', () => {
|
|
|
|
|
|
|
|
|
|
|
|
const a = source(0);
|
|
|
|
const a = source(0);
|
|
|
|
const b = source(0);
|
|
|
|
const b = source(0);
|
|
|
|
const c = $.derived(() => {
|
|
|
|
const c = derived(() => {
|
|
|
|
const a_2 = $.derived(() => $.get(a) + '!');
|
|
|
|
const a_2 = derived(() => $.get(a) + '!');
|
|
|
|
const b_2 = $.derived(() => $.get(b) + '?');
|
|
|
|
const b_2 = derived(() => $.get(b) + '?');
|
|
|
|
nested.push(a_2, b_2);
|
|
|
|
nested.push(a_2, b_2);
|
|
|
|
|
|
|
|
|
|
|
|
return { a: $.get(a_2), b: $.get(b_2) };
|
|
|
|
return { a: $.get(a_2), b: $.get(b_2) };
|
|
|
@ -236,7 +241,7 @@ describe('signals', () => {
|
|
|
|
|
|
|
|
|
|
|
|
// outside of test function so that they are unowned signals
|
|
|
|
// outside of test function so that they are unowned signals
|
|
|
|
let count = source(0);
|
|
|
|
let count = source(0);
|
|
|
|
let calc = $.derived(() => {
|
|
|
|
let calc = derived(() => {
|
|
|
|
if ($.get(count) >= 2) {
|
|
|
|
if ($.get(count) >= 2) {
|
|
|
|
return 'limit';
|
|
|
|
return 'limit';
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -265,7 +270,7 @@ describe('signals', () => {
|
|
|
|
};
|
|
|
|
};
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
let no_deps = $.derived(() => {
|
|
|
|
let no_deps = derived(() => {
|
|
|
|
return [];
|
|
|
|
return [];
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
@ -287,7 +292,7 @@ describe('signals', () => {
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
let some_state = source({});
|
|
|
|
let some_state = source({});
|
|
|
|
let some_deps = $.derived(() => {
|
|
|
|
let some_deps = derived(() => {
|
|
|
|
return [$.get(some_state)];
|
|
|
|
return [$.get(some_state)];
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|