From 3402f5764f794a60f85a152a13c4eacaa2a719f6 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Sun, 14 Jun 2026 17:07:38 +0200 Subject: Extract from Norganizer --- .../LineScannerTests.swift | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Tests/NorgKeyboardToolbarTests/LineScannerTests.swift (limited to 'Tests/NorgKeyboardToolbarTests/LineScannerTests.swift') 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) + } +} -- cgit