mod: +++++++приоритеты и тесты html-мнемоник для decode_to_unicode()
This commit is contained in:
@@ -34,6 +34,10 @@ EN_ALPHABET_UPPER = EN_VOWELS_UPPER | EN_CONSONANTS_UPPER
|
|||||||
EN_ALPHABET_LOWER = frozenset([char.lower() for char in EN_ALPHABET_UPPER])
|
EN_ALPHABET_LOWER = frozenset([char.lower() for char in EN_ALPHABET_UPPER])
|
||||||
EN_ALPHABET_FULL = EN_ALPHABET_UPPER | EN_ALPHABET_LOWER
|
EN_ALPHABET_FULL = EN_ALPHABET_UPPER | EN_ALPHABET_LOWER
|
||||||
|
|
||||||
|
# --- Специальные символы ---
|
||||||
|
NBSP_CHAR = '\u00A0' # Неразрывный пробел ( )
|
||||||
|
SHY_CHAR = '\u00AD' # Мягкий перенос (­)
|
||||||
|
|
||||||
# === КОНСТАНТЫ ДЛЯ КОДИРОВАНИЯ HTML-МНЕМНОИКОВ ===
|
# === КОНСТАНТЫ ДЛЯ КОДИРОВАНИЯ HTML-МНЕМНОИКОВ ===
|
||||||
# --- ЧЕРНЫЙ СПИСОК: Символы, которые НИКОГДА не нужно кодировать в мнемоники ---
|
# --- ЧЕРНЫЙ СПИСОК: Символы, которые НИКОГДА не нужно кодировать в мнемоники ---
|
||||||
NEVER_ENCODE_CHARS = (frozenset(['!', '#', '%', '(', ')', '*', ',', '.', '/', ':', ';', '=', '?', '@',
|
NEVER_ENCODE_CHARS = (frozenset(['!', '#', '%', '(', ')', '*', ',', '.', '/', ':', ';', '=', '?', '@',
|
||||||
@@ -106,11 +110,10 @@ CUSTOM_ENCODE_MAP = {
|
|||||||
'\u00ae': '®', # ® / ® / ® / ®
|
'\u00ae': '®', # ® / ® / ® / ®
|
||||||
'\u00b7': '·', # · / · / · / ·
|
'\u00b7': '·', # · / · / · / ·
|
||||||
'\u0060': '`', # ` / grave / DiacriticalGrave
|
'\u0060': '`', # ` / grave / DiacriticalGrave
|
||||||
'\u00a8': '¨', # ¨ / ¨ / ¨ / ¨
|
'\u00a8': '¨', # ¨ / ¨ / ¨ / ¨ / ¨
|
||||||
'\u00b1': '±', # ± / ± / ±
|
'\u00b1': '±', # ± / ± / ±
|
||||||
'\u00bd': '½', # ½ / ½ / ½
|
'\u00bd': '½', # ½ / ½ / ½
|
||||||
'\u00af': '¯', # ¯ / ¯ / ¯
|
'\u00af': '¯', # ¯ / ¯ / ¯
|
||||||
'\u00a8': '¨', # ¨ / ¨ / ¨
|
|
||||||
'\u201a': '‚', # ‚ / ‚ / ‚
|
'\u201a': '‚', # ‚ / ‚ / ‚
|
||||||
'\u223e': '∾', # ∾ / ∾ / ∾
|
'\u223e': '∾', # ∾ / ∾ / ∾
|
||||||
'\u2207': '∇', # ∇ / ∇ / ∇
|
'\u2207': '∇', # ∇ / ∇ / ∇
|
||||||
|
@@ -332,15 +332,15 @@ STRINGS_FOR_DECODE = [
|
|||||||
("ζ ℨ 𝔷 Ж ж ⇝ ℤ 𝕫 𝒵 𝓏 ‍", "ζ ℨ 𝔷 Ж ж ⇝ ℤ 𝕫 𝒵 𝓏 \u200d"),
|
("ζ ℨ 𝔷 Ж ж ⇝ ℤ 𝕫 𝒵 𝓏 ‍", "ζ ℨ 𝔷 Ж ж ⇝ ℤ 𝕫 𝒵 𝓏 \u200d"),
|
||||||
]
|
]
|
||||||
|
|
||||||
@pytest.mark.parametrize("input_string, expected_output", STRINGS_FOR_DECODE)
|
@pytest.mark.parametrize("mnemonic_string, unicode_output", STRINGS_FOR_DECODE)
|
||||||
def test_html_mnemo_to_utf(input_string, expected_output):
|
def test_html_mnemo_to_utf(mnemonic_string, unicode_output):
|
||||||
"""
|
"""
|
||||||
Проверяет ПОВЕДЕНИЕ: декодирование HTML-мнемоников в Unicode-строки.
|
Проверяет ПОВЕДЕНИЕ: декодирование HTML-мнемоников в Unicode-строки.
|
||||||
"""
|
"""
|
||||||
# Act (действие) - тестируем
|
# Act (действие) - тестируем
|
||||||
actual_output = codec.decode_to_unicode(input_string)
|
actual_output = codec.decode_to_unicode(mnemonic_string)
|
||||||
# Assert (проверка)
|
# Assert (проверка)
|
||||||
assert actual_output == expected_output
|
assert actual_output == unicode_output
|
||||||
|
|
||||||
|
|
||||||
STRINGS_FOR_ENCODE = [
|
STRINGS_FOR_ENCODE = [
|
||||||
@@ -641,23 +641,23 @@ STRINGS_FOR_ENCODE = [
|
|||||||
("\u200b Ζ ζ ℨ 𝔷 Ж ж ⇝ ℤ", "​ Ζ ζ ℨ 𝔷 Ж ж ⇝ ℤ"),
|
("\u200b Ζ ζ ℨ 𝔷 Ж ж ⇝ ℤ", "​ Ζ ζ ℨ 𝔷 Ж ж ⇝ ℤ"),
|
||||||
]
|
]
|
||||||
|
|
||||||
@pytest.mark.parametrize("input_string, expected_output", STRINGS_FOR_ENCODE)
|
@pytest.mark.parametrize("unicode_string, mnemonic_string", STRINGS_FOR_ENCODE)
|
||||||
def test_utf_to_html_mnemo(input_string, expected_output):
|
def test_utf_to_html_mnemo(unicode_string, mnemonic_string):
|
||||||
"""
|
"""
|
||||||
Проверяет ПОВЕДЕНИЕ: кодирование Unicode-строк в HTML-мнемоники.
|
Проверяет ПОВЕДЕНИЕ: кодирование Unicode-строк в HTML-мнемоники.
|
||||||
"""
|
"""
|
||||||
# Act (действие) - тестируем
|
# Act (действие) - тестируем
|
||||||
actual_output = codec.encode_from_unicode(input_string, mode="mnemonic")
|
actual_output = codec.encode_from_unicode(unicode_string, mode="mnemonic")
|
||||||
# Assert (проверка)
|
# Assert (проверка)
|
||||||
assert actual_output == expected_output
|
assert actual_output == mnemonic_string
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("expected_output, input_string", STRINGS_FOR_ENCODE)
|
@pytest.mark.parametrize("mnemonic_string, unicode_string", STRINGS_FOR_ENCODE)
|
||||||
def test_html_mnemo_to_utf_back(expected_output, input_string):
|
def test_html_mnemo_to_utf_back(mnemonic_string, unicode_string):
|
||||||
"""
|
"""
|
||||||
Проверяет ОБРАТНОЕ ПОВЕДЕНИЕ: из HTML-мнемоники после encode_from_unicode() в Unicode-строки.
|
Проверяет ОБРАТНОЕ ПОВЕДЕНИЕ: из HTML-мнемоники после encode_from_unicode() в Unicode-строки.
|
||||||
"""
|
"""
|
||||||
# Act (действие) - тестируем
|
# Act (действие) - тестируем
|
||||||
actual_output = codec.decode_to_unicode(input_string)
|
actual_output = codec.decode_to_unicode(unicode_string)
|
||||||
# Assert (проверка)
|
# Assert (проверка)
|
||||||
assert actual_output == expected_output
|
assert actual_output == mnemonic_string
|
Reference in New Issue
Block a user