diff options
author | nkozlovskiy <nmk@ydb.tech> | 2023-09-29 12:24:06 +0300 |
---|---|---|
committer | nkozlovskiy <nmk@ydb.tech> | 2023-09-29 12:41:34 +0300 |
commit | e0e3e1717e3d33762ce61950504f9637a6e669ed (patch) | |
tree | bca3ff6939b10ed60c3d5c12439963a1146b9711 /contrib/python/wcwidth/py2/tests | |
parent | 38f2c5852db84c7b4d83adfcb009eb61541d1ccd (diff) | |
download | ydb-e0e3e1717e3d33762ce61950504f9637a6e669ed.tar.gz |
add ydb deps
Diffstat (limited to 'contrib/python/wcwidth/py2/tests')
-rw-r--r-- | contrib/python/wcwidth/py2/tests/__init__.py | 1 | ||||
-rw-r--r-- | contrib/python/wcwidth/py2/tests/test_core.py | 158 | ||||
-rw-r--r-- | contrib/python/wcwidth/py2/tests/test_ucslevel.py | 182 | ||||
-rw-r--r-- | contrib/python/wcwidth/py2/tests/ya.make | 14 |
4 files changed, 355 insertions, 0 deletions
diff --git a/contrib/python/wcwidth/py2/tests/__init__.py b/contrib/python/wcwidth/py2/tests/__init__.py new file mode 100644 index 0000000000..381300347d --- /dev/null +++ b/contrib/python/wcwidth/py2/tests/__init__.py @@ -0,0 +1 @@ +"""This file intentionally left blank.""" diff --git a/contrib/python/wcwidth/py2/tests/test_core.py b/contrib/python/wcwidth/py2/tests/test_core.py new file mode 100644 index 0000000000..c8f791c016 --- /dev/null +++ b/contrib/python/wcwidth/py2/tests/test_core.py @@ -0,0 +1,158 @@ +# coding: utf-8 +"""Core tests for wcwidth module. isort:skip_file""" +try: + # std import + import importlib.metadata as importmeta +except ImportError: + # 3rd party for python3.7 and earlier + import importlib_metadata as importmeta + +# local +import wcwidth + + +def test_package_version(): + """wcwidth.__version__ is expected value.""" + # given, + expected = importmeta.version('wcwidth') + + # exercise, + result = wcwidth.__version__ + + # verify. + assert result == expected + + +def test_hello_jp(): + u""" + Width of Japanese phrase: コンニチハ, セカイ! + + Given a phrase of 5 and 3 Katakana ideographs, joined with + 3 English-ASCII punctuation characters, totaling 11, this + phrase consumes 19 cells of a terminal emulator. + """ + # given, + phrase = u'コンニチハ, セカイ!' + expect_length_each = (2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 1) + expect_length_phrase = sum(expect_length_each) + + # exercise, + length_each = tuple(map(wcwidth.wcwidth, phrase)) + length_phrase = wcwidth.wcswidth(phrase) + + # verify. + assert length_each == expect_length_each + assert length_phrase == expect_length_phrase + + +def test_wcswidth_substr(): + """ + Test wcswidth() optional 2nd parameter, ``n``. + + ``n`` determines at which position of the string + to stop counting length. + """ + # given, + phrase = u'コンニチハ, セカイ!' + end = 7 + expect_length_each = (2, 2, 2, 2, 2, 1, 1,) + expect_length_phrase = sum(expect_length_each) + + # exercise, + length_phrase = wcwidth.wcswidth(phrase, end) + + # verify. + assert length_phrase == expect_length_phrase + + +def test_null_width_0(): + """NULL (0) reports width 0.""" + # given, + phrase = u'abc\x00def' + expect_length_each = (1, 1, 1, 0, 1, 1, 1) + expect_length_phrase = sum(expect_length_each) + + # exercise, + length_each = tuple(map(wcwidth.wcwidth, phrase)) + length_phrase = wcwidth.wcswidth(phrase, len(phrase)) + + # verify. + assert length_each == expect_length_each + assert length_phrase == expect_length_phrase + + +def test_control_c0_width_negative_1(): + """CSI (Control sequence initiate) reports width -1 for ESC.""" + # given, + phrase = u'\x1b[0m' + expect_length_each = (-1, 1, 1, 1) + expect_length_phrase = -1 + + # exercise, + length_each = tuple(map(wcwidth.wcwidth, phrase)) + length_phrase = wcwidth.wcswidth(phrase, len(phrase)) + + # verify. + assert length_each == expect_length_each + assert length_phrase == expect_length_phrase + + +def test_combining_width(): + """Simple test combining reports total width of 4.""" + # given, + phrase = u'--\u05bf--' + expect_length_each = (1, 1, 0, 1, 1) + expect_length_phrase = 4 + + # exercise, + length_each = tuple(map(wcwidth.wcwidth, phrase)) + length_phrase = wcwidth.wcswidth(phrase, len(phrase)) + + # verify. + assert length_each == expect_length_each + assert length_phrase == expect_length_phrase + + +def test_combining_cafe(): + u"""Phrase cafe + COMBINING ACUTE ACCENT is café of length 4.""" + phrase = u"cafe\u0301" + expect_length_each = (1, 1, 1, 1, 0) + expect_length_phrase = 4 + + # exercise, + length_each = tuple(map(wcwidth.wcwidth, phrase)) + length_phrase = wcwidth.wcswidth(phrase, len(phrase)) + + # verify. + assert length_each == expect_length_each + assert length_phrase == expect_length_phrase + + +def test_combining_enclosing(): + u"""CYRILLIC CAPITAL LETTER A + COMBINING CYRILLIC HUNDRED THOUSANDS SIGN is А҈ of length 1.""" + phrase = u"\u0410\u0488" + expect_length_each = (1, 0) + expect_length_phrase = 1 + + # exercise, + length_each = tuple(map(wcwidth.wcwidth, phrase)) + length_phrase = wcwidth.wcswidth(phrase, len(phrase)) + + # verify. + assert length_each == expect_length_each + assert length_phrase == expect_length_phrase + + +def test_combining_spacing(): + u"""Balinese kapal (ship) is ᬓᬨᬮ᭄ of length 4.""" + phrase = u"\u1B13\u1B28\u1B2E\u1B44" + expect_length_each = (1, 1, 1, 1) + expect_length_phrase = 4 + + # exercise, + length_each = tuple(map(wcwidth.wcwidth, phrase)) + length_phrase = wcwidth.wcswidth(phrase, len(phrase)) + + # verify. + assert length_each == expect_length_each + assert length_phrase == expect_length_phrase diff --git a/contrib/python/wcwidth/py2/tests/test_ucslevel.py b/contrib/python/wcwidth/py2/tests/test_ucslevel.py new file mode 100644 index 0000000000..654e835fc7 --- /dev/null +++ b/contrib/python/wcwidth/py2/tests/test_ucslevel.py @@ -0,0 +1,182 @@ +# coding: utf-8 +"""Unicode version level tests for wcwidth.""" +# std imports +import warnings + +# 3rd party +import pytest + +# local +import wcwidth + + +def test_latest(): + """wcwidth._wcmatch_version('latest') returns tail item.""" + # given, + expected = wcwidth.list_versions()[-1] + + # exercise, + result = wcwidth._wcmatch_version('latest') + + # verify. + assert result == expected + + +def test_exact_410_str(): + """wcwidth._wcmatch_version('4.1.0') returns equal value (str).""" + # given, + given = expected = '4.1.0' + + # exercise, + result = wcwidth._wcmatch_version(given) + + # verify. + assert result == expected + + +def test_exact_410_unicode(): + """wcwidth._wcmatch_version(u'4.1.0') returns equal value (unicode).""" + # given, + given = expected = u'4.1.0' + + # exercise, + result = wcwidth._wcmatch_version(given) + + # verify. + assert result == expected + + +def test_nearest_505_str(): + """wcwidth._wcmatch_version('5.0.5') returns nearest '5.0.0'. (str)""" + # given + given, expected = '5.0.5', '5.0.0' + + # exercise + result = wcwidth._wcmatch_version(given) + + # verify. + assert result == expected + + +def test_nearest_505_unicode(): + """wcwidth._wcmatch_version(u'5.0.5') returns nearest u'5.0.0'. (unicode)""" + # given + given, expected = u'5.0.5', u'5.0.0' + + # exercise + result = wcwidth._wcmatch_version(given) + + # verify. + assert result == expected + + +def test_nearest_lowint40_str(): + """wcwidth._wcmatch_version('4.0') returns nearest '4.1.0'.""" + # given + given, expected = '4.0', '4.1.0' + warnings.resetwarnings() + wcwidth._wcmatch_version.cache_clear() + + # exercise + with pytest.warns(UserWarning): + # warns that given version is lower than any available + result = wcwidth._wcmatch_version(given) + + # verify. + assert result == expected + + +def test_nearest_lowint40_unicode(): + """wcwidth._wcmatch_version(u'4.0') returns nearest u'4.1.0'.""" + # given + given, expected = u'4.0', u'4.1.0' + warnings.resetwarnings() + wcwidth._wcmatch_version.cache_clear() + + # exercise + with pytest.warns(UserWarning): + # warns that given version is lower than any available + result = wcwidth._wcmatch_version(given) + + # verify. + assert result == expected + + +def test_nearest_800_str(): + """wcwidth._wcmatch_version('8') returns nearest '8.0.0'.""" + # given + given, expected = '8', '8.0.0' + + # exercise + result = wcwidth._wcmatch_version(given) + + # verify. + assert result == expected + + +def test_nearest_800_unicode(): + """wcwidth._wcmatch_version(u'8') returns nearest u'8.0.0'.""" + # given + given, expected = u'8', u'8.0.0' + + # exercise + result = wcwidth._wcmatch_version(given) + + # verify. + assert result == expected + + +def test_nearest_999_str(): + """wcwidth._wcmatch_version('999.0') returns nearest (latest).""" + # given + given, expected = '999.0', wcwidth.list_versions()[-1] + + # exercise + result = wcwidth._wcmatch_version(given) + + # verify. + assert result == expected + + +def test_nearest_999_unicode(): + """wcwidth._wcmatch_version(u'999.0') returns nearest (latest).""" + # given + given, expected = u'999.0', wcwidth.list_versions()[-1] + + # exercise + result = wcwidth._wcmatch_version(given) + + # verify. + assert result == expected + + +def test_nonint_unicode(): + """wcwidth._wcmatch_version(u'x.y.z') returns latest (unicode).""" + # given + given, expected = u'x.y.z', wcwidth.list_versions()[-1] + warnings.resetwarnings() + wcwidth._wcmatch_version.cache_clear() + + # exercise + with pytest.warns(UserWarning): + # warns that given version is not valid + result = wcwidth._wcmatch_version(given) + + # verify. + assert result == expected + + +def test_nonint_str(): + """wcwidth._wcmatch_version(u'x.y.z') returns latest (str).""" + # given + given, expected = 'x.y.z', wcwidth.list_versions()[-1] + warnings.resetwarnings() + wcwidth._wcmatch_version.cache_clear() + + # exercise + with pytest.warns(UserWarning): + # warns that given version is not valid + result = wcwidth._wcmatch_version(given) + + # verify. + assert result == expected diff --git a/contrib/python/wcwidth/py2/tests/ya.make b/contrib/python/wcwidth/py2/tests/ya.make new file mode 100644 index 0000000000..7ef18e707b --- /dev/null +++ b/contrib/python/wcwidth/py2/tests/ya.make @@ -0,0 +1,14 @@ +PY2TEST() + +PEERDIR( + contrib/python/wcwidth +) + +TEST_SRCS( + test_core.py + test_ucslevel.py +) + +NO_LINT() + +END() |