diff options
| author | Ruben Beltran del Rio <jj@r.bdr.sh> | 2026-06-16 12:08:21 +0200 |
|---|---|---|
| committer | Ruben Beltran del Rio <jj@r.bdr.sh> | 2026-06-16 12:22:47 +0200 |
| commit | 501fdce29e4d2c46c4708ad7f44056878e0db3fa (patch) | |
| tree | db923b77037db9f5b37600a6e34c3bb2e8a971be /Tests/NorgKitTests/Helpers/TextHelperTests.swift | |
Initial extraction from Norganize1.0.0
Diffstat (limited to 'Tests/NorgKitTests/Helpers/TextHelperTests.swift')
| -rw-r--r-- | Tests/NorgKitTests/Helpers/TextHelperTests.swift | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/Tests/NorgKitTests/Helpers/TextHelperTests.swift b/Tests/NorgKitTests/Helpers/TextHelperTests.swift new file mode 100644 index 0000000..9e236ff --- /dev/null +++ b/Tests/NorgKitTests/Helpers/TextHelperTests.swift @@ -0,0 +1,71 @@ +import Testing + +@testable import NorgKit + +struct TextHelperTests { + + @Test func lineSlicesSplitsOnNewlines() { + #expect(TextHelper.lineSlices("a\nb\nc").map(String.init) == ["a", "b", "c"]) + } + + @Test func lineSlicesKeepsTrailingEmptyLine() { + #expect(TextHelper.lineSlices("a\n").map(String.init) == ["a", ""]) + } + + @Test func lineSlicesHandlesEmptyString() { + #expect(TextHelper.lineSlices("").map(String.init) == [""]) + } + + @Test func enumerateLinesProvidesIndices() { + var seen: [(String, Int)] = [] + TextHelper.enumerateLines(in: "one\ntwo") { line, index in + seen.append((String(line), index)) + } + #expect(seen.map(\.0) == ["one", "two"]) + #expect(seen.map(\.1) == [0, 1]) + } + + @Test func enumerateLinesStripsCarriageReturns() { + var lines: [String] = [] + TextHelper.enumerateLines(in: "a\r\nb\r\n") { line, _ in lines.append(String(line)) } + #expect(lines == ["a", "b", ""]) + } + + @Test func lineReturnsRequestedLine() { + #expect(TextHelper.line(in: "a\nb\nc", at: 1).map(String.init) == "b") + } + + @Test func lineReturnsLastLineWithoutTrailingNewline() { + #expect(TextHelper.line(in: "a\nb", at: 1).map(String.init) == "b") + } + + @Test func lineStripsCarriageReturn() { + #expect(TextHelper.line(in: "a\r\nb", at: 0).map(String.init) == "a") + } + + @Test func lineReturnsNilForOutOfRange() { + #expect(TextHelper.line(in: "a\nb", at: 5) == nil) + } + + @Test func lineReturnsNilForNegativeIndex() { + #expect(TextHelper.line(in: "a", at: -1) == nil) + } + + @Test func whitespaceTrimmedSubstringTrimsBothEnds() { + let trimmed = TextHelper.whitespaceTrimmed(" \t hi \t "[...]) + #expect(trimmed == "hi") + } + + @Test func whitespaceTrimmedSubstringOfAllWhitespaceIsEmpty() { + #expect(TextHelper.whitespaceTrimmed(" \t "[...]).isEmpty) + } + + @Test func whitespaceTrimmedStringTrimsWhenNeeded() { + #expect(TextHelper.whitespaceTrimmed(" hi ") == "hi") + } + + @Test func whitespaceTrimmedStringReturnsSameValueWhenAlreadyTrimmed() { + let input = "already-clean" + #expect(TextHelper.whitespaceTrimmed(input) == input) + } +} |