mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
50 lines
1.3 KiB
TypeScript
50 lines
1.3 KiB
TypeScript
import type {FlamegraphFrame} from 'sentry/utils/profiling/flamegraphFrame';
|
|
|
|
import {
|
|
searchFrameFzf,
|
|
searchFrameRegExp,
|
|
} from './flamegraph/flamegraphToolbar/flamegraphSearch';
|
|
|
|
const f = (name: string) => {
|
|
return {
|
|
frame: {
|
|
name,
|
|
},
|
|
} as FlamegraphFrame;
|
|
};
|
|
|
|
describe('fzf', () => {
|
|
it('matches only first occurrence', () => {
|
|
expect(searchFrameFzf(f('foofoo'), new Map(), 'foo')).toMatchObject({
|
|
start: 0,
|
|
end: 3,
|
|
matches: [[0, 3]],
|
|
});
|
|
});
|
|
|
|
it('prefers matches at start', () => {
|
|
expect(searchFrameFzf(f('f'), new Map(), 'f').score).toBeGreaterThan(
|
|
searchFrameFzf(f('of'), new Map(), 'f').score
|
|
);
|
|
});
|
|
|
|
it('penalizes gaps', () => {
|
|
expect(searchFrameFzf(f('f oo'), new Map(), 'foo').score).toBeLessThan(
|
|
searchFrameFzf(f('foo'), new Map(), 'foo').score
|
|
);
|
|
});
|
|
|
|
it('narrows down indices on backtracking', () => {
|
|
// https://github.com/junegunn/fzf/blob/f81feb1e69e5cb75797d50817752ddfe4933cd68/src/algo/algo.go#L13
|
|
expect(searchFrameFzf(f('a_____b___abc__'), new Map(), 'abc').matches).toEqual([
|
|
[10, 13],
|
|
]);
|
|
});
|
|
});
|
|
|
|
describe('regexp', () => {
|
|
it('finds all matches', () => {
|
|
expect(searchFrameRegExp(f('foofoo'), new Map(), 'foo', 'g')).toEqual([0, 3]);
|
|
});
|
|
});
|