test_banana.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. #!/usr/bin/env python
  2. """Tests for `banana` package."""
  3. import pytest
  4. from banana import AnanasCodec, AvocadoCodec, BananaCodec, RibesCodec
  5. banana_conversions = {"be": 1, "beba": 70, "zu": 69, "bezu": 139, "nana": 2485}
  6. @pytest.fixture(params=banana_conversions.items())
  7. def banana_known(request):
  8. yield request.param
  9. avocado_conversions = {
  10. "a": 0,
  11. "aca": 5,
  12. "ada": 10,
  13. "afa": 15,
  14. "aga": 20,
  15. "ala": 25,
  16. "ama": 30,
  17. "ana": 35,
  18. "apa": 40,
  19. "ara": 45,
  20. "asa": 50,
  21. "ata": 55,
  22. "ava": 60,
  23. "aza": 65,
  24. "eba": 70,
  25. "eca": 75,
  26. "eda": 80,
  27. "efa": 85,
  28. "ega": 90,
  29. }
  30. @pytest.fixture(params=avocado_conversions.items())
  31. def avocado_known(request):
  32. yield request.param
  33. ribes_conversions = {"b": 0, "c": 1, "z": 13, "beb": 14, "bec": 15}
  34. @pytest.fixture(params=ribes_conversions.items())
  35. def ribes_known(request):
  36. yield request.param
  37. ananas_conversions = {
  38. "ac": 1,
  39. "al": 5,
  40. "as": 10,
  41. "ec": 15,
  42. "em": 20,
  43. "et": 25,
  44. "id": 30,
  45. "in": 35,
  46. "iv": 40,
  47. "of": 45,
  48. "op": 50,
  49. "oz": 55,
  50. "ug": 60,
  51. "ur": 65,
  52. "acab": 70,
  53. "acal": 75,
  54. "acas": 80,
  55. "acec": 85,
  56. "acem": 90,
  57. }
  58. ananas_codec = AnanasCodec()
  59. avocado_codec = AvocadoCodec()
  60. banana_codec = BananaCodec()
  61. ribes_codec = RibesCodec()
  62. @pytest.fixture(params=ananas_conversions.items())
  63. def ananas_known(request):
  64. yield request.param
  65. def test_banana_to_dec_known(banana_known):
  66. word, value = banana_known
  67. assert banana_codec.decode(word) == value
  68. def test_dec_to_banana_known(banana_known):
  69. word, value = banana_known
  70. assert banana_codec.encode(value) == word
  71. def test_banana_is_banana(banana_known):
  72. assert banana_codec.is_valid(banana_known[0])
  73. def test_banana_is_only_banana(banana_known):
  74. assert not ribes_codec.is_valid(banana_known[0])
  75. assert not ananas_codec.is_valid(banana_known[0])
  76. assert not avocado_codec.is_valid(banana_known[0])
  77. def test_banana2dec_prefix_ba(banana_known):
  78. """un ba all'inizio non cambia nulla!"""
  79. word, value = banana_known
  80. for prefix in ("ba", "baba", "bababa"):
  81. assert banana_codec.decode(prefix + word) == value
  82. def test_ribes_to_dec_known(ribes_known):
  83. word, value = ribes_known
  84. assert ribes_codec.decode(word) == value
  85. def test_dec_to_ribes_known(ribes_known):
  86. word, value = ribes_known
  87. assert ribes_codec.encode(value) == word
  88. def test_ribes_is_ribes(ribes_known):
  89. assert ribes_codec.is_valid(ribes_known[0])
  90. def test_ribes_is_only_ribes(ribes_known):
  91. assert not banana_codec.is_valid(ribes_known[0])
  92. assert not ananas_codec.is_valid(ribes_known[0])
  93. assert not avocado_codec.is_valid(ribes_known[0])
  94. def test_avocado_to_dec_known(avocado_known):
  95. word, value = avocado_known
  96. assert avocado_codec.decode(word) == value
  97. def test_dec_to_avocado_known(avocado_known):
  98. word, value = avocado_known
  99. assert avocado_codec.encode(value) == word
  100. def test_avocado_is_avocado(avocado_known):
  101. assert avocado_codec.is_valid(avocado_known[0])
  102. def test_avocado_is_only_avocado(avocado_known):
  103. assert not ribes_codec.is_valid(avocado_known[0])
  104. assert not ananas_codec.is_valid(avocado_known[0])
  105. assert not banana_codec.is_valid(avocado_known[0])
  106. def test_ananas_to_dec_known(ananas_known):
  107. word, value = ananas_known
  108. assert ananas_codec.decode(word) == value
  109. def test_dec_to_ananas_known(ananas_known):
  110. word, value = ananas_known
  111. assert ananas_codec.encode(value) == word
  112. def test_ananas_is_ananas(ananas_known):
  113. assert ananas_codec.is_valid(ananas_known[0])
  114. def test_ananas_is_only_ananas(ananas_known):
  115. assert not ribes_codec.is_valid(ananas_known[0])
  116. assert not banana_codec.is_valid(ananas_known[0])
  117. assert not banana_codec.is_valid(ananas_known[0])
  118. def test_answer_to_life_the_universe_and_everything():
  119. banana = banana_codec.decode("banana")
  120. assert banana != 42
  121. assert banana == 2485