This commit is contained in:
team3
2026-09-22 13:14:06 +02:00
parent a62b587340
commit 2472e89b9c
15 changed files with 461 additions and 28 deletions

View File

@@ -0,0 +1,68 @@
package de.marha.planer
import androidx.compose.ui.text.TextRange
import androidx.compose.ui.text.input.TextFieldValue
import de.marha.planer.data.Editor
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
import org.junit.Test
class EditorTest {
private fun v(text: String, cursor: Int = text.length, end: Int = cursor) = TextFieldValue(text, TextRange(cursor, end))
@Test fun continueList() {
assertEquals("- ", Editor.continueList("- eins"))
assertEquals(" * ", Editor.continueList(" * eins"))
assertEquals("- [ ] ", Editor.continueList("- [x] fertig"))
assertEquals("4. ", Editor.continueList("3. drei"))
assertEquals("", Editor.continueList("- "))
assertEquals("", Editor.continueList("2. "))
assertNull(Editor.continueList("nur Text"))
assertNull(Editor.continueList("---"))
}
@Test fun enterContinuesAndEndsList() {
val next = Editor.afterInput(v("- a"), v("- a\n"))
assertEquals("- a\n- ", next.text)
assertEquals(6, next.selection.start)
val ended = Editor.afterInput(v("- a\n- "), v("- a\n- \n"))
assertEquals("- a\n", ended.text)
assertEquals(4, ended.selection.start)
// Umbruch mitten im Text: der Rest wandert hinter den neuen Marker
val mid = Editor.afterInput(v("1. ab", 4), v("1. a\nb", 5))
assertEquals("1. a\n2. b", mid.text)
assertEquals(8, mid.selection.start)
assertEquals("x\n", Editor.afterInput(v("x"), v("x\n")).text)
}
@Test fun headings() {
val h2 = Editor.heading(v("abc"), 2)
assertEquals("## abc", h2.text)
assertEquals(6, h2.selection.start)
assertEquals("abc", Editor.heading(h2, 2).text)
assertEquals("# abc", Editor.heading(h2, 1).text)
assertEquals("x\n### y\nz", Editor.heading(v("x\ny\nz", 3), 3).text)
}
@Test fun lists() {
val ul = Editor.list(v("abc", 1), false)
assertEquals("- abc", ul.text)
assertEquals(3, ul.selection.start)
assertEquals("abc", Editor.list(ul, false).text)
assertEquals("1. abc", Editor.list(ul, true).text)
assertEquals("1. x\n2. y", Editor.list(v("1. x\ny"), true).text)
assertEquals(" t", Editor.list(v(" - [ ] t"), false).text)
}
@Test fun indentAndBold() {
assertEquals(" - a", Editor.indent(v("- a"), 1).text)
assertEquals("- a", Editor.indent(v(" - a"), -1).text)
assertEquals("- a", Editor.indent(v("- a"), -1).text)
val b = Editor.bold(v("abc", 0, 3))
assertEquals("**abc**", b.text)
assertEquals(TextRange(2, 5), b.selection)
val empty = Editor.bold(v("ab", 1))
assertEquals("a****b", empty.text)
assertEquals(3, empty.selection.start)
}
}