test_acl_algebra.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. {
  35. 'can_see': 1,
  36. 'can_hear': 0,
  37. 'max_speed': 40,
  38. 'min_age': 20,
  39. 'speed_limit': 0,
  40. },
  41. {
  42. 'can_see': 0,
  43. 'can_hear': 1,
  44. 'max_speed': 80,
  45. 'min_age': 18,
  46. 'speed_limit': 40,
  47. },
  48. ]
  49. defaults = {
  50. 'can_see': 0,
  51. 'can_hear': 0,
  52. 'max_speed': 30,
  53. 'min_age': 18,
  54. 'speed_limit': 60,
  55. }
  56. acl = algebra.sum_acls(
  57. defaults,
  58. acls=test_acls,
  59. can_see=algebra.greater,
  60. can_hear=algebra.greater,
  61. max_speed=algebra.greater,
  62. min_age=algebra.lower,
  63. speed_limit=algebra.greater_or_zero,
  64. )
  65. assert acl['can_see'] == 1
  66. assert acl['can_hear'] == 1
  67. assert acl['max_speed'] == 80
  68. assert acl['min_age'] == 16
  69. assert acl['speed_limit'] == 0