from misago.acl import algebra def test_greatest_value_is_returned(): assert algebra.greater(1, 3) == 3 assert algebra.greater(4, 2) == 4 assert algebra.greater(2, 2) == 2 assert algebra.greater(True, False) == True def test_greatest_or_zero_value_is_returned(): assert algebra.greater_or_zero(1, 3) == 3 assert algebra.greater_or_zero(4, 2) == 4 assert algebra.greater_or_zero(2, 2) == 2 assert algebra.greater_or_zero(True, False) == False assert algebra.greater_or_zero(2, 0) == 0 assert algebra.greater_or_zero(0, 0) == 0 assert algebra.greater_or_zero(0, 120) == 0 def test_lower_value_is_returned(): assert algebra.lower(1, 3) == 1 assert algebra.lower(4, 2) == 2 assert algebra.lower(2, 2) == 2 assert algebra.lower(True, False) == False def test_lowest_non_zero_value_is_returned(): assert algebra.lower_non_zero(1, 3) == 1 assert algebra.lower_non_zero(0, 2) == 2 assert algebra.lower_non_zero(1, 2) == 1 assert algebra.lower_non_zero(0, 0) == 0 def test_acls_are_be_added_together(): test_acls = [ { "can_see": 0, "can_hear": 0, "max_speed": 10, "min_age": 16, "speed_limit": 50, }, {"can_see": 1, "can_hear": 0, "max_speed": 40, "min_age": 20, "speed_limit": 0}, { "can_see": 0, "can_hear": 1, "max_speed": 80, "min_age": 18, "speed_limit": 40, }, ] defaults = { "can_see": 0, "can_hear": 0, "max_speed": 30, "min_age": 18, "speed_limit": 60, } acl = algebra.sum_acls( defaults, acls=test_acls, can_see=algebra.greater, can_hear=algebra.greater, max_speed=algebra.greater, min_age=algebra.lower, speed_limit=algebra.greater_or_zero, ) assert acl["can_see"] == 1 assert acl["can_hear"] == 1 assert acl["max_speed"] == 80 assert acl["min_age"] == 16 assert acl["speed_limit"] == 0