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_FULL = EN_ALPHABET_UPPER | EN_ALPHABET_LOWER
|
||||
|
||||
# --- Специальные символы ---
|
||||
NBSP_CHAR = '\u00A0' # Неразрывный пробел ( )
|
||||
SHY_CHAR = '\u00AD' # Мягкий перенос (­)
|
||||
|
||||
# === КОНСТАНТЫ ДЛЯ КОДИРОВАНИЯ HTML-МНЕМНОИКОВ ===
|
||||
# --- ЧЕРНЫЙ СПИСОК: Символы, которые НИКОГДА не нужно кодировать в мнемоники ---
|
||||
NEVER_ENCODE_CHARS = (frozenset(['!', '#', '%', '(', ')', '*', ',', '.', '/', ':', ';', '=', '?', '@',
|
||||
@@ -97,20 +101,19 @@ CUSTOM_ENCODE_MAP = {
|
||||
# '\u007b': '{', # { / { / {
|
||||
# '\u007d': '}', # } / } / }
|
||||
# '\u007c': '|', # | / | / | / |
|
||||
# '\u0026': '&', # & / & / &
|
||||
# '\u00A0': ' ', # / /  
|
||||
'\u0022': '"', # " / " / "
|
||||
# '\u0026': '&', # & / & / &
|
||||
# '\u00A0': ' ', # / /  
|
||||
'\u0022': '"', # " / " / "
|
||||
'\u0026': '&', # & / & / &
|
||||
'\u003e': '>', # > / > / >
|
||||
'\u003c': '<', # < / < / <
|
||||
'\u003c': '<', # < / < / <
|
||||
'\u00ae': '®', # ® / ® / ® / ®
|
||||
'\u00b7': '·', # · / · / · / ·
|
||||
'\u0060': '`', # ` / grave / DiacriticalGrave
|
||||
'\u00a8': '¨', # ¨ / ¨ / ¨ / ¨
|
||||
'\u00a8': '¨', # ¨ / ¨ / ¨ / ¨ / ¨
|
||||
'\u00b1': '±', # ± / ± / ±
|
||||
'\u00bd': '½', # ½ / ½ / ½
|
||||
'\u00af': '¯', # ¯ / ¯ / ¯
|
||||
'\u00a8': '¨', # ¨ / ¨ / ¨
|
||||
'\u00af': '¯', # ¯ / ¯ / ¯
|
||||
'\u201a': '‚', # ‚ / ‚ / ‚
|
||||
'\u223e': '∾', # ∾ / ∾ / ∾
|
||||
'\u2207': '∇', # ∇ / ∇ / ∇
|
||||
|
@@ -332,15 +332,15 @@ STRINGS_FOR_DECODE = [
|
||||
("ζ ℨ 𝔷 Ж ж ⇝ ℤ 𝕫 𝒵 𝓏 ‍", "ζ ℨ 𝔷 Ж ж ⇝ ℤ 𝕫 𝒵 𝓏 \u200d"),
|
||||
]
|
||||
|
||||
@pytest.mark.parametrize("input_string, expected_output", STRINGS_FOR_DECODE)
|
||||
def test_html_mnemo_to_utf(input_string, expected_output):
|
||||
@pytest.mark.parametrize("mnemonic_string, unicode_output", STRINGS_FOR_DECODE)
|
||||
def test_html_mnemo_to_utf(mnemonic_string, unicode_output):
|
||||
"""
|
||||
Проверяет ПОВЕДЕНИЕ: декодирование HTML-мнемоников в Unicode-строки.
|
||||
"""
|
||||
# Act (действие) - тестируем
|
||||
actual_output = codec.decode_to_unicode(input_string)
|
||||
actual_output = codec.decode_to_unicode(mnemonic_string)
|
||||
# Assert (проверка)
|
||||
assert actual_output == expected_output
|
||||
assert actual_output == unicode_output
|
||||
|
||||
|
||||
STRINGS_FOR_ENCODE = [
|
||||
@@ -641,23 +641,23 @@ STRINGS_FOR_ENCODE = [
|
||||
("\u200b Ζ ζ ℨ 𝔷 Ж ж ⇝ ℤ", "​ Ζ ζ ℨ 𝔷 Ж ж ⇝ ℤ"),
|
||||
]
|
||||
|
||||
@pytest.mark.parametrize("input_string, expected_output", STRINGS_FOR_ENCODE)
|
||||
def test_utf_to_html_mnemo(input_string, expected_output):
|
||||
@pytest.mark.parametrize("unicode_string, mnemonic_string", STRINGS_FOR_ENCODE)
|
||||
def test_utf_to_html_mnemo(unicode_string, mnemonic_string):
|
||||
"""
|
||||
Проверяет ПОВЕДЕНИЕ: кодирование Unicode-строк в HTML-мнемоники.
|
||||
"""
|
||||
# Act (действие) - тестируем
|
||||
actual_output = codec.encode_from_unicode(input_string, mode="mnemonic")
|
||||
actual_output = codec.encode_from_unicode(unicode_string, mode="mnemonic")
|
||||
# Assert (проверка)
|
||||
assert actual_output == expected_output
|
||||
assert actual_output == mnemonic_string
|
||||
|
||||
|
||||
@pytest.mark.parametrize("expected_output, input_string", STRINGS_FOR_ENCODE)
|
||||
def test_html_mnemo_to_utf_back(expected_output, input_string):
|
||||
@pytest.mark.parametrize("mnemonic_string, unicode_string", STRINGS_FOR_ENCODE)
|
||||
def test_html_mnemo_to_utf_back(mnemonic_string, unicode_string):
|
||||
"""
|
||||
Проверяет ОБРАТНОЕ ПОВЕДЕНИЕ: из HTML-мнемоники после encode_from_unicode() в Unicode-строки.
|
||||
"""
|
||||
# Act (действие) - тестируем
|
||||
actual_output = codec.decode_to_unicode(input_string)
|
||||
actual_output = codec.decode_to_unicode(unicode_string)
|
||||
# Assert (проверка)
|
||||
assert actual_output == expected_output
|
||||
assert actual_output == mnemonic_string
|
Reference in New Issue
Block a user