Add text formatting send and receive support for conversations.

This commit is contained in:
Cody Henthorne
2023-01-25 10:31:36 -05:00
committed by Greyson Parrelli
parent aa2075c78f
commit cc490f4b73
73 changed files with 1664 additions and 516 deletions

View File

@@ -0,0 +1,118 @@
package org.thoughtcrime.securesms.database
import org.junit.Assert.assertEquals
import org.junit.Test
import org.thoughtcrime.securesms.database.model.databaseprotos.BodyRangeList
class BodyRangeUtilTest {
@Test
fun testMentionBeforeBodyRange() {
val bodyRangeList = BodyRangeList.newBuilder().addRanges(BodyRangeList.BodyRange.newBuilder().setStart(5).setLength(5).build()).build()
val adjustments = listOf(BodyAdjustment(0, 3, 1))
val updatedBodyRanges = bodyRangeList.adjustBodyRanges(adjustments)!!
assertEquals(3, updatedBodyRanges.getRanges(0).start)
assertEquals(5, updatedBodyRanges.getRanges(0).length)
}
@Test
fun textMentionAfterBodyRange() {
val bodyRangeList = BodyRangeList.newBuilder().addRanges(BodyRangeList.BodyRange.newBuilder().setStart(5).setLength(5).build()).build()
val adjustments = listOf(BodyAdjustment(10, 3, 1))
val updatedBodyRanges = bodyRangeList.adjustBodyRanges(adjustments)!!
assertEquals(5, updatedBodyRanges.getRanges(0).start)
assertEquals(5, updatedBodyRanges.getRanges(0).length)
}
@Test
fun testMentionWithinBodyRange() {
val bodyRangeList = BodyRangeList.newBuilder().addRanges(BodyRangeList.BodyRange.newBuilder().setStart(0).setLength(20).build()).build()
val adjustments = listOf(BodyAdjustment(5, 10, 1))
val updatedBodyRanges = bodyRangeList.adjustBodyRanges(adjustments)!!
assertEquals(0, updatedBodyRanges.getRanges(0).start)
assertEquals(11, updatedBodyRanges.getRanges(0).length)
}
@Test
fun testMentionWithinAndEndOfBodyRange() {
val bodyRangeList = BodyRangeList.newBuilder().addRanges(BodyRangeList.BodyRange.newBuilder().setStart(0).setLength(5).build()).build()
val adjustments = listOf(BodyAdjustment(1, 4, 1))
val updatedBodyRanges = bodyRangeList.adjustBodyRanges(adjustments)!!
assertEquals(0, updatedBodyRanges.getRanges(0).start)
assertEquals(2, updatedBodyRanges.getRanges(0).length)
}
@Test
fun testDoubleMention() {
val bodyRangeList = BodyRangeList.newBuilder().addRanges(BodyRangeList.BodyRange.newBuilder().setStart(5).setLength(10).build()).build()
val adjustments = listOf(BodyAdjustment(0, 3, 1), BodyAdjustment(17, 10, 1))
val updatedBodyRanges = bodyRangeList.adjustBodyRanges(adjustments)!!
assertEquals(3, updatedBodyRanges.getRanges(0).start)
assertEquals(10, updatedBodyRanges.getRanges(0).length)
}
@Test
fun testResolvedMentionBeforeBodyRange() {
val bodyRangeList = BodyRangeList.newBuilder().addRanges(BodyRangeList.BodyRange.newBuilder().setStart(10).setLength(20).build()).build()
val adjustments = listOf(BodyAdjustment(0, 1, 10))
val updatedBodyRanges = bodyRangeList.adjustBodyRanges(adjustments)!!
assertEquals(19, updatedBodyRanges.getRanges(0).start)
assertEquals(20, updatedBodyRanges.getRanges(0).length)
}
@Test
fun textResolvedMentionAfterBodyRange() {
val bodyRangeList = BodyRangeList.newBuilder().addRanges(BodyRangeList.BodyRange.newBuilder().setStart(5).setLength(5).build()).build()
val adjustments = listOf(BodyAdjustment(10, 1, 10))
val updatedBodyRanges = bodyRangeList.adjustBodyRanges(adjustments)!!
assertEquals(5, updatedBodyRanges.getRanges(0).start)
assertEquals(5, updatedBodyRanges.getRanges(0).length)
}
@Test
fun testResolvedMentionWithinBodyRange() {
val bodyRangeList = BodyRangeList.newBuilder().addRanges(BodyRangeList.BodyRange.newBuilder().setStart(0).setLength(20).build()).build()
val adjustments = listOf(BodyAdjustment(5, 1, 11))
val updatedBodyRanges = bodyRangeList.adjustBodyRanges(adjustments)!!
assertEquals(0, updatedBodyRanges.getRanges(0).start)
assertEquals(30, updatedBodyRanges.getRanges(0).length)
}
@Test
fun testResolvedMentionWithinAndEndOfBodyRange() {
val bodyRangeList = BodyRangeList.newBuilder().addRanges(BodyRangeList.BodyRange.newBuilder().setStart(0).setLength(2).build()).build()
val adjustments = listOf(BodyAdjustment(1, 1, 4))
val updatedBodyRanges = bodyRangeList.adjustBodyRanges(adjustments)!!
assertEquals(0, updatedBodyRanges.getRanges(0).start)
assertEquals(5, updatedBodyRanges.getRanges(0).length)
}
@Test
fun testDoubleResolvedMention() {
val bodyRangeList = BodyRangeList.newBuilder().addRanges(BodyRangeList.BodyRange.newBuilder().setStart(2).setLength(4).build()).build()
val adjustments = listOf(BodyAdjustment(0, 1, 8), BodyAdjustment(7, 1, 11))
val updatedBodyRanges = bodyRangeList.adjustBodyRanges(adjustments)!!
assertEquals(9, updatedBodyRanges.getRanges(0).start)
assertEquals(4, updatedBodyRanges.getRanges(0).length)
}
}

View File

@@ -20,7 +20,7 @@ class MentionUtilTest {
val update: MentionUtil.UpdatedBodyAndMentions = MentionUtil.update("T test", mentions) { it.recipientId.toString() }
assertThat(update.body, Matchers.`is`("RecipientId::1 test"))
assertThat(update.body.toString(), Matchers.`is`("RecipientId::1 test"))
}
@Test
@@ -32,7 +32,7 @@ class MentionUtilTest {
val update: MentionUtil.UpdatedBodyAndMentions = MentionUtil.update("ONETWO test", mentions) { it.recipientId.toString() }
assertThat(update.body, Matchers.`is`("RecipientId::1RecipientId::2 test"))
assertThat(update.body.toString(), Matchers.`is`("RecipientId::1RecipientId::2 test"))
}
@Test
@@ -44,6 +44,6 @@ class MentionUtilTest {
val update: MentionUtil.UpdatedBodyAndMentions = MentionUtil.update("T test", mentions) { it.recipientId.toString() }
assertThat(update.body, Matchers.`is`("RecipientId::1est"))
assertThat(update.body.toString(), Matchers.`is`("RecipientId::1est"))
}
}