git.iko.soy/opencode-android
on a40d3a2 help sign in
55 lines 1.6 kB history raw
1package soy.iko.opencode.ui.components
3import org.junit.Assert.assertEquals
4import org.junit.Assert.assertFalse
5import org.junit.Assert.assertTrue
6import org.junit.Test
8class DiffParseTest {
10 @Test
11 fun parsesAddedRemovedContextAndHunks() {
12 val diff = """
13 --- a/foo.txt
14 +++ b/foo.txt
15 @@ -1,2 +1,2 @@
16 context line
17 -removed line
18 +added line
19 """.trimIndent()
21 val lines = parseDiff(diff)
22 assertEquals(6, lines.size)
23 assertTrue(lines[0] is DiffLine.FileHeader) // ---
24 assertTrue(lines[1] is DiffLine.FileHeader) // +++
25 assertTrue(lines[2] is DiffLine.Hunk) // @@
26 assertTrue(lines[3] is DiffLine.Context)
27 assertTrue(lines[4] is DiffLine.Remove)
28 assertEquals("removed line", (lines[4] as DiffLine.Remove).text)
29 assertTrue(lines[5] is DiffLine.Add)
30 assertEquals("added line", (lines[5] as DiffLine.Add).text)
31 }
33 @Test
34 fun stripsPrefixFromAddAndRemove() {
35 val lines = parseDiff("-gone\n+new")
36 assertEquals("gone", (lines[0] as DiffLine.Remove).text)
37 assertEquals("new", (lines[1] as DiffLine.Add).text)
38 }
40 @Test
41 fun looksLikeDiffTrueForUnifiedDiff() {
42 assertTrue(looksLikeDiff("@@ -1,1 +1,1 @@\n-old\n+new"))
43 }
45 @Test
46 fun looksLikeDiffFalseForPlainText() {
47 assertFalse(looksLikeDiff("This is just some prose.\nNo diff here."))
48 assertFalse(looksLikeDiff(""))
49 }
51 @Test
52 fun emptyInputParsesToEmpty() {
53 assertTrue(parseDiff("").isEmpty())
54 }