test_ucslevel.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. # coding: utf-8
  2. """Unicode version level tests for wcwidth."""
  3. # std imports
  4. import json
  5. import warnings
  6. # 3rd party
  7. import pytest
  8. import pkg_resources
  9. # local
  10. import wcwidth
  11. def test_latest():
  12. """wcwidth._wcmatch_version('latest') returns tail item."""
  13. # given,
  14. expected = wcwidth.list_versions()[-1]
  15. # exercise,
  16. result = wcwidth._wcmatch_version('latest')
  17. # verify.
  18. assert result == expected
  19. def test_exact_410_str():
  20. """wcwidth._wcmatch_version('4.1.0') returns equal value (str)."""
  21. # given,
  22. given = expected = '4.1.0'
  23. # exercise,
  24. result = wcwidth._wcmatch_version(given)
  25. # verify.
  26. assert result == expected
  27. def test_exact_410_unicode():
  28. """wcwidth._wcmatch_version(u'4.1.0') returns equal value (unicode)."""
  29. # given,
  30. given = expected = u'4.1.0'
  31. # exercise,
  32. result = wcwidth._wcmatch_version(given)
  33. # verify.
  34. assert result == expected
  35. def test_nearest_505_str():
  36. """wcwidth._wcmatch_version('5.0.5') returns nearest '5.0.0'. (str)"""
  37. # given
  38. given, expected = '5.0.5', '5.0.0'
  39. # exercise
  40. result = wcwidth._wcmatch_version(given)
  41. # verify.
  42. assert result == expected
  43. def test_nearest_505_unicode():
  44. """wcwidth._wcmatch_version(u'5.0.5') returns nearest u'5.0.0'. (unicode)"""
  45. # given
  46. given, expected = u'5.0.5', u'5.0.0'
  47. # exercise
  48. result = wcwidth._wcmatch_version(given)
  49. # verify.
  50. assert result == expected
  51. def test_nearest_lowint40_str():
  52. """wcwidth._wcmatch_version('4.0') returns nearest '4.1.0'."""
  53. # given
  54. given, expected = '4.0', '4.1.0'
  55. warnings.resetwarnings()
  56. wcwidth._wcmatch_version.cache_clear()
  57. # exercise
  58. with pytest.warns(UserWarning):
  59. # warns that given version is lower than any available
  60. result = wcwidth._wcmatch_version(given)
  61. # verify.
  62. assert result == expected
  63. def test_nearest_lowint40_unicode():
  64. """wcwidth._wcmatch_version(u'4.0') returns nearest u'4.1.0'."""
  65. # given
  66. given, expected = u'4.0', u'4.1.0'
  67. warnings.resetwarnings()
  68. wcwidth._wcmatch_version.cache_clear()
  69. # exercise
  70. with pytest.warns(UserWarning):
  71. # warns that given version is lower than any available
  72. result = wcwidth._wcmatch_version(given)
  73. # verify.
  74. assert result == expected
  75. def test_nearest_800_str():
  76. """wcwidth._wcmatch_version('8') returns nearest '8.0.0'."""
  77. # given
  78. given, expected = '8', '8.0.0'
  79. # exercise
  80. result = wcwidth._wcmatch_version(given)
  81. # verify.
  82. assert result == expected
  83. def test_nearest_800_unicode():
  84. """wcwidth._wcmatch_version(u'8') returns nearest u'8.0.0'."""
  85. # given
  86. given, expected = u'8', u'8.0.0'
  87. # exercise
  88. result = wcwidth._wcmatch_version(given)
  89. # verify.
  90. assert result == expected
  91. def test_nearest_999_str():
  92. """wcwidth._wcmatch_version('999.0') returns nearest (latest)."""
  93. # given
  94. given, expected = '999.0', wcwidth.list_versions()[-1]
  95. # exercise
  96. result = wcwidth._wcmatch_version(given)
  97. # verify.
  98. assert result == expected
  99. def test_nearest_999_unicode():
  100. """wcwidth._wcmatch_version(u'999.0') returns nearest (latest)."""
  101. # given
  102. given, expected = u'999.0', wcwidth.list_versions()[-1]
  103. # exercise
  104. result = wcwidth._wcmatch_version(given)
  105. # verify.
  106. assert result == expected
  107. def test_nonint_unicode():
  108. """wcwidth._wcmatch_version(u'x.y.z') returns latest (unicode)."""
  109. # given
  110. given, expected = u'x.y.z', wcwidth.list_versions()[-1]
  111. warnings.resetwarnings()
  112. wcwidth._wcmatch_version.cache_clear()
  113. # exercise
  114. with pytest.warns(UserWarning):
  115. # warns that given version is not valid
  116. result = wcwidth._wcmatch_version(given)
  117. # verify.
  118. assert result == expected
  119. def test_nonint_str():
  120. """wcwidth._wcmatch_version(u'x.y.z') returns latest (str)."""
  121. # given
  122. given, expected = 'x.y.z', wcwidth.list_versions()[-1]
  123. warnings.resetwarnings()
  124. wcwidth._wcmatch_version.cache_clear()
  125. # exercise
  126. with pytest.warns(UserWarning):
  127. # warns that given version is not valid
  128. result = wcwidth._wcmatch_version(given)
  129. # verify.
  130. assert result == expected