Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit e87f10e

Browse files
feat. Support custom test case in source code.
1 parent 1893d34 commit e87f10e

File tree

3 files changed

+38
-3
lines changed

3 files changed

+38
-3
lines changed

‎src/codelens/CustomCodeLensProvider.ts

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,32 @@ export class CustomCodeLensProvider implements vscode.CodeLensProvider {
5656
}
5757

5858
if (shortcuts.indexOf("test") >= 0) {
59+
let testLineStart: number = -1;
60+
for (let i: number = document.lineCount - 1; i >= 0; i--) {
61+
const lineContent: string = document.lineAt(i).text;
62+
if (lineContent.indexOf("@lc test=start") >= 0) {
63+
testLineStart = i;
64+
break;
65+
}
66+
}
67+
let testLineEnd: number = -1;
68+
if (testLineStart >= 0) {
69+
for (let i: number = document.lineCount - 1; i >= 0; i--) {
70+
const lineContent: string = document.lineAt(i).text;
71+
if (lineContent.indexOf("@lc test=end") >= 0) {
72+
testLineEnd = i;
73+
break;
74+
}
75+
}
76+
}
77+
const testStringInSource: string | null = testLineEnd >= 0
78+
? document.getText(new vscode.Range(testLineStart + 1, 0, testLineEnd, 0))
79+
: null;
80+
5981
codeLens.push(new vscode.CodeLens(range, {
6082
title: "Test",
6183
command: "leetcode.testSolution",
62-
arguments: [document.uri],
84+
arguments: [document.uri,testStringInSource],
6385
}));
6486
}
6587

‎src/commands/test.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { getActiveFilePath } from "../utils/workspaceUtils";
1212
import * as wsl from "../utils/wslUtils";
1313
import { leetCodeSubmissionProvider } from "../webview/leetCodeSubmissionProvider";
1414

15-
export async function testSolution(uri?: vscode.Uri): Promise<void> {
15+
export async function testSolution(uri?: vscode.Uri,testContentInSource?: string): Promise<void> {
1616
try {
1717
if (leetCodeManager.getStatus() === UserStatus.SignedOut) {
1818
return;
@@ -30,6 +30,12 @@ export async function testSolution(uri?: vscode.Uri): Promise<void> {
3030
detail: "Test with the default cases",
3131
value: ":default",
3232
},
33+
{
34+
label: "$(code) From source",
35+
description: "",
36+
detail: "Test with the cases in source code",
37+
value: ":source",
38+
},
3339
{
3440
label: "$(pencil) Write directly...",
3541
description: "",
@@ -75,6 +81,13 @@ export async function testSolution(uri?: vscode.Uri): Promise<void> {
7581
}
7682
}
7783
break;
84+
case ":source":
85+
if (testContentInSource) {
86+
result = await leetCodeExecutor.testSolution(filePath, parseTestString(testContentInSource.replace(/\r?\n/g, "\\n")));
87+
} else {
88+
vscode.window.showErrorMessage("Failed to load test cases from source code.");
89+
}
90+
break;
7891
default:
7992
break;
8093
}

‎src/extension.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
5959
vscode.commands.registerCommand("leetcode.searchProblem", () => show.searchProblem()),
6060
vscode.commands.registerCommand("leetcode.showSolution", (input: LeetCodeNode | vscode.Uri) => show.showSolution(input)),
6161
vscode.commands.registerCommand("leetcode.refreshExplorer", () => leetCodeTreeDataProvider.refresh()),
62-
vscode.commands.registerCommand("leetcode.testSolution", (uri?: vscode.Uri) => test.testSolution(uri)),
62+
vscode.commands.registerCommand("leetcode.testSolution", (uri?: vscode.Uri,testContentInSource?: string) => test.testSolution(uri,testContentInSource)),
6363
vscode.commands.registerCommand("leetcode.submitSolution", (uri?: vscode.Uri) => submit.submitSolution(uri)),
6464
vscode.commands.registerCommand("leetcode.switchDefaultLanguage", () => switchDefaultLanguage()),
6565
vscode.commands.registerCommand("leetcode.addFavorite", (node: LeetCodeNode) => star.addFavorite(node)),

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /