aboutsummaryrefslogtreecommitdiff
path: root/Tests/NorgKeyboardToolbarTests/LineScannerTests.swift
diff options
context:
space:
mode:
authorRuben Beltran del Rio <jj@r.bdr.sh>2026-06-14 17:07:38 +0200
committerRuben Beltran del Rio <jj@r.bdr.sh>2026-06-15 13:38:02 +0200
commit3402f5764f794a60f85a152a13c4eacaa2a719f6 (patch)
tree9fafe13da4caee303313033e313461a556f9f495 /Tests/NorgKeyboardToolbarTests/LineScannerTests.swift
Extract from Norganizer
Diffstat (limited to 'Tests/NorgKeyboardToolbarTests/LineScannerTests.swift')
-rw-r--r--Tests/NorgKeyboardToolbarTests/LineScannerTests.swift45
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)
+ }
+}