diff options
| author | 2025-12-26 22:39:23 +0800 | |
|---|---|---|
| committer | 2025-12-26 22:39:23 +0800 | |
| commit | 32ca410f4edbff578d71781d943c41573912f476 (patch) | |
| tree | 49f7e1e5602657d23945082fe273fc4802959a40 /tests/debounce.test.ts | |
Initial commitmain
Diffstat (limited to 'tests/debounce.test.ts')
| -rw-r--r-- | tests/debounce.test.ts | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/tests/debounce.test.ts b/tests/debounce.test.ts new file mode 100644 index 0000000..da029a1 --- /dev/null +++ b/tests/debounce.test.ts @@ -0,0 +1,60 @@ +import { expect, test } from 'bun:test'; +import { debounce } from '../src/lib/search/debounce'; + +test('debounce delays function execution', async () => { + const results: number[] = []; + const debouncedFn = debounce((value: number) => results.push(value), 100); + + debouncedFn(1); + debouncedFn(2); + debouncedFn(3); + + expect(results.length).toBe(0); + + await Bun.sleep(150); + expect(results.length).toBe(1); + expect(results[0]).toBe(3); +}); + +test('debounce resets timer on repeated calls', async () => { + const results: number[] = []; + const debouncedFn = debounce((value: number) => results.push(value), 100); + + debouncedFn(1); + await Bun.sleep(50); + debouncedFn(2); + await Bun.sleep(50); + debouncedFn(3); + await Bun.sleep(50); + + expect(results.length).toBe(0); + + await Bun.sleep(150); + expect(results.length).toBe(1); + expect(results[0]).toBe(3); +}); + +test('debounce allows multiple executions over time', async () => { + const results: number[] = []; + const debouncedFn = debounce((value: number) => results.push(value), 50); + + debouncedFn(1); + await Bun.sleep(100); + + debouncedFn(2); + await Bun.sleep(100); + + expect(results.length).toBe(2); + expect(results).toEqual([1, 2]); +}); + +test('debounce passes arguments correctly', async () => { + const results: [string, number][] = []; + const debouncedFn = debounce((text: string, num: number) => results.push([text, num]), 50); + + debouncedFn('hello', 42); + await Bun.sleep(100); + + expect(results.length).toBe(1); + expect(results[0]).toEqual(['hello', 42]); +}); |
