Browse Source

Fix Emoji test

pull/3621/head
Benoit Marty 1 week ago
parent
commit
4fefecd0d9
  1. 3
      features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/Emoji.kt
  2. 31
      features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/utils/EmojiTest.kt

3
features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/Emoji.kt

@ -22,7 +22,10 @@ import io.element.android.features.messages.impl.timeline.model.event.AN_EMOJI_O @@ -22,7 +22,10 @@ import io.element.android.features.messages.impl.timeline.model.event.AN_EMOJI_O
fun String.containsOnlyEmojis(): Boolean {
if (LocalInspectionMode.current) return this == AN_EMOJI_ONLY_TEXT
if (isEmpty()) return false
return containsOnlyEmojisInternal()
}
internal fun String.containsOnlyEmojisInternal(): Boolean {
val matcher = GraphemeMatcher(this)
var m: GraphemeMatchResult? = null
var contiguous = true

31
features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/utils/EmojiTest.kt

@ -8,29 +8,30 @@ @@ -8,29 +8,30 @@
package io.element.android.features.messages.impl.utils
import org.junit.Assert
import org.junit.Assert.assertTrue
import org.junit.Test
class EmojiTest {
@Test
fun validEmojis() {
// Simple single/multiple single-codepoint emojis per string
Assert.assertTrue("πŸ‘".containsOnlyEmojis())
Assert.assertTrue("πŸ˜€".containsOnlyEmojis())
Assert.assertTrue("πŸ™‚πŸ™".containsOnlyEmojis())
Assert.assertTrue("πŸ‘β€οΈπŸ".containsOnlyEmojis()) // πŸ‘ is a pictographic
Assert.assertTrue("πŸ‘¨β€πŸ‘©β€πŸ‘¦1οΈβƒ£πŸš€πŸ‘³πŸΎβ€β™‚οΈπŸͺ©".containsOnlyEmojis())
Assert.assertTrue("🌍🌎🌏".containsOnlyEmojis())
assertTrue("πŸ‘".containsOnlyEmojisInternal())
assertTrue("πŸ˜€".containsOnlyEmojisInternal())
assertTrue("πŸ™‚πŸ™".containsOnlyEmojisInternal())
assertTrue("πŸ‘β€οΈπŸ".containsOnlyEmojisInternal()) // πŸ‘ is a pictographic
assertTrue("πŸ‘¨β€πŸ‘©β€πŸ‘¦1οΈβƒ£πŸš€πŸ‘³πŸΎβ€β™‚οΈπŸͺ©".containsOnlyEmojisInternal())
assertTrue("🌍🌎🌏".containsOnlyEmojisInternal())
// Awkward multi-codepoint graphemes
Assert.assertTrue("πŸ§‘β€πŸ§‘β€πŸ§’β€πŸ§’".containsOnlyEmojis())
Assert.assertTrue("πŸ΄β€β˜ ".containsOnlyEmojis())
Assert.assertTrue("πŸ‘©πŸΏβ€πŸ”§".containsOnlyEmojis())
assertTrue("πŸ§‘β€πŸ§‘β€πŸ§’β€πŸ§’".containsOnlyEmojisInternal())
assertTrue("πŸ΄β€β˜ ".containsOnlyEmojisInternal())
assertTrue("πŸ‘©πŸΏβ€πŸ”§".containsOnlyEmojisInternal())
Assert.assertFalse("".containsOnlyEmojis())
Assert.assertFalse(" ".containsOnlyEmojis())
Assert.assertFalse("πŸ™‚ πŸ™".containsOnlyEmojis())
Assert.assertFalse(" πŸ™‚ πŸ™ ".containsOnlyEmojis())
Assert.assertFalse("Hello".containsOnlyEmojis())
Assert.assertFalse("Hello πŸ‘‹".containsOnlyEmojis())
Assert.assertFalse("".containsOnlyEmojisInternal())
Assert.assertFalse(" ".containsOnlyEmojisInternal())
Assert.assertFalse("πŸ™‚ πŸ™".containsOnlyEmojisInternal())
Assert.assertFalse(" πŸ™‚ πŸ™ ".containsOnlyEmojisInternal())
Assert.assertFalse("Hello".containsOnlyEmojisInternal())
Assert.assertFalse("Hello πŸ‘‹".containsOnlyEmojisInternal())
}
}

Loading…
Cancel
Save