diff options
| author | Ruben Beltran del Rio <jj@r.bdr.sh> | 2026-06-14 17:07:38 +0200 |
|---|---|---|
| committer | Ruben Beltran del Rio <jj@r.bdr.sh> | 2026-06-15 13:38:02 +0200 |
| commit | 3402f5764f794a60f85a152a13c4eacaa2a719f6 (patch) | |
| tree | 9fafe13da4caee303313033e313461a556f9f495 /Tests/NorgKeyboardToolbarTests/LineScannerTests.swift | |
Extract from Norganizer
Diffstat (limited to 'Tests/NorgKeyboardToolbarTests/LineScannerTests.swift')
| -rw-r--r-- | Tests/NorgKeyboardToolbarTests/LineScannerTests.swift | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/Tests/NorgKeyboardToolbarTests/LineScannerTests.swift b/Tests/NorgKeyboardToolbarTests/LineScannerTests.swift new file mode 100644 index 0000000..17b9cb0 --- /dev/null +++ b/Tests/NorgKeyboardToolbarTests/LineScannerTests.swift @@ -0,0 +1,45 @@ +import Testing + +@testable import NorgKeyboardToolbar + +struct LineScannerTests { + + @Test func lineStartFindsBeginningOfCurrentLine() { + let chars = Array("first\nsecond") + // Cursor inside "second" (offset 9 -> the 'o'). + #expect(LineScanner.lineStart(in: chars, at: 9) == 6) + } + + @Test func lineStartAtBufferStartIsZero() { + let chars = Array("hello") + #expect(LineScanner.lineStart(in: chars, at: 3) == 0) + } + + @Test func lineStartJustAfterNewlineIsTheNewLine() { + let chars = Array("a\nb") + // Offset 2 sits at 'b', whose line starts right after the newline. + #expect(LineScanner.lineStart(in: chars, at: 2) == 2) + } + + @Test func lineEndFindsNextNewline() { + let chars = Array("first\nsecond") + #expect(LineScanner.lineEnd(in: chars, at: 2) == 5) + } + + @Test func lineEndAtLastLineIsBufferCount() { + let chars = Array("first\nsecond") + #expect(LineScanner.lineEnd(in: chars, at: 8) == chars.count) + } + + @Test func lineEndOnNewlineStaysPut() { + let chars = Array("a\nb") + // Offset 1 is the newline itself. + #expect(LineScanner.lineEnd(in: chars, at: 1) == 1) + } + + @Test func handlesEmptyBuffer() { + let chars: [Character] = [] + #expect(LineScanner.lineStart(in: chars, at: 0) == 0) + #expect(LineScanner.lineEnd(in: chars, at: 0) == 0) + } +} |