File: test_versions.py

package info (click to toggle)
python-emoji 2.14.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 4,664 kB
  • sloc: python: 3,120; javascript: 262; makefile: 14
file content (134 lines) | stat: -rw-r--r-- 4,119 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
"""Unittests for versions in EMOJI_DATA"""

from typing import Any, Dict, List
import pytest
import emoji.unicode_codes
from testutils import all_language_packs


def test_emoji_versions_complete_emojize():
    # Check that every emoji has a valid version
    replacement = '<3'
    for lang_code, emoji_pack in all_language_packs():
        for name in emoji_pack.keys():
            version: List[float] = []

            def f(e: str, d: Dict[str, Any]) -> str:
                v = d['E']
                n = d[lang_code]
                assert n == name
                assert isinstance(v, (int, float))
                assert v >= 0.6
                version.append(v)
                return replacement

            r = emoji.emojize(name, language=lang_code, version=0.0, handle_version=f)
            assert len(version) == 1
            assert r == replacement


def test_emoji_versions_complete_demojize():
    # Check that every emoji has a valid version
    for lang_code, emoji_pack in all_language_packs():
        for name in emoji_pack.keys():
            version: List[float] = []

            def f(e: str, d: Dict[str, Any]) -> str:
                v = d['E']
                assert isinstance(v, (int, float))
                assert v >= 0.6
                version.append(v)
                return ''

            emoji.demojize(
                emoji.emojize(name, language=lang_code),
                language=lang_code,
                version=0.0,
                handle_version=f,
            )
            if len(version) != 1:
                print(name)
                print(
                    emoji.emojize(name, language=lang_code)
                    .encode('unicode-escape')
                    .decode('utf-8')
                )
                print(
                    emoji.demojize(
                        emoji.emojize(name, language=lang_code), language=lang_code
                    )
                    .encode('unicode-escape')
                    .decode('utf-8')
                )
            assert len(version) == 1


def test_method_version():
    # Test method "emoji.version()"

    assert emoji.version(':snake:') == 0.6
    assert emoji.version('\U0001f40d') == 0.6

    assert emoji.version(':brain:') == 5
    assert emoji.version('\U0001f9e0') == 5
    assert emoji.version(':cerebro:') == 5

    assert emoji.version('prefix :people_hugging: suffix') == 13
    assert emoji.version('prefix \U0001fac2 suffix') == 13

    assert emoji.version('\U0001f611') == 1
    assert emoji.version(':expressionless_face:') == 1
    assert emoji.version(':expressionless:') == 1

    assert emoji.version("':pouring_liquid::people_hugging:") == 14
    assert emoji.version('\U0001fad7\U0001fac2') == 14

    assert emoji.emojize(':123:', version=5, variant='text_type') == ':123:'

    with pytest.raises(ValueError):
        emoji.version('test')

    with pytest.raises(ValueError):
        emoji.version("':snak:")


def test_method_replace_version():
    # Test method "emoji.replace_emoji(string, version=X.Y)"

    assert (
        emoji.replace_emoji(
            '\U0001f40d\U0001f9e0\U0001fac2\U0001fad7\U0001fac2', version=6
        )
        == '\U0001f40d\U0001f9e0'
    )

    assert emoji.replace_emoji('Hi, I am fine. 😁', version=0) == 'Hi, I am fine. '
    assert emoji.replace_emoji('Hi', version=0) == 'Hi'
    assert emoji.replace_emoji('Hello 🇫🇷👌', version=0) == 'Hello '
    assert (
        emoji.replace_emoji(
            'Hello 🇫🇷👌',
            'x',
            version=0,
        )
        == 'Hello xx'
    )
    assert (
        emoji.replace_emoji(
            'Hello 🇫🇷👌',
            'x',
            version=1,
        )
        == 'Hello 🇫🇷👌'
    )

    def replace(emj: str, data: Dict[str, Any]) -> str:
        assert emj in ['🇫🇷', '👌']
        return 'x'

    assert emoji.replace_emoji('Hello 🇫🇷👌', replace, version=0.1) == 'Hello xx'

    assert (
        emoji.replace_emoji('A 🦖 is eating a 🥐', replace='', version=5.0)
        == 'A 🦖 is eating a 🥐'
    )