test_acl_algebra.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. from misago.acl import algebra
  2. def test_greatest_value_is_returned():
  3. assert algebra.greater(1, 3) == 3
  4. assert algebra.greater(4, 2) == 4
  5. assert algebra.greater(2, 2) == 2
  6. assert algebra.greater(True, False) == True
  7. def test_greatest_or_zero_value_is_returned():
  8. assert algebra.greater_or_zero(1, 3) == 3
  9. assert algebra.greater_or_zero(4, 2) == 4
  10. assert algebra.greater_or_zero(2, 2) == 2
  11. assert algebra.greater_or_zero(True, False) == False
  12. assert algebra.greater_or_zero(2, 0) == 0
  13. assert algebra.greater_or_zero(0, 0) == 0
  14. assert algebra.greater_or_zero(0, 120) == 0
  15. def test_lower_value_is_returned():
  16. assert algebra.lower(1, 3) == 1
  17. assert algebra.lower(4, 2) == 2
  18. assert algebra.lower(2, 2) == 2
  19. assert algebra.lower(True, False) == False
  20. def test_lowest_non_zero_value_is_returned():
  21. assert algebra.lower_non_zero(1, 3) == 1
  22. assert algebra.lower_non_zero(0, 2) == 2
  23. assert algebra.lower_non_zero(1, 2) == 1
  24. assert algebra.lower_non_zero(0, 0) == 0
  25. def test_acls_are_be_added_together():
  26. test_acls = [
  27. {
  28. "can_see": 0,
  29. "can_hear": 0,
  30. "max_speed": 10,
  31. "min_age": 16,
  32. "speed_limit": 50,
  33. },
  34. {"can_see": 1, "can_hear": 0, "max_speed": 40, "min_age": 20, "speed_limit": 0},
  35. {
  36. "can_see": 0,
  37. "can_hear": 1,
  38. "max_speed": 80,
  39. "min_age": 18,
  40. "speed_limit": 40,
  41. },
  42. ]
  43. defaults = {
  44. "can_see": 0,
  45. "can_hear": 0,
  46. "max_speed": 30,
  47. "min_age": 18,
  48. "speed_limit": 60,
  49. }
  50. acl = algebra.sum_acls(
  51. defaults,
  52. acls=test_acls,
  53. can_see=algebra.greater,
  54. can_hear=algebra.greater,
  55. max_speed=algebra.greater,
  56. min_age=algebra.lower,
  57. speed_limit=algebra.greater_or_zero,
  58. )
  59. assert acl["can_see"] == 1
  60. assert acl["can_hear"] == 1
  61. assert acl["max_speed"] == 80
  62. assert acl["min_age"] == 16
  63. assert acl["speed_limit"] == 0