from django.test import TestCase from misago.acl import algebra class ComparisionsTests(TestCase): def test_greater(self): """greater permission wins test""" self.assertEqual(algebra.greater(1, 3), 3) self.assertEqual(algebra.greater(4, 2), 4) self.assertEqual(algebra.greater(2, 2), 2) self.assertEqual(algebra.greater(True, False), True) def test_greater_or_zero(self): """greater or zero permission wins test""" self.assertEqual(algebra.greater_or_zero(1, 3), 3) self.assertEqual(algebra.greater_or_zero(4, 2), 4) self.assertEqual(algebra.greater_or_zero(2, 2), 2) self.assertEqual(algebra.greater_or_zero(True, False), False) self.assertEqual(algebra.greater_or_zero(2, 0), 0) self.assertEqual(algebra.greater_or_zero(0, 0), 0) self.assertEqual(algebra.greater_or_zero(0, 120), 0) def test_lower(self): """lower permission wins test""" self.assertEqual(algebra.lower(1, 3), 1) self.assertEqual(algebra.lower(4, 2), 2) self.assertEqual(algebra.lower(2, 2), 2) self.assertEqual(algebra.lower(True, False), False) def test_lower_non_zero(self): """lower non-zero wins test""" self.assertEqual(algebra.lower_non_zero(1, 3), 1) self.assertEqual(algebra.lower_non_zero(0, 2), 2) self.assertEqual(algebra.lower_non_zero(1, 2), 1) self.assertEqual(algebra.lower_non_zero(0, 0), 0) class SumACLTests(TestCase): def test_sum_acls(self): """acls are summed""" 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, ) self.assertEqual(acl['can_see'], 1) self.assertEqual(acl['can_hear'], 1) self.assertEqual(acl['max_speed'], 80) self.assertEqual(acl['min_age'], 16) self.assertEqual(acl['speed_limit'], 0)