Development of an internal social media platform with personalised dashboards for students
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

test_functional.py 1.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. from __future__ import absolute_import
  2. import pickle
  3. import sys
  4. from kombu.utils.functional import lazy, maybe_evaluate
  5. from kombu.tests.case import Case, SkipTest
  6. def double(x):
  7. return x * 2
  8. class test_lazy(Case):
  9. def test__str__(self):
  10. self.assertEqual(
  11. str(lazy(lambda: 'the quick brown fox')),
  12. 'the quick brown fox',
  13. )
  14. def test__repr__(self):
  15. self.assertEqual(
  16. repr(lazy(lambda: 'fi fa fo')),
  17. "'fi fa fo'",
  18. )
  19. def test__cmp__(self):
  20. if sys.version_info[0] == 3:
  21. raise SkipTest('irrelevant on py3')
  22. self.assertEqual(lazy(lambda: 10).__cmp__(lazy(lambda: 20)), -1)
  23. self.assertEqual(lazy(lambda: 10).__cmp__(5), 1)
  24. def test_evaluate(self):
  25. self.assertEqual(lazy(lambda: 2 + 2)(), 4)
  26. self.assertEqual(lazy(lambda x: x * 4, 2), 8)
  27. self.assertEqual(lazy(lambda x: x * 8, 2)(), 16)
  28. def test_cmp(self):
  29. self.assertEqual(lazy(lambda: 10), lazy(lambda: 10))
  30. self.assertNotEqual(lazy(lambda: 10), lazy(lambda: 20))
  31. def test__reduce__(self):
  32. x = lazy(double, 4)
  33. y = pickle.loads(pickle.dumps(x))
  34. self.assertEqual(x(), y())
  35. def test__deepcopy__(self):
  36. from copy import deepcopy
  37. x = lazy(double, 4)
  38. y = deepcopy(x)
  39. self.assertEqual(x._fun, y._fun)
  40. self.assertEqual(x._args, y._args)
  41. self.assertEqual(x(), y())
  42. class test_maybe_evaluate(Case):
  43. def test_evaluates(self):
  44. self.assertEqual(maybe_evaluate(lazy(lambda: 10)), 10)
  45. self.assertEqual(maybe_evaluate(20), 20)