Skip to content

Commit 12e0539

Browse files
add test for cache hit fix in search by file name quick pick
1 parent 328d8e1 commit 12e0539

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

src/vs/base/test/common/fuzzyScorer.test.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import * as assert from 'assert';
7-
import { compareItemsByFuzzyScore, FuzzyScore, FuzzyScore2, IItemAccessor, IItemScore, pieceToQuery, prepareQuery, scoreFuzzy, scoreFuzzy2, scoreItemFuzzy } from 'vs/base/common/fuzzyScorer';
7+
import { compareItemsByFuzzyScore, FuzzyScore, FuzzyScore2, FuzzyScorerCache, IItemAccessor, IItemScore, pieceToQuery, prepareQuery, scoreFuzzy, scoreFuzzy2, scoreItemFuzzy } from 'vs/base/common/fuzzyScorer';
88
import { Schemas } from 'vs/base/common/network';
99
import { basename, dirname, posix, sep, win32 } from 'vs/base/common/path';
1010
import { isWindows } from 'vs/base/common/platform';
@@ -88,8 +88,8 @@ function _doScore2(target: string, query: string, matchOffset: number = 0): Fuzz
8888
return scoreFuzzy2(target, preparedQuery, 0, matchOffset);
8989
}
9090

91-
function scoreItem<T>(item: T, query: string, allowNonContiguousMatches: boolean, accessor: IItemAccessor<T>): IItemScore {
92-
return scoreItemFuzzy(item, prepareQuery(query), allowNonContiguousMatches, accessor, Object.create(null));
91+
function scoreItem<T>(item: T, query: string, allowNonContiguousMatches: boolean, accessor: IItemAccessor<T>, cache: FuzzyScorerCache = Object.create(null)): IItemScore {
92+
return scoreItemFuzzy(item, prepareQuery(query), allowNonContiguousMatches, accessor, cache);
9393
}
9494

9595
function compareItemsByScore<T>(itemA: T, itemB: T, query: string, allowNonContiguousMatches: boolean, accessor: IItemAccessor<T>): number {
@@ -268,6 +268,17 @@ suite('Fuzzy Scorer', () => {
268268
assert.strictEqual(res4.descriptionMatch![1].end, 14);
269269
});
270270

271+
test('scoreItem - multiple with cache yields different results', function () {
272+
const resource = URI.file('/xyz/some/path/someFile123.txt');
273+
const cache = {};
274+
let res1 = scoreItem(resource, 'xyz sm', true, ResourceAccessor, cache);
275+
assert.ok(res1.score);
276+
277+
// from the cache's perspective this should be a totally different query
278+
let res2 = scoreItem(resource, 'xyz "sm"', true, ResourceAccessor, cache);
279+
assert.ok(!res2.score);
280+
});
281+
271282
test('scoreItem - invalid input', function () {
272283

273284
let res = scoreItem(null, null!, true, ResourceAccessor);

0 commit comments

Comments
 (0)