From a0205cf1e9cdade3f9fb13b72df47469aadd5e8c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 8 Oct 2024 14:14:39 +0200 Subject: [PATCH] Fix Emoji test --- .../features/messages/impl/utils/Emoji.kt | 3 ++ .../features/messages/impl/utils/EmojiTest.kt | 31 ++++++++++--------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/Emoji.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/Emoji.kt index 1e959ded7b..cf17bca000 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/utils/Emoji.kt +++ b/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 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 diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/utils/EmojiTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/utils/EmojiTest.kt index 88e9fb0c5b..17dbeb5ed2 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/utils/EmojiTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/utils/EmojiTest.kt @@ -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()) } }