@@ -14,17 +14,35 @@ import XCTest
1414import _StringProcessing
1515import RegexBuilder
1616
17+ @available ( SwiftStdlib 6 . 0 , * )
18+ fileprivate func _literalTest< T> (
19+ _ regex: Regex < T > ,
20+ expected: String ? ,
21+ file: StaticString = #filePath,
22+ line: UInt = #line
23+ ) {
24+ XCTAssertEqual ( regex. _literalPattern, expected, file: file, line: line)
25+ if let expected {
26+ let remadeRegex = try ? Regex ( expected)
27+ XCTAssertEqual ( expected, remadeRegex? . _literalPattern, file: file, line: line)
28+ }
29+ }
30+
1731@available ( SwiftStdlib 6 . 0 , * )
1832extension RegexTests {
1933 func testPrintableRegex( ) throws {
2034 let regexString = #"([a-fGH1-9[^\D]]+)?b*cd(e.+)\2\w\S+?"#
21- let regex = try ! Regex ( regexString)
22- let pattern = try XCTUnwrap ( regex. _literalPattern)
35+ let regex = try Regex ( regexString)
2336 // Note: This is true for this particular regex, but not all regexes
24- XCTAssertEqual ( regexString , pattern )
37+ _literalTest ( regex , expected : regexString )
2538
2639 let printableRegex = try XCTUnwrap ( PrintableRegex ( regex) )
27- XCTAssertEqual ( " \( printableRegex) " , pattern)
40+ XCTAssertEqual ( " \( printableRegex) " , regexString)
41+ }
42+
43+ func testUnicodeEscapes( ) throws {
44+ let regex = #/\r\n\t cafe\u{301} \u{1D11E}/#
45+ _literalTest ( regex, expected: #"\r\n\t cafe\u0301 \U0001D11E"# )
2846 }
2947
3048 func testPrintableDSLRegex( ) throws {
@@ -39,8 +57,7 @@ extension RegexTests {
3957 } . dotMatchesNewlines ( )
4058 Optionally ( " c " )
4159 } . ignoresCase ( )
42- let pattern = try XCTUnwrap ( regex. _literalPattern)
43- XCTAssertEqual ( " (?i:(?:aaa)+?(?s:(?:bbb)*|d+|e{3,})c?) " , pattern)
60+ _literalTest ( regex, expected: " (?i:(?:aaa)+?(?s:(?:bbb)*|d+|e{3,})c?) " )
4461
4562 let nonPrintableRegex = Regex {
4663 OneOrMore ( " a " )
@@ -49,7 +66,7 @@ extension RegexTests {
4966 } transform: { Int ( $0) ! }
5067 Optionally ( " b " )
5168 }
52- XCTAssertNil ( nonPrintableRegex. _literalPattern )
69+ _literalTest ( nonPrintableRegex, expected : nil )
5370 }
5471}
5572
0 commit comments