Add test for #7301

This commit is contained in:
Andy Hanson 2016-05-16 08:18:33 -07:00
parent 3fb16f5930
commit df8e7409c1
3 changed files with 67 additions and 0 deletions

View file

@ -1912,6 +1912,47 @@ namespace FourSlash {
} }
} }
public verifyNavigationBarCount(count: number) {
const actual = this.navigationBarItems().length;
if (actual !== count) {
this.raiseError(`Expected ${count} items in navigation bar, got ${actual}`);
}
}
public verifyNavigationBarItem(text: string, kind: string) {
this.verifyNavigationBarItemExists(this.navigationBarItems(), text, kind);
}
public verifyNavigationBarChildItem(parent: string, text: string, kind: string) {
const items = this.navigationBarItems();
// TODO: ts.find?
for (let i = 0; i < items.length; i++) {
const item = items[i];
if (item.text === parent) {
this.verifyNavigationBarItemExists(item.childItems, text, kind);
return;
}
}
this.raiseError(`Could not find any parent named ${parent} in: ${JSON.stringify(items, undefined, 2)}`);
}
private navigationBarItems() {
return this.languageService.getNavigationBarItems(this.activeFile.fileName);
}
private verifyNavigationBarItemExists(items: ts.NavigationBarItem[], text: string, kind: string) {
for (let i = 0; i < items.length; i++) {
const item = items[i];
if (item.text === text && item.kind === kind) {
return;
}
}
this.raiseError(`Could not find ${JSON.stringify({text, kind}, undefined, 2)} in the navigation bar: ${JSON.stringify(items, undefined, 2)}`);
}
/* /*
Check number of navigationItems which match both searchValue and matchKind. Check number of navigationItems which match both searchValue and matchKind.
Report an error if expected value and actual value do not match. Report an error if expected value and actual value do not match.
@ -3044,6 +3085,18 @@ namespace FourSlashInterface {
this.state.verifyGetScriptLexicalStructureListContains(name, kind); this.state.verifyGetScriptLexicalStructureListContains(name, kind);
} }
public navigationBarCount(count: number) {
this.state.verifyNavigationBarCount(count);
}
public navigationBarItem(text: string, kind: string) {
this.state.verifyNavigationBarItem(text, kind);
}
public navigationBarChildItem(parent: string, text: string, kind: string) {
this.state.verifyNavigationBarChildItem(parent, text, kind);
}
public navigationItemsListCount(count: number, searchValue: string, matchKind?: string) { public navigationItemsListCount(count: number, searchValue: string, matchKind?: string) {
this.state.verifyNavigationItemsCount(count, searchValue, matchKind); this.state.verifyNavigationItemsCount(count, searchValue, matchKind);
} }

View file

@ -177,6 +177,9 @@ declare namespace FourSlashInterface {
getScriptLexicalStructureListCount(count: number): void; getScriptLexicalStructureListCount(count: number): void;
getScriptLexicalStructureListContains(name: string, kind: string, fileName?: string, parentName?: string, isAdditionalSpan?: boolean, markerPosition?: number): void; getScriptLexicalStructureListContains(name: string, kind: string, fileName?: string, parentName?: string, isAdditionalSpan?: boolean, markerPosition?: number): void;
navigationBarCount(count: number);
navigationBarItem(text: string, kind: string): void;
navigationBarChildItem(parent: string, text: string, kind: string): void;
navigationItemsListCount(count: number, searchValue: string, matchKind?: string): void; navigationItemsListCount(count: number, searchValue: string, matchKind?: string): void;
navigationItemsListContains(name: string, kind: string, searchValue: string, matchKind: string, fileName?: string, parentName?: string): void; navigationItemsListContains(name: string, kind: string, searchValue: string, matchKind: string, fileName?: string, parentName?: string): void;
occurrencesAtPositionContains(range: Range, isWriteAccess?: boolean): void; occurrencesAtPositionContains(range: Range, isWriteAccess?: boolean): void;

View file

@ -0,0 +1,11 @@
/// <reference path="fourslash.ts" />
////class C {
//// foo;
//// ["bar"]: string;
////}
verify.navigationBarCount(1);
verify.navigationBarItem("C", "class");
verify.navigationBarChildItem("C", "[\"bar\"]", "property");
verify.navigationBarChildItem("C", "foo", "property");