Skip to content

Commit 7271b98

Browse files
committed
Add tests for signature help on an enum case
1 parent 68b3900 commit 7271b98

File tree

1 file changed

+70
-8
lines changed

1 file changed

+70
-8
lines changed

Tests/SourceKitLSPTests/SwiftSignatureHelpTests.swift

Lines changed: 70 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,63 @@ final class SwiftSignatureHelpTests: XCTestCase {
188188
)
189189
}
190190

191+
func testSignatureHelpEnumCase() async throws {
192+
let testClient = try await TestSourceKitLSPClient()
193+
let uri = DocumentURI(for: .swift)
194+
195+
let positions = testClient.openDocument(
196+
"""
197+
enum Label {
198+
/// The label as an offset within the signature label
199+
/// - Parameters:
200+
/// - start: The start offset
201+
/// - end: The end offset
202+
case offset(start: Int, end: Int)
203+
}
204+
205+
func main() {
206+
let label = Label.offset(start: 11️⃣)
207+
}
208+
""",
209+
uri: uri
210+
)
211+
212+
let result = try await testClient.send(
213+
SignatureHelpRequest(
214+
textDocument: TextDocumentIdentifier(uri),
215+
position: positions["1️⃣"]
216+
)
217+
)
218+
219+
let signatureHelp = try XCTUnwrap(result)
220+
let signature = try XCTUnwrap(signatureHelp.signatures.only)
221+
222+
XCTAssertEqual(signatureHelp.activeSignature, 0)
223+
XCTAssertEqual(signatureHelp.activeParameter, 0)
224+
XCTAssertEqual(signature.label, "offset(start: Int, end: Int) -> Label")
225+
XCTAssertEqual(
226+
signature.documentation,
227+
.markupContent(
228+
MarkupContent(
229+
kind: .markdown,
230+
value: """
231+
The label as an offset within the signature label
232+
- Parameters:
233+
- start: The start offset
234+
- end: The end offset
235+
"""
236+
)
237+
)
238+
)
239+
XCTAssertEqual(
240+
signature.parameters,
241+
[
242+
ParameterInformation(label: .offsets(start: 7, end: 17)),
243+
ParameterInformation(label: .offsets(start: 19, end: 27)),
244+
]
245+
)
246+
}
247+
191248
func testSignatureHelpWithNoParameters() async throws {
192249
let testClient = try await TestSourceKitLSPClient()
193250
let uri = DocumentURI(for: .swift)
@@ -281,14 +338,15 @@ final class SwiftSignatureHelpTests: XCTestCase {
281338
let signature = try XCTUnwrap(signatureHelp.signatures.only)
282339

283340
XCTAssertEqual(signature.label, "add(first: Double!, second: Float, third: Int) -> Double", line: line)
284-
XCTAssertNil(signature.documentation)
341+
XCTAssertNil(signature.documentation, line: line)
285342
XCTAssertEqual(
286343
signature.parameters,
287344
[
288345
ParameterInformation(label: .offsets(start: 4, end: 18)),
289346
ParameterInformation(label: .offsets(start: 20, end: 33)),
290347
ParameterInformation(label: .offsets(start: 35, end: 45)),
291-
]
348+
],
349+
line: line
292350
)
293351

294352
return signature
@@ -346,9 +404,13 @@ final class SwiftSignatureHelpTests: XCTestCase {
346404
let signatureHelp = try XCTUnwrap(result)
347405
XCTAssertEqual(signatureHelp.activeSignature, 0)
348406
XCTAssertEqual(signatureHelp.activeParameter, 0)
349-
XCTAssertEqual(signatureHelp.signatures.count, 2)
350407

351-
let firstSignature = try XCTUnwrap(signatureHelp.signatures[0])
408+
guard signatureHelp.signatures.count == 2 else {
409+
XCTFail("expected 2 signatures, got \(signatureHelp.signatures)")
410+
return
411+
}
412+
413+
let firstSignature = signatureHelp.signatures[0]
352414
XCTAssertEqual(firstSignature.label, "add(_ x: Int, to: Int) -> Int")
353415
XCTAssertEqual(firstSignature.activeParameter, 0)
354416
XCTAssertNil(firstSignature.documentation)
@@ -360,7 +422,7 @@ final class SwiftSignatureHelpTests: XCTestCase {
360422
]
361423
)
362424

363-
let secondSignature = try XCTUnwrap(signatureHelp.signatures[1])
425+
let secondSignature = signatureHelp.signatures[1]
364426
XCTAssertEqual(secondSignature.label, "add(oneTo: inout Int)")
365427
XCTAssertEqual(secondSignature.activeParameter, 0)
366428
XCTAssertEqual(
@@ -418,16 +480,16 @@ final class SwiftSignatureHelpTests: XCTestCase {
418480
func testSignatureHelpSwiftPMProject() async throws {
419481
let project = try await SwiftPMTestProject(
420482
files: [
421-
"utils.swift": """
483+
"utils.swift": #"""
422484
/// A utility function that combines values
423485
/// - Parameters:
424486
/// - first: The first value
425487
/// - second: The second value
426488
/// - Returns: The combined result
427489
func combine(first: String, second: Int) -> String {
428-
return "\\(first)-\\(second)"
490+
return "\(first)-\(second)"
429491
}
430-
""",
492+
"""#,
431493
"main.swift": """
432494
func test() {
433495
combine(1️⃣)

0 commit comments

Comments
 (0)