Files
helder/test/fuzzy.test.ts
2026-06-16 06:18:42 +02:00

26 lines
775 B
TypeScript

import { describe, it, expect } from 'vitest'
import { fuzzy } from '../src/renderer/src/fuzzy'
describe('fuzzy', () => {
it('matches greedily from the left (first c, then a, then t)', () => {
expect(fuzzy('cat', 'concatenate')).toEqual([0, 4, 5])
})
it('matches a non-contiguous subsequence', () => {
expect(fuzzy('uc', 'UserController')).toEqual([0, 4])
})
it('is case-insensitive (skips the e to reach r)', () => {
expect(fuzzy('USR', 'user')).toEqual([0, 1, 3])
})
it('returns null when not a subsequence', () => {
expect(fuzzy('xyz', 'abc')).toBeNull()
expect(fuzzy('ca', 'abc')).toBeNull() // order matters
})
it('returns an empty index array for an empty query', () => {
expect(fuzzy('', 'anything')).toEqual([])
})
})