mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-09 09:42:34 -05:00
Merge from vscode 2e5312cd61ff99c570299ecc122c52584265eda2
This commit is contained in:
committed by
Anthony Dresser
parent
3603f55d97
commit
7f1d8fc32f
@@ -6,7 +6,7 @@
|
||||
import * as assert from 'assert';
|
||||
import * as scorer from 'vs/base/common/fuzzyScorer';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { basename, dirname, sep } from 'vs/base/common/path';
|
||||
import { basename, dirname, sep, posix, win32 } from 'vs/base/common/path';
|
||||
import { isWindows } from 'vs/base/common/platform';
|
||||
import { Schemas } from 'vs/base/common/network';
|
||||
|
||||
@@ -27,6 +27,40 @@ class ResourceAccessorClass implements scorer.IItemAccessor<URI> {
|
||||
|
||||
const ResourceAccessor = new ResourceAccessorClass();
|
||||
|
||||
class ResourceWithSlashAccessorClass implements scorer.IItemAccessor<URI> {
|
||||
|
||||
getItemLabel(resource: URI): string {
|
||||
return basename(resource.fsPath);
|
||||
}
|
||||
|
||||
getItemDescription(resource: URI): string {
|
||||
return posix.normalize(dirname(resource.path));
|
||||
}
|
||||
|
||||
getItemPath(resource: URI): string {
|
||||
return posix.normalize(resource.path);
|
||||
}
|
||||
}
|
||||
|
||||
const ResourceWithSlashAccessor = new ResourceWithSlashAccessorClass();
|
||||
|
||||
class ResourceWithBackslashAccessorClass implements scorer.IItemAccessor<URI> {
|
||||
|
||||
getItemLabel(resource: URI): string {
|
||||
return basename(resource.fsPath);
|
||||
}
|
||||
|
||||
getItemDescription(resource: URI): string {
|
||||
return win32.normalize(dirname(resource.path));
|
||||
}
|
||||
|
||||
getItemPath(resource: URI): string {
|
||||
return win32.normalize(resource.path);
|
||||
}
|
||||
}
|
||||
|
||||
const ResourceWithBackslashAccessor = new ResourceWithBackslashAccessorClass();
|
||||
|
||||
class NullAccessorClass implements scorer.IItemAccessor<URI> {
|
||||
|
||||
getItemLabel(resource: URI): string {
|
||||
@@ -48,29 +82,24 @@ function _doScore(target: string, query: string, fuzzy: boolean): scorer.FuzzySc
|
||||
return scorer.scoreFuzzy(target, preparedQuery.normalized, preparedQuery.normalizedLowercase, fuzzy);
|
||||
}
|
||||
|
||||
function _doScore2(target: string, query: string): scorer.FuzzyScore2 {
|
||||
function _doScore2(target: string, query: string, matchOffset: number = 0): scorer.FuzzyScore2 {
|
||||
const preparedQuery = scorer.prepareQuery(query);
|
||||
|
||||
return scorer.scoreFuzzy2(target, preparedQuery);
|
||||
return scorer.scoreFuzzy2(target, preparedQuery, 0, matchOffset);
|
||||
}
|
||||
|
||||
function scoreItem<T>(item: T, query: string, fuzzy: boolean, accessor: scorer.IItemAccessor<T>, cache: scorer.FuzzyScorerCache): scorer.IItemScore {
|
||||
return scorer.scoreItemFuzzy(item, scorer.prepareQuery(query), fuzzy, accessor, cache);
|
||||
function scoreItem<T>(item: T, query: string, fuzzy: boolean, accessor: scorer.IItemAccessor<T>): scorer.IItemScore {
|
||||
return scorer.scoreItemFuzzy(item, scorer.prepareQuery(query), fuzzy, accessor, Object.create(null));
|
||||
}
|
||||
|
||||
function compareItemsByScore<T>(itemA: T, itemB: T, query: string, fuzzy: boolean, accessor: scorer.IItemAccessor<T>, cache: scorer.FuzzyScorerCache): number {
|
||||
return scorer.compareItemsByFuzzyScore(itemA, itemB, scorer.prepareQuery(query), fuzzy, accessor, cache);
|
||||
function compareItemsByScore<T>(itemA: T, itemB: T, query: string, fuzzy: boolean, accessor: scorer.IItemAccessor<T>): number {
|
||||
return scorer.compareItemsByFuzzyScore(itemA, itemB, scorer.prepareQuery(query), fuzzy, accessor, Object.create(null));
|
||||
}
|
||||
|
||||
const NullAccessor = new NullAccessorClass();
|
||||
let cache: scorer.FuzzyScorerCache = Object.create(null);
|
||||
|
||||
suite('Fuzzy Scorer', () => {
|
||||
|
||||
setup(() => {
|
||||
cache = Object.create(null);
|
||||
});
|
||||
|
||||
test('score (fuzzy)', function () {
|
||||
const target = 'HeLlo-World';
|
||||
|
||||
@@ -118,16 +147,16 @@ suite('Fuzzy Scorer', () => {
|
||||
});
|
||||
|
||||
test('scoreItem - matches are proper', function () {
|
||||
let res = scoreItem(null, 'something', true, ResourceAccessor, cache);
|
||||
let res = scoreItem(null, 'something', true, ResourceAccessor);
|
||||
assert.ok(!res.score);
|
||||
|
||||
const resource = URI.file('/xyz/some/path/someFile123.txt');
|
||||
|
||||
res = scoreItem(resource, 'something', true, NullAccessor, cache);
|
||||
res = scoreItem(resource, 'something', true, NullAccessor);
|
||||
assert.ok(!res.score);
|
||||
|
||||
// Path Identity
|
||||
const identityRes = scoreItem(resource, ResourceAccessor.getItemPath(resource), true, ResourceAccessor, cache);
|
||||
const identityRes = scoreItem(resource, ResourceAccessor.getItemPath(resource), true, ResourceAccessor);
|
||||
assert.ok(identityRes.score);
|
||||
assert.equal(identityRes.descriptionMatch!.length, 1);
|
||||
assert.equal(identityRes.labelMatch!.length, 1);
|
||||
@@ -137,7 +166,7 @@ suite('Fuzzy Scorer', () => {
|
||||
assert.equal(identityRes.labelMatch![0].end, ResourceAccessor.getItemLabel(resource).length);
|
||||
|
||||
// Basename Prefix
|
||||
const basenamePrefixRes = scoreItem(resource, 'som', true, ResourceAccessor, cache);
|
||||
const basenamePrefixRes = scoreItem(resource, 'som', true, ResourceAccessor);
|
||||
assert.ok(basenamePrefixRes.score);
|
||||
assert.ok(!basenamePrefixRes.descriptionMatch);
|
||||
assert.equal(basenamePrefixRes.labelMatch!.length, 1);
|
||||
@@ -145,7 +174,7 @@ suite('Fuzzy Scorer', () => {
|
||||
assert.equal(basenamePrefixRes.labelMatch![0].end, 'som'.length);
|
||||
|
||||
// Basename Camelcase
|
||||
const basenameCamelcaseRes = scoreItem(resource, 'sF', true, ResourceAccessor, cache);
|
||||
const basenameCamelcaseRes = scoreItem(resource, 'sF', true, ResourceAccessor);
|
||||
assert.ok(basenameCamelcaseRes.score);
|
||||
assert.ok(!basenameCamelcaseRes.descriptionMatch);
|
||||
assert.equal(basenameCamelcaseRes.labelMatch!.length, 2);
|
||||
@@ -155,7 +184,7 @@ suite('Fuzzy Scorer', () => {
|
||||
assert.equal(basenameCamelcaseRes.labelMatch![1].end, 5);
|
||||
|
||||
// Basename Match
|
||||
const basenameRes = scoreItem(resource, 'of', true, ResourceAccessor, cache);
|
||||
const basenameRes = scoreItem(resource, 'of', true, ResourceAccessor);
|
||||
assert.ok(basenameRes.score);
|
||||
assert.ok(!basenameRes.descriptionMatch);
|
||||
assert.equal(basenameRes.labelMatch!.length, 2);
|
||||
@@ -165,7 +194,7 @@ suite('Fuzzy Scorer', () => {
|
||||
assert.equal(basenameRes.labelMatch![1].end, 5);
|
||||
|
||||
// Path Match
|
||||
const pathRes = scoreItem(resource, 'xyz123', true, ResourceAccessor, cache);
|
||||
const pathRes = scoreItem(resource, 'xyz123', true, ResourceAccessor);
|
||||
assert.ok(pathRes.score);
|
||||
assert.ok(pathRes.descriptionMatch);
|
||||
assert.ok(pathRes.labelMatch);
|
||||
@@ -177,7 +206,7 @@ suite('Fuzzy Scorer', () => {
|
||||
assert.equal(pathRes.descriptionMatch![0].end, 4);
|
||||
|
||||
// No Match
|
||||
const noRes = scoreItem(resource, '987', true, ResourceAccessor, cache);
|
||||
const noRes = scoreItem(resource, '987', true, ResourceAccessor);
|
||||
assert.ok(!noRes.score);
|
||||
assert.ok(!noRes.labelMatch);
|
||||
assert.ok(!noRes.descriptionMatch);
|
||||
@@ -192,7 +221,7 @@ suite('Fuzzy Scorer', () => {
|
||||
test('scoreItem - multiple', function () {
|
||||
const resource = URI.file('/xyz/some/path/someFile123.txt');
|
||||
|
||||
let res1 = scoreItem(resource, 'xyz some', true, ResourceAccessor, cache);
|
||||
let res1 = scoreItem(resource, 'xyz some', true, ResourceAccessor);
|
||||
assert.ok(res1.score);
|
||||
assert.equal(res1.labelMatch?.length, 1);
|
||||
assert.equal(res1.labelMatch![0].start, 0);
|
||||
@@ -201,7 +230,7 @@ suite('Fuzzy Scorer', () => {
|
||||
assert.equal(res1.descriptionMatch![0].start, 1);
|
||||
assert.equal(res1.descriptionMatch![0].end, 4);
|
||||
|
||||
let res2 = scoreItem(resource, 'some xyz', true, ResourceAccessor, cache);
|
||||
let res2 = scoreItem(resource, 'some xyz', true, ResourceAccessor);
|
||||
assert.ok(res2.score);
|
||||
assert.equal(res1.score, res2.score);
|
||||
assert.equal(res2.labelMatch?.length, 1);
|
||||
@@ -211,7 +240,7 @@ suite('Fuzzy Scorer', () => {
|
||||
assert.equal(res2.descriptionMatch![0].start, 1);
|
||||
assert.equal(res2.descriptionMatch![0].end, 4);
|
||||
|
||||
let res3 = scoreItem(resource, 'some xyz file file123', true, ResourceAccessor, cache);
|
||||
let res3 = scoreItem(resource, 'some xyz file file123', true, ResourceAccessor);
|
||||
assert.ok(res3.score);
|
||||
assert.ok(res3.score > res2.score);
|
||||
assert.equal(res3.labelMatch?.length, 1);
|
||||
@@ -221,7 +250,7 @@ suite('Fuzzy Scorer', () => {
|
||||
assert.equal(res3.descriptionMatch![0].start, 1);
|
||||
assert.equal(res3.descriptionMatch![0].end, 4);
|
||||
|
||||
let res4 = scoreItem(resource, 'path z y', true, ResourceAccessor, cache);
|
||||
let res4 = scoreItem(resource, 'path z y', true, ResourceAccessor);
|
||||
assert.ok(res4.score);
|
||||
assert.ok(res4.score < res2.score);
|
||||
assert.equal(res4.labelMatch?.length, 0);
|
||||
@@ -234,10 +263,10 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
test('scoreItem - invalid input', function () {
|
||||
|
||||
let res = scoreItem(null, null!, true, ResourceAccessor, cache);
|
||||
let res = scoreItem(null, null!, true, ResourceAccessor);
|
||||
assert.equal(res.score, 0);
|
||||
|
||||
res = scoreItem(null, 'null', true, ResourceAccessor, cache);
|
||||
res = scoreItem(null, 'null', true, ResourceAccessor);
|
||||
assert.equal(res.score, 0);
|
||||
});
|
||||
|
||||
@@ -247,7 +276,7 @@ suite('Fuzzy Scorer', () => {
|
||||
// xsp is more relevant to the end of the file path even though it matches
|
||||
// fuzzy also in the beginning. we verify the more relevant match at the
|
||||
// end gets returned.
|
||||
const pathRes = scoreItem(resource, 'xspfile123', true, ResourceAccessor, cache);
|
||||
const pathRes = scoreItem(resource, 'xspfile123', true, ResourceAccessor);
|
||||
assert.ok(pathRes.score);
|
||||
assert.ok(pathRes.descriptionMatch);
|
||||
assert.ok(pathRes.labelMatch);
|
||||
@@ -262,7 +291,7 @@ suite('Fuzzy Scorer', () => {
|
||||
test('scoreItem - avoid match scattering (bug #36119)', function () {
|
||||
const resource = URI.file('projects/ui/cula/ats/target.mk');
|
||||
|
||||
const pathRes = scoreItem(resource, 'tcltarget.mk', true, ResourceAccessor, cache);
|
||||
const pathRes = scoreItem(resource, 'tcltarget.mk', true, ResourceAccessor);
|
||||
assert.ok(pathRes.score);
|
||||
assert.ok(pathRes.descriptionMatch);
|
||||
assert.ok(pathRes.labelMatch);
|
||||
@@ -276,7 +305,7 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
// expect "ad" to be matched towards the end of the file because the
|
||||
// match is more compact
|
||||
const res = scoreItem(resource, 'ad', true, ResourceAccessor, cache);
|
||||
const res = scoreItem(resource, 'ad', true, ResourceAccessor);
|
||||
assert.ok(res.score);
|
||||
assert.ok(res.descriptionMatch);
|
||||
assert.ok(!res.labelMatch!.length);
|
||||
@@ -290,14 +319,14 @@ suite('Fuzzy Scorer', () => {
|
||||
test('scoreItem - proper target offset', function () {
|
||||
const resource = URI.file('etem');
|
||||
|
||||
const res = scoreItem(resource, 'teem', true, ResourceAccessor, cache);
|
||||
const res = scoreItem(resource, 'teem', true, ResourceAccessor);
|
||||
assert.ok(!res.score);
|
||||
});
|
||||
|
||||
test('scoreItem - proper target offset #2', function () {
|
||||
const resource = URI.file('ede');
|
||||
|
||||
const res = scoreItem(resource, 'de', true, ResourceAccessor, cache);
|
||||
const res = scoreItem(resource, 'de', true, ResourceAccessor);
|
||||
|
||||
assert.equal(res.labelMatch!.length, 1);
|
||||
assert.equal(res.labelMatch![0].start, 1);
|
||||
@@ -307,7 +336,7 @@ suite('Fuzzy Scorer', () => {
|
||||
test('scoreItem - proper target offset #3', function () {
|
||||
const resource = URI.file('/src/vs/editor/browser/viewParts/lineNumbers/flipped-cursor-2x.svg');
|
||||
|
||||
const res = scoreItem(resource, 'debug', true, ResourceAccessor, cache);
|
||||
const res = scoreItem(resource, 'debug', true, ResourceAccessor);
|
||||
|
||||
assert.equal(res.descriptionMatch!.length, 3);
|
||||
assert.equal(res.descriptionMatch![0].start, 9);
|
||||
@@ -327,7 +356,7 @@ suite('Fuzzy Scorer', () => {
|
||||
test('scoreItem - no match unless query contained in sequence', function () {
|
||||
const resource = URI.file('abcde');
|
||||
|
||||
const res = scoreItem(resource, 'edcda', true, ResourceAccessor, cache);
|
||||
const res = scoreItem(resource, 'edcda', true, ResourceAccessor);
|
||||
assert.ok(!res.score);
|
||||
});
|
||||
|
||||
@@ -336,10 +365,22 @@ suite('Fuzzy Scorer', () => {
|
||||
const remoteResource = URI.from({ scheme: Schemas.vscodeRemote, path: 'abcde/super/duper' });
|
||||
|
||||
for (const resource of [localResource, remoteResource]) {
|
||||
let res = scoreItem(resource, 'abcde\\super\\duper', true, ResourceAccessor, cache);
|
||||
let res = scoreItem(resource, 'abcde\\super\\duper', true, ResourceAccessor);
|
||||
assert.ok(res.score);
|
||||
|
||||
res = scoreItem(resource, 'abcde/super/duper', true, ResourceAccessor, cache);
|
||||
res = scoreItem(resource, 'abcde\\super\\duper', true, ResourceWithSlashAccessor);
|
||||
assert.ok(res.score);
|
||||
|
||||
res = scoreItem(resource, 'abcde\\super\\duper', true, ResourceWithBackslashAccessor);
|
||||
assert.ok(res.score);
|
||||
|
||||
res = scoreItem(resource, 'abcde/super/duper', true, ResourceAccessor);
|
||||
assert.ok(res.score);
|
||||
|
||||
res = scoreItem(resource, 'abcde/super/duper', true, ResourceWithSlashAccessor);
|
||||
assert.ok(res.score);
|
||||
|
||||
res = scoreItem(resource, 'abcde/super/duper', true, ResourceWithBackslashAccessor);
|
||||
assert.ok(res.score);
|
||||
}
|
||||
});
|
||||
@@ -352,12 +393,12 @@ suite('Fuzzy Scorer', () => {
|
||||
// Full resource A path
|
||||
let query = ResourceAccessor.getItemPath(resourceA);
|
||||
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceA);
|
||||
assert.equal(res[1], resourceB);
|
||||
assert.equal(res[2], resourceC);
|
||||
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceA);
|
||||
assert.equal(res[1], resourceB);
|
||||
assert.equal(res[2], resourceC);
|
||||
@@ -365,12 +406,12 @@ suite('Fuzzy Scorer', () => {
|
||||
// Full resource B path
|
||||
query = ResourceAccessor.getItemPath(resourceB);
|
||||
|
||||
res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
assert.equal(res[1], resourceA);
|
||||
assert.equal(res[2], resourceC);
|
||||
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
assert.equal(res[1], resourceA);
|
||||
assert.equal(res[2], resourceC);
|
||||
@@ -384,12 +425,12 @@ suite('Fuzzy Scorer', () => {
|
||||
// Full resource A basename
|
||||
let query = ResourceAccessor.getItemLabel(resourceA);
|
||||
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceA);
|
||||
assert.equal(res[1], resourceB);
|
||||
assert.equal(res[2], resourceC);
|
||||
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceA);
|
||||
assert.equal(res[1], resourceB);
|
||||
assert.equal(res[2], resourceC);
|
||||
@@ -397,12 +438,12 @@ suite('Fuzzy Scorer', () => {
|
||||
// Full resource B basename
|
||||
query = ResourceAccessor.getItemLabel(resourceB);
|
||||
|
||||
res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
assert.equal(res[1], resourceA);
|
||||
assert.equal(res[2], resourceC);
|
||||
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
assert.equal(res[1], resourceA);
|
||||
assert.equal(res[2], resourceC);
|
||||
@@ -416,12 +457,12 @@ suite('Fuzzy Scorer', () => {
|
||||
// resource A camelcase
|
||||
let query = 'fA';
|
||||
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceA);
|
||||
assert.equal(res[1], resourceB);
|
||||
assert.equal(res[2], resourceC);
|
||||
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceA);
|
||||
assert.equal(res[1], resourceB);
|
||||
assert.equal(res[2], resourceC);
|
||||
@@ -429,12 +470,12 @@ suite('Fuzzy Scorer', () => {
|
||||
// resource B camelcase
|
||||
query = 'fB';
|
||||
|
||||
res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
assert.equal(res[1], resourceA);
|
||||
assert.equal(res[2], resourceC);
|
||||
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
assert.equal(res[1], resourceA);
|
||||
assert.equal(res[2], resourceC);
|
||||
@@ -448,12 +489,12 @@ suite('Fuzzy Scorer', () => {
|
||||
// Resource A part of basename
|
||||
let query = 'fileA';
|
||||
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceA);
|
||||
assert.equal(res[1], resourceB);
|
||||
assert.equal(res[2], resourceC);
|
||||
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceA);
|
||||
assert.equal(res[1], resourceB);
|
||||
assert.equal(res[2], resourceC);
|
||||
@@ -461,12 +502,12 @@ suite('Fuzzy Scorer', () => {
|
||||
// Resource B part of basename
|
||||
query = 'fileB';
|
||||
|
||||
res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
assert.equal(res[1], resourceA);
|
||||
assert.equal(res[2], resourceC);
|
||||
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
assert.equal(res[1], resourceA);
|
||||
assert.equal(res[2], resourceC);
|
||||
@@ -480,12 +521,12 @@ suite('Fuzzy Scorer', () => {
|
||||
// Resource A part of path
|
||||
let query = 'pathfileA';
|
||||
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceA);
|
||||
assert.equal(res[1], resourceB);
|
||||
assert.equal(res[2], resourceC);
|
||||
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceA);
|
||||
assert.equal(res[1], resourceB);
|
||||
assert.equal(res[2], resourceC);
|
||||
@@ -493,12 +534,12 @@ suite('Fuzzy Scorer', () => {
|
||||
// Resource B part of path
|
||||
query = 'pathfileB';
|
||||
|
||||
res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
assert.equal(res[1], resourceA);
|
||||
assert.equal(res[2], resourceC);
|
||||
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
assert.equal(res[1], resourceA);
|
||||
assert.equal(res[2], resourceC);
|
||||
@@ -512,12 +553,12 @@ suite('Fuzzy Scorer', () => {
|
||||
// Resource A part of path
|
||||
let query = 'somepath';
|
||||
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceA);
|
||||
assert.equal(res[1], resourceB);
|
||||
assert.equal(res[2], resourceC);
|
||||
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceA);
|
||||
assert.equal(res[1], resourceB);
|
||||
assert.equal(res[2], resourceC);
|
||||
@@ -531,12 +572,12 @@ suite('Fuzzy Scorer', () => {
|
||||
// Resource A part of path
|
||||
let query = 'file';
|
||||
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceA);
|
||||
assert.equal(res[1], resourceC);
|
||||
assert.equal(res[2], resourceB);
|
||||
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceA);
|
||||
assert.equal(res[1], resourceC);
|
||||
assert.equal(res[2], resourceB);
|
||||
@@ -550,12 +591,12 @@ suite('Fuzzy Scorer', () => {
|
||||
// Resource A part of path
|
||||
let query = 'somepath';
|
||||
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceA);
|
||||
assert.equal(res[1], resourceB);
|
||||
assert.equal(res[2], resourceC);
|
||||
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceA);
|
||||
assert.equal(res[1], resourceB);
|
||||
assert.equal(res[2], resourceC);
|
||||
@@ -568,7 +609,7 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
let query = 'co/te';
|
||||
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
assert.equal(res[1], resourceA);
|
||||
assert.equal(res[2], resourceC);
|
||||
@@ -580,7 +621,7 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
let query = 'partsquick';
|
||||
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
assert.equal(res[1], resourceA);
|
||||
});
|
||||
@@ -591,11 +632,11 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
let query = 'AH';
|
||||
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
assert.equal(res[1], resourceA);
|
||||
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
assert.equal(res[1], resourceA);
|
||||
});
|
||||
@@ -606,11 +647,11 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
let query = 'xp';
|
||||
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
assert.equal(res[1], resourceA);
|
||||
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
assert.equal(res[1], resourceA);
|
||||
});
|
||||
@@ -621,11 +662,11 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
let query = 'xp';
|
||||
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
assert.equal(res[1], resourceA);
|
||||
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
assert.equal(res[1], resourceA);
|
||||
});
|
||||
@@ -636,11 +677,11 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
let query = 'exfile';
|
||||
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
assert.equal(res[1], resourceA);
|
||||
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
assert.equal(res[1], resourceA);
|
||||
});
|
||||
@@ -653,18 +694,18 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
let query = isWindows ? 'modu1\\index.js' : 'modu1/index.js';
|
||||
|
||||
let res = [resourceA, resourceB, resourceC, resourceD].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB, resourceC, resourceD].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceC);
|
||||
|
||||
res = [resourceC, resourceB, resourceA, resourceD].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceC, resourceB, resourceA, resourceD].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceC);
|
||||
|
||||
query = isWindows ? 'un1\\index.js' : 'un1/index.js';
|
||||
|
||||
res = [resourceA, resourceB, resourceC, resourceD].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceA, resourceB, resourceC, resourceD].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
|
||||
res = [resourceC, resourceB, resourceA, resourceD].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceC, resourceB, resourceA, resourceD].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
});
|
||||
|
||||
@@ -675,10 +716,10 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
let query = 'StatVideoindex';
|
||||
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceC);
|
||||
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceC);
|
||||
});
|
||||
|
||||
@@ -688,10 +729,10 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
let query = 'reproreduxts';
|
||||
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
});
|
||||
|
||||
@@ -702,10 +743,10 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
let query = 'bookpageIndex';
|
||||
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceC);
|
||||
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceC);
|
||||
});
|
||||
|
||||
@@ -715,10 +756,10 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
let query = isWindows ? 'ui\\icons' : 'ui/icons';
|
||||
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
});
|
||||
|
||||
@@ -728,10 +769,10 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
let query = isWindows ? 'ui\\input\\index' : 'ui/input/index';
|
||||
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
});
|
||||
|
||||
@@ -741,10 +782,10 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
let query = 'djancosig';
|
||||
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
});
|
||||
|
||||
@@ -755,12 +796,12 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
let query = 'protectedconfig.php';
|
||||
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceA);
|
||||
assert.equal(res[1], resourceC);
|
||||
assert.equal(res[2], resourceB);
|
||||
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceC, resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceA);
|
||||
assert.equal(res[1], resourceC);
|
||||
assert.equal(res[2], resourceB);
|
||||
@@ -772,10 +813,10 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
let query = 'gradientmain';
|
||||
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
});
|
||||
|
||||
@@ -785,10 +826,10 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
let query = 'abc';
|
||||
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
});
|
||||
|
||||
@@ -798,10 +839,10 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
let query = 'xyz';
|
||||
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
});
|
||||
|
||||
@@ -811,10 +852,10 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
let query = 'async';
|
||||
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
});
|
||||
|
||||
@@ -824,10 +865,10 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
let query = 'partisettings';
|
||||
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
});
|
||||
|
||||
@@ -837,10 +878,10 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
let query = 'tipsindex.cshtml';
|
||||
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
});
|
||||
|
||||
@@ -850,10 +891,10 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
let query = 'listview';
|
||||
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceB, resourceA].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
});
|
||||
|
||||
@@ -864,10 +905,10 @@ suite('Fuzzy Scorer', () => {
|
||||
|
||||
let query = 'filesexplorerview.ts';
|
||||
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
let res = [resourceA, resourceB, resourceC].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
|
||||
res = [resourceA, resourceC, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor, cache));
|
||||
res = [resourceA, resourceC, resourceB].sort((r1, r2) => compareItemsByScore(r1, r2, query, true, ResourceAccessor));
|
||||
assert.equal(res[0], resourceB);
|
||||
});
|
||||
|
||||
@@ -932,6 +973,28 @@ suite('Fuzzy Scorer', () => {
|
||||
}
|
||||
});
|
||||
|
||||
test('fuzzyScore2 (matching)', function () {
|
||||
const target = 'HeLlo-World';
|
||||
|
||||
for (const offset of [0, 3]) {
|
||||
let [score, matches] = _doScore2(target, 'HeLlo-World', offset);
|
||||
|
||||
assert.ok(score);
|
||||
assert.equal(matches.length, 1);
|
||||
assert.equal(matches[0].start, 0 + offset);
|
||||
assert.equal(matches[0].end, target.length + offset);
|
||||
|
||||
[score, matches] = _doScore2(target, 'HW', offset);
|
||||
|
||||
assert.ok(score);
|
||||
assert.equal(matches.length, 2);
|
||||
assert.equal(matches[0].start, 0 + offset);
|
||||
assert.equal(matches[0].end, 1 + offset);
|
||||
assert.equal(matches[1].start, 6 + offset);
|
||||
assert.equal(matches[1].end, 7 + offset);
|
||||
}
|
||||
});
|
||||
|
||||
test('fuzzyScore2 (multiple queries)', function () {
|
||||
const target = 'HeLlo-World';
|
||||
|
||||
@@ -957,7 +1020,7 @@ suite('Fuzzy Scorer', () => {
|
||||
}
|
||||
|
||||
function assertNoScore() {
|
||||
assert.equal(multiScore, 0);
|
||||
assert.equal(multiScore, undefined);
|
||||
assert.equal(multiMatches.length, 0);
|
||||
}
|
||||
|
||||
@@ -975,4 +1038,13 @@ suite('Fuzzy Scorer', () => {
|
||||
[multiScore, multiMatches] = _doScore2(target, 'More Nothing');
|
||||
assertNoScore();
|
||||
});
|
||||
|
||||
test('fuzzyScore2 (#95716)', function () {
|
||||
const target = '# ❌ Wow';
|
||||
|
||||
const score = _doScore2(target, '❌');
|
||||
assert.ok(score);
|
||||
assert.ok(typeof score[0] === 'number');
|
||||
assert.ok(score[1].length > 0);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -84,7 +84,7 @@ suite('Strings', () => {
|
||||
test('compareIgnoreCase (substring)', () => {
|
||||
|
||||
function assertCompareIgnoreCase(a: string, b: string, aStart: number, aEnd: number, bStart: number, bEnd: number, recurse = true): void {
|
||||
let actual = strings.compareIgnoreCase(a, b, aStart, aEnd, bStart, bEnd);
|
||||
let actual = strings.compareSubstringIgnoreCase(a, b, aStart, aEnd, bStart, bEnd);
|
||||
actual = actual > 0 ? 1 : actual < 0 ? -1 : actual;
|
||||
|
||||
let expected = strings.compare(a.toLowerCase().substring(aStart, aEnd), b.toLowerCase().substring(bStart, bEnd));
|
||||
|
||||
@@ -8,6 +8,7 @@ import * as fs from 'fs';
|
||||
import * as encoding from 'vs/base/node/encoding';
|
||||
import * as terminalEncoding from 'vs/base/node/terminalEncoding';
|
||||
import { Readable } from 'stream';
|
||||
import * as iconv from 'iconv-lite';
|
||||
import { getPathFromAmdModule } from 'vs/base/common/amd';
|
||||
|
||||
export async function detectEncodingByBOM(file: string): Promise<typeof encoding.UTF16be | typeof encoding.UTF16le | typeof encoding.UTF8_with_bom | null> {
|
||||
@@ -224,7 +225,7 @@ suite('Encoding', () => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve(encoding.decode(data, fileEncoding!));
|
||||
resolve(iconv.decode(data, encoding.toNodeEncoding(fileEncoding!)));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user