test_rules_utils.py 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. import unittest
  2. from src.rules.utils import least_common_multiple, is_fraction, partition, \
  3. find_variables
  4. from tests.rulestestcase import tree
  5. class TestRulesUtils(unittest.TestCase):
  6. def test_least_common_multiple(self):
  7. self.assertEqual(least_common_multiple(5, 6), 30)
  8. self.assertEqual(least_common_multiple(5, 6, 15), 30)
  9. self.assertEqual(least_common_multiple(2, 4), 4)
  10. def test_is_fraction(self):
  11. l1, a = tree('1, a')
  12. self.assertTrue(is_fraction(a / 2, a, 2))
  13. self.assertTrue(is_fraction(l1 / 2 * a, a, 2))
  14. self.assertTrue(is_fraction(a * (l1 / 2), a, 2))
  15. self.assertFalse(is_fraction(l1 / 3 * a, a, 2))
  16. def test_partition(self):
  17. self.assertEqual(partition(lambda x: x & 1, range(6)),
  18. ([1, 3, 5], [0, 2, 4]))
  19. def test_find_variables(self):
  20. x, l2, add, mul0, mul1 = tree('x, 2, x + 2, 2x, xy')
  21. self.assertSetEqual(find_variables(x), set(['x']))
  22. self.assertSetEqual(find_variables(l2), set())
  23. self.assertSetEqual(find_variables(add), set(['x']))
  24. self.assertSetEqual(find_variables(mul0), set(['x']))
  25. self.assertSetEqual(find_variables(mul1), set(['x', 'y']))