Skip to content

Commit 7320a18

Browse files
Adding rename tests.
1 parent a1ca10d commit 7320a18

File tree

4 files changed

+62
-0
lines changed

4 files changed

+62
-0
lines changed

src/harness/fourslash.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -832,6 +832,44 @@ module FourSlash {
832832
}
833833
}
834834

835+
private validate(name: string, expected: string, actual: string) {
836+
if (expected && expected !== actual) {
837+
throw new Error("Expected " + name + " '" + expected + "'. Got '" + actual + "' instead.");
838+
}
839+
}
840+
841+
public verifyRenameInfoSucceeded(displayName?: string, fullDisplayName?: string, kind?: string, kindModifiers?: string) {
842+
var renameInfo = this.languageService.getRenameInfo(this.activeFile.fileName, this.currentCaretPosition);
843+
if (!renameInfo.canRename) {
844+
throw new Error("Rename did not succeed");
845+
}
846+
847+
this.validate("displayName", displayName, renameInfo.displayName);
848+
this.validate("fullDisplayName", fullDisplayName, renameInfo.fullDisplayName);
849+
this.validate("kind", kind, renameInfo.kind);
850+
this.validate("kindModifiers", kindModifiers, renameInfo.kindModifiers);
851+
852+
if (this.getRanges().length !== 1) {
853+
throw new Error("Expected a single range to be selected in the test file.");
854+
}
855+
856+
var expectedRange = this.getRanges()[0];
857+
if (renameInfo.triggerSpan.start() !== expectedRange.start ||
858+
renameInfo.triggerSpan.end() !== expectedRange.end) {
859+
throw new Error("Expected triggerSpan [" + expectedRange.start + "," + expectedRange.end + "). Got [" +
860+
renameInfo.triggerSpan.start() + "," + renameInfo.triggerSpan.end() + ") instead.");
861+
}
862+
}
863+
864+
public verifyRenameInfoFailed(message?: string) {
865+
var renameInfo = this.languageService.getRenameInfo(this.activeFile.fileName, this.currentCaretPosition);
866+
if (renameInfo.canRename) {
867+
throw new Error("Rename was expected to fail");
868+
}
869+
870+
this.validate("error", message, renameInfo.localizedErrorMessage);
871+
}
872+
835873
//private getFormalParameter() {
836874
// var help = this.languageService.getSignatureHelpItems(this.activeFile.fileName, this.currentCaretPosition);
837875
// return help.formal;

tests/cases/fourslash/fourslash.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,14 @@ module FourSlashInterface {
390390
public semanticClassificationsAre(...classifications: { classificationType: string; text: string }[]) {
391391
FourSlash.currentTestState.verifySemanticClassifications(classifications);
392392
}
393+
394+
public renameInfoSucceeded(displayName?: string, fullDisplayName?: string, kind?: string, kindModifiers?: string) {
395+
FourSlash.currentTestState.verifyRenameInfoSucceeded(displayName, fullDisplayName, kind, kindModifiers)
396+
}
397+
398+
public renameInfoFailed(message?: string) {
399+
FourSlash.currentTestState.verifyRenameInfoFailed(message)
400+
}
393401
}
394402

395403
export class edit {
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
/// <reference path="fourslash.ts"/>
2+
3+
////class [|/**/C|] {
4+
////
5+
////}
6+
7+
goTo.marker("");
8+
verify.renameInfoSucceeded("C");
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
/// <reference path="fourslash.ts"/>
2+
3+
/////**/class C {
4+
////
5+
////}
6+
7+
goTo.marker("");
8+
verify.renameInfoFailed();

0 commit comments

Comments
 (0)