add: тест кодека html-мнемоник
This commit is contained in:
@@ -263,7 +263,6 @@ MATH_ENTITIES = {
|
|||||||
'nVdash': ('\u22AE', '⊮'), # Не влечёт (⊮)
|
'nVdash': ('\u22AE', '⊮'), # Не влечёт (⊮)
|
||||||
'nVDash': ('\u22AF', '⊯'), # Двойная вертикальная черта с двойной перекладиной справа с отрицанием (⊯)
|
'nVDash': ('\u22AF', '⊯'), # Двойная вертикальная черта с двойной перекладиной справа с отрицанием (⊯)
|
||||||
'prurel': ('\u22B0', '⊰'), # Предшествует относительно (⊰)
|
'prurel': ('\u22B0', '⊰'), # Предшествует относительно (⊰)
|
||||||
'scurel': ('\u22B1', '&scurel;'), # Следует за относительно (⊱)
|
|
||||||
'vltri': ('\u22B2', '⊲'), # Нормальная подгруппа (⊲)
|
'vltri': ('\u22B2', '⊲'), # Нормальная подгруппа (⊲)
|
||||||
'vrtri': ('\u22B3', '⊳'), # Содержит как нормальную подгруппу (⊳)
|
'vrtri': ('\u22B3', '⊳'), # Содержит как нормальную подгруппу (⊳)
|
||||||
'ltrie': ('\u22B4', '⊴'), # Нормальная подгруппа либо совпадает (⊴)
|
'ltrie': ('\u22B4', '⊴'), # Нормальная подгруппа либо совпадает (⊴)
|
||||||
|
84
tests/test_codec.py
Normal file
84
tests/test_codec.py
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
# tests/test_codec.py
|
||||||
|
import pytest
|
||||||
|
from etpgrf import codec
|
||||||
|
|
||||||
|
# Вообще, проверять кодирование HTML-мнемоников в Unicode не обязательно, так как это внутренняя библиотека html,
|
||||||
|
# но так как мнемоники были собраны из разных сторонников, полезно проверить какие из них работают, а какие нет...
|
||||||
|
# Это способствует тому, что обратное преобразование из Unicode в HTML-мнемоники будет работать корректно.
|
||||||
|
STRINGS_FOR_DECODE = [
|
||||||
|
# Тестовые строки для декодирования html-метаккода в uft-8
|
||||||
|
("", ""), # Пустая строка
|
||||||
|
("Hello world!", "Hello world!"), # Строка
|
||||||
|
("Привет типограф!", "Привет типограф!"), # Строка русского текста
|
||||||
|
("< > & "", "< > & \""), # Самый простой набор HTML-мнемоников
|
||||||
|
("­", "\u00AD"), # Мягкий перенос
|
||||||
|
("    ‍‌", "\u00A0\u2002\u2003\u2009\u200D\u200C"), # Набор пробелов и невидимых символов
|
||||||
|
("– — ‐ ―", "– — ‐ ―"), # Набор тире и дефисов
|
||||||
|
("' « »", "' « »"), # Апостроф и ёлочки
|
||||||
|
("“ ” „", "“ ” „"), # Двойные кавычки
|
||||||
|
("‘ ’ ‚", "‘ ’ ‚"), # Одиночные кавычки
|
||||||
|
("‹ ›", "‹ ›"), # Французские угловые кавычки
|
||||||
|
("$ ¢ £ ¤ ¥ € ₽", "$ ¢ £ ¤ ¥ € ₽"), # Валютные символы
|
||||||
|
("+ − × ÷ = ≠", "+ − × ÷ = ≠"), # Математические символы 01
|
||||||
|
("± ¬ ° ¹ ² ³", "± ¬ ° ¹ ² ³"), # Математические символы 02
|
||||||
|
("ƒ % ‰ ‱", "ƒ % ‰ ‱"), # Математические символы 03
|
||||||
|
("∀ ∁ ∂ ∃ ∄", "∀ ∁ ∂ ∃ ∄"), # Математические символы 04
|
||||||
|
("∅ ∇ ∈ ∉ ∋ ∌", "∅ ∇ ∈ ∉ ∋ ∌"), # Математические символы 05
|
||||||
|
("∏ ∐ ∑ ∓ ∸", "∏ ∐ ∑ ∓ ∸"), # Математические символы 06
|
||||||
|
("∔ ∖ ∗ ∘ √", "∔ ∖ ∗ ∘ √"), # Математические символы 07
|
||||||
|
("∝ ∞ ∠ ∟ ∡ ∣", "∝ ∞ ∠ ∟ ∡ ∣"), # Математические символы 08
|
||||||
|
("∢ ∤ '∥ ∦ ∧ ∨", "∢ ∤ '∥ ∦ ∧ ∨"), # Математические символы 09
|
||||||
|
("∩ ∪ ∫ ∬ ∭ ∮", "∩ ∪ ∫ ∬ ∭ ∮"), # Математические символы 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
|
||||||
|
("⋾ ⌅ ⌆ ⌈ ⌈", "⋾ ⌅ ⌆ ⌈ ⌈"),
|
||||||
|
("⌉ ⌊ ⌋ ⟨ ⟩", "⌉ ⌊ ⌋ ⟨ ⟩"),
|
||||||
|
("", ""),
|
||||||
|
("", ""),
|
||||||
|
|
||||||
|
|
||||||
|
("© ® ™", "\u00A9 \u00AE \u2122"), # Символы авторского права, зарегистрированной торговой марки и товарного знака
|
||||||
|
]
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("input_string, expected_output", STRINGS_FOR_DECODE)
|
||||||
|
def test_html_mnemo_to_utf(input_string, expected_output):
|
||||||
|
"""
|
||||||
|
Проверяет ПОВЕДЕНИЕ: декодирование HTML-мнемоников в Unicode-строки.
|
||||||
|
"""
|
||||||
|
# Act (действие) - тестируем
|
||||||
|
actual_output = codec.decode_to_unicode(input_string)
|
||||||
|
# Assert (проверка)
|
||||||
|
assert actual_output == expected_output
|
Reference in New Issue
Block a user