Updated regular expression for sub word matcher and added additional tests (#88)

This commit is contained in:
Andreas Arvidsson 2021-07-09 13:04:17 +02:00 committed by GitHub
parent dddb5cd970
commit c0ad928810
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 14 additions and 8 deletions

View File

@ -1,4 +1,4 @@
export const SUBWORD_MATCHER = /([A-Z]?[a-z]+|[A-Za-z]+)/g;
export const SUBWORD_MATCHER = /[A-Z]?[a-z]+|[A-Z]+(?![a-z])|[0-9]+/g;
export const DEBOUNCE_DELAY = 175;

View File

@ -3,10 +3,10 @@ import * as assert from "assert";
import { SUBWORD_MATCHER } from "../../constants";
import { subwordFixture } from "./fixtures/constants.fixture";
suite.only("subword regex matcher", () => {
suite("subword regex matcher", () => {
subwordFixture.forEach(({ input, expectedOutput }, index) => {
test(input, () => {
assert.deepStrictEqual(expectedOutput, input.match(SUBWORD_MATCHER));
assert.deepStrictEqual(input.match(SUBWORD_MATCHER), expectedOutput);
});
});
});

View File

@ -52,14 +52,20 @@ export const subwordFixture: Fixture[] = [
input: "QUICK::BROWN::FOX",
expectedOutput: ["QUICK", "BROWN", "FOX"],
},
// Not currently handled properly: https://github.com/pokey/cursorless-vscode/issues/79
{
input: "APIClientFactory",
expectedOutput: ["APIClientFactory"],
expectedOutput: ["API", "Client", "Factory"],
},
// Not currently handled properly: https://github.com/pokey/cursorless-vscode/issues/79
{
input: "MockAPIClientFactory",
expectedOutput: ["Mock", "APIClientFactory"],
expectedOutput: ["Mock", "API", "Client", "Factory"],
},
{
input: "mockAPIClientFactory",
expectedOutput: ["mock", "API", "Client", "Factory"],
},
{
input: "mockAPIClient123Factory",
expectedOutput: ["mock", "API", "Client", "123", "Factory"],
}
];

View File

@ -42,7 +42,7 @@ const tests: TestCase[] = [
suite("tokenizer", () => {
tests.forEach(([input, expectedOutput]) => {
test(`tokenizer ${input}`, () => {
test(input, () => {
const output = tokenize(input, (match) => match[0]);
assert.deepStrictEqual(output, expectedOutput);
});