test_pinyin_abbr.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. from app.utils.pinyin_abbr import (
  2. build_name_pinyin_abbr,
  3. normalize_name_pinyin_abbr,
  4. resolve_name_pinyin_abbr,
  5. )
  6. def test_empty_and_whitespace():
  7. assert build_name_pinyin_abbr("") == ""
  8. assert build_name_pinyin_abbr(" ") == ""
  9. assert normalize_name_pinyin_abbr(None) == ""
  10. assert normalize_name_pinyin_abbr(" AbC ") == "abc"
  11. def test_chinese_and_alnum():
  12. # pypinyin FIRST_LETTER: 工g业y硫l酸s(非设计稿中的 gylls)
  13. assert build_name_pinyin_abbr("55% 工业硫酸") == "55gyls"
  14. # pypinyin: 苯b骈p三s氮d唑z + BTA(非设计稿中的 bstnzbta)
  15. assert build_name_pinyin_abbr("苯骈三氮唑BTA") == "bpsdzbta"
  16. assert build_name_pinyin_abbr("PAC") == "pac"
  17. def test_truncate_to_100():
  18. long_name = "测" * 120
  19. out = build_name_pinyin_abbr(long_name)
  20. assert len(out) == 100
  21. def test_resolve_submitted_provided_nonempty():
  22. assert (
  23. resolve_name_pinyin_abbr(
  24. name="工业硫酸",
  25. submitted=" CustomAbbr ",
  26. existing="old",
  27. submitted_provided=True,
  28. )
  29. == "customabbr"
  30. )
  31. def test_resolve_submitted_provided_empty_generates():
  32. assert (
  33. resolve_name_pinyin_abbr(
  34. name="PAC",
  35. submitted=" ",
  36. existing="old",
  37. submitted_provided=True,
  38. )
  39. == "pac"
  40. )
  41. def test_resolve_not_submitted_keeps_existing():
  42. assert (
  43. resolve_name_pinyin_abbr(
  44. name="工业硫酸",
  45. submitted=None,
  46. existing=" KeepMe ",
  47. submitted_provided=False,
  48. )
  49. == "keepme"
  50. )
  51. def test_resolve_not_submitted_empty_existing_generates():
  52. assert (
  53. resolve_name_pinyin_abbr(
  54. name="PAC",
  55. submitted=None,
  56. existing="",
  57. submitted_provided=False,
  58. )
  59. == "pac"
  60. )