Skip to content

Commit 6432037

Browse files
authored
[test] ARO and capture name tests (#522)
1 parent 8ad8f2e commit 6432037

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

Tests/RegexTests/AnyRegexOutputTests.swift

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,4 +175,51 @@ extension RegexTests {
175175

176176
}
177177
}
178+
179+
func testCaptureNames() {
180+
let particle = try! Regex(#"(?<name>particle)-(?<id>\d+)"#)
181+
let particleInput = "particle-123"
182+
183+
let uuid = try! Regex(#"(?<name>uuid): (?<id>[-a-f\d]+)"#)
184+
let uuidInput = "uuid: 1234-abcd-5678"
185+
186+
let digitID = try! Regex(#"(?<id>\d+): (?<name>\w+)"#)
187+
let digitInput = "1234: insert_name_here"
188+
189+
func expect(
190+
_ regex: Regex<AnyRegexOutput>,
191+
_ input: String,
192+
capture name: String,
193+
_ expected: String?
194+
) {
195+
guard let match = input.wholeMatch(of: regex),
196+
let cap = match[name]?.substring
197+
else {
198+
XCTAssertNil(expected)
199+
return
200+
}
201+
XCTAssertEqual(String(cap), expected)
202+
}
203+
204+
expect(particle, particleInput, capture: "id", "123")
205+
expect(particle, particleInput, capture: "name", "particle")
206+
expect(uuid, particleInput, capture: "id", nil)
207+
expect(uuid, particleInput, capture: "name", nil)
208+
expect(digitID, particleInput, capture: "id", nil)
209+
expect(digitID, particleInput, capture: "name", nil)
210+
211+
expect(particle, uuidInput, capture: "id", nil)
212+
expect(particle, uuidInput, capture: "name", nil)
213+
expect(uuid, uuidInput, capture: "id", "1234-abcd-5678")
214+
expect(uuid, uuidInput, capture: "name", "uuid")
215+
expect(digitID, uuidInput, capture: "id", nil)
216+
expect(digitID, uuidInput, capture: "name", nil)
217+
218+
expect(particle, digitInput, capture: "id", nil)
219+
expect(particle, digitInput, capture: "name", nil)
220+
expect(uuid, digitInput, capture: "id", nil)
221+
expect(uuid, digitInput, capture: "name", nil)
222+
expect(digitID, digitInput, capture: "id", "1234")
223+
expect(digitID, digitInput, capture: "name", "insert_name_here")
224+
}
178225
}

0 commit comments

Comments
 (0)