From c987ab93f0fb0c46daa183bc2eadb841683aedbb Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Thu, 12 Feb 2015 12:52:26 -0800 Subject: [PATCH] Wire navto tests --- src/server/client.ts | 29 +++++++++++++++++---------- src/server/protocol.ts | 3 +++ tests/cases/fourslash/server/navto.ts | 28 ++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 11 deletions(-) create mode 100644 tests/cases/fourslash/server/navto.ts diff --git a/src/server/client.ts b/src/server/client.ts index 908562e589b..f637a9f1269 100644 --- a/src/server/client.ts +++ b/src/server/client.ts @@ -80,6 +80,10 @@ module ts.server { return this.host.getScriptSnapshot(fileName).getLength(); } + getFileNames(): string[] { + return this.host.getScriptFileNames(); + } + close(): void { } @@ -107,6 +111,7 @@ module ts.server { private sequence: number = 0; private host: SessionClientHostProxy; private expantionTable: ts.Map; + private fileMapping: ts.Map = {}; constructor(host: SessionClientHost, abbreviate: boolean) { this.sequence = 0; @@ -177,14 +182,14 @@ module ts.server { }; } - private getFileNameFromEncodedFile(fileId: ServerProtocol.EncodedFile, fileMapping: ts.Map): string { + private getFileNameFromEncodedFile(fileId: ServerProtocol.EncodedFile): string { var fileName: string; if (typeof fileId === "object") { fileName = (fileId).file; - fileMapping[(fileId).id] = fileName; + this.fileMapping[(fileId).id] = fileName; } else if (typeof fileId === "number") { - fileName = ts.lookUp(fileMapping, fileId.toString()); + fileName = ts.lookUp(this.fileMapping, fileId.toString()); Debug.assert(!!fileName, "Did not find filename in previous fileID mappings."); } else { @@ -330,21 +335,23 @@ module ts.server { }; } - getNavigateToItems(seatchTerm: string): NavigateToItem[] { - var request = this.processRequest("navto", { seatchTerm }); + getNavigateToItems(searchTerm: string): NavigateToItem[] { + var request = this.processRequest("navto", { + searchTerm, + file: this.host.getFileNames()[0] + }); var response = this.processResponse(request); - var fileMapping: ts.Map = {}; return response.body.map(entry => { - var fileName = this.getFileNameFromEncodedFile(entry.file, fileMapping); - var start = this.lineColToPosition(entry.file.toString(), entry.start); - var end = this.lineColToPosition(entry.file.toString(), entry.end); + var fileName = this.getFileNameFromEncodedFile(entry.file); + var start = this.lineColToPosition(fileName, entry.start); + var end = this.lineColToPosition(fileName, entry.end); return { name: entry.name, - containerName: entry.containerName, - containerKind: entry.containerKind, + containerName: entry.containerName || "", + containerKind: entry.containerKind || "", kind: entry.kind, kindModifiers: entry.kindModifiers, matchKind: entry.matchKind, diff --git a/src/server/protocol.ts b/src/server/protocol.ts index 7c27eec02dd..b4ffddd25ed 100644 --- a/src/server/protocol.ts +++ b/src/server/protocol.ts @@ -1051,6 +1051,9 @@ module ts.server { this.output(undefined, CommandNames.Navto, reqSeq, "no nav items"); } } + else { + this.output(undefined, CommandNames.Navto, reqSeq, "no nav items"); + } } executeJSONcmd(cmd: string) { diff --git a/tests/cases/fourslash/server/navto.ts b/tests/cases/fourslash/server/navto.ts new file mode 100644 index 00000000000..8dc42a2365e --- /dev/null +++ b/tests/cases/fourslash/server/navto.ts @@ -0,0 +1,28 @@ +/// + +/////// Module +////{| "itemName": "Shapes", "kind": "module", "parentName": "", "matchKind": "substring" |}module Shapes { +//// +//// // Class +//// {| "itemName": "Point", "kind": "class", "parentName": "Shapes", "matchKind": "substring" |}export class Point { +//// // Instance member +//// {| "itemName": "originPointAttheHorizon", "kind": "property", "parentName": "Point", "matchKind": "substring"|}private originPointAttheHorizon = 0.0; +//// +//// // Getter +//// {| "itemName": "distanceFromOrigin", "kind": "getter", "parentName": "Point", "matchKind": "substring" |}get distanceFromOrigin(): number { return 0; } +//// +//// } +////} +//// +////// Local variables +////{| "itemName": "myPointThatIJustInitiated", "kind": "var", "parentName": "", "matchKind": "substring"|}var myPointThatIJustInitiated = new Shapes.Point(); + +//// Testing for substring matching of navigationItems +//var searchValue = "FromOrigin horizon INITIATED Shape Point"; + +test.markers().forEach((marker) => { + if (marker.data) { + var name = marker.data.itemName; + verify.navigationItemsListContains(name, marker.data.kind, name.substr(1), marker.data.matchKind, marker.fileName, marker.data.parentName); + } +}); \ No newline at end of file