/
test_dict.py
68 lines (47 loc) · 1.76 KB
/
test_dict.py
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
# -*- coding: UTF-8 -*-
"""Unittests for the big dict of dicts containing all emoji"""
import re
import emoji
_all_languages = None
def all_languages():
"""List of all language keys in EMOJI_DATA"""
global _all_languages
if _all_languages is None:
langs = set()
for item in emoji.EMOJI_DATA.values():
langs.update(item.keys())
_all_languages = [lang for lang in langs if len(lang) == 2 and lang.lower() == lang]
return _all_languages
def test_emoji_versions():
"""Check that every emoji has a valid version"""
for item in emoji.EMOJI_DATA.values():
assert "E" in item
v = item["E"]
assert isinstance(v, (int, float))
assert v >= 0.6
def check_duplicate_names(lang):
"""Check that there are no duplicate names in the fully_qualified except for differnt variants"""
seen = {}
for emj, item in emoji.EMOJI_DATA.items():
if item["status"] > emoji.STATUS["fully_qualified"]:
continue
if lang not in item:
continue
name = item[lang]
if name in seen and 'variant' in item:
seen[name] += 1
else:
assert name not in seen
seen[name] = 0
def test_duplicate_names():
"""Check that there are no duplicate names in the fully_qualified except for differnt variants"""
for lang in all_languages():
check_duplicate_names(lang)
def test_name_valid():
"""Check that every name starts with colons and does not contain other colons or whitespace"""
pattern = re.compile(r":[^:\s]+:")
for item in emoji.EMOJI_DATA.values():
for lang in all_languages():
if lang in item:
name = item[lang]
assert pattern.match(name)