Skip to content

Commit e05e528

Browse files
committed
Add unit test for getSearchTerm, stripSpecialCharacters and getRegexPattern
1 parent bba4652 commit e05e528

File tree

1 file changed

+48
-2
lines changed

1 file changed

+48
-2
lines changed

CodeEditTests/Features/Documents/WorkspaceDocument+SearchState+FindTests.swift

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ final class FindTests: XCTestCase {
4747

4848
for index in 0..<fileURLs.count {
4949
if index % 2 == 0 {
50-
try String("Loren Ipsum").write(to: fileURLs[index], atomically: true, encoding: .utf8)
50+
try String("Loren Ipsum.").write(to: fileURLs[index], atomically: true, encoding: .utf8)
5151
} else {
52-
try String("Aperiam asperiores").write(to: fileURLs[index], atomically: true, encoding: .utf8)
52+
try String("Aperiam*asperiores").write(to: fileURLs[index], atomically: true, encoding: .utf8)
5353
}
5454
}
5555

@@ -89,6 +89,52 @@ final class FindTests: XCTestCase {
8989
try? FileManager.default.removeItem(at: directory)
9090
}
9191

92+
func testGetSearchTerm() {
93+
let query = "test*/Quer@#y"
94+
95+
searchState.selectedMode[2] = .Containing
96+
XCTAssertEqual(searchState.getSearchTerm(query), "*test*quer*y*")
97+
98+
searchState.selectedMode[2] = .StartingWith
99+
XCTAssertEqual(searchState.getSearchTerm(query), "test*quer*y*")
100+
101+
searchState.selectedMode[2] = .EndingWith
102+
XCTAssertEqual(searchState.getSearchTerm(query), "*test*quer*y")
103+
104+
searchState.selectedMode[2] = .MatchingWord
105+
XCTAssertEqual(searchState.getSearchTerm(query), "test*quer*y")
106+
107+
searchState.caseSensitive = true
108+
XCTAssertEqual(searchState.getSearchTerm(query), "test*Quer*y")
109+
}
110+
111+
func testStripSpecialCharacters() {
112+
let string = "test!@#Query"
113+
let strippedString = searchState.stripSpecialCharacters(from: string)
114+
XCTAssertEqual(strippedString, "test*Query")
115+
}
116+
117+
func testGetRegexPattern() {
118+
let query = "@(test. !*#Query"
119+
120+
searchState.selectedMode[2] = .Containing
121+
XCTAssertEqual(searchState.getRegexPattern(query), "@\\(test\\. !\\*#Query")
122+
123+
searchState.selectedMode[2] = .StartingWith
124+
XCTAssertEqual(searchState.getRegexPattern(query), "\\b@\\(test\\. !\\*#Query")
125+
126+
searchState.selectedMode[2] = .EndingWith
127+
XCTAssertEqual(searchState.getRegexPattern(query), "@\\(test\\. !\\*#Query\\b")
128+
129+
searchState.selectedMode[2] = .MatchingWord
130+
XCTAssertEqual(searchState.getRegexPattern(query), "\\b@\\(test\\. !\\*#Query\\b")
131+
132+
// Enabling case sensitivity shouldn't affect the regex pattern because if case sensitivity is enabled,
133+
// `NSRegularExpression.Options.caseInsensitive` is passed to `NSRegularExpression`.
134+
searchState.caseSensitive = true
135+
XCTAssertEqual(searchState.getRegexPattern(query), "\\b@\\(test\\. !\\*#Query\\b")
136+
}
137+
92138
/// Tests the search functionality of the `WorkspaceDocument.SearchState` and `SearchIndexer`.
93139
func testSearch() async {
94140
let searchExpectation = XCTestExpectation(description: "Search for 'Ipsum'")

0 commit comments

Comments
 (0)