__init__.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. from __future__ import absolute_import
  2. from __future__ import with_statement
  3. from kombu.utils.functional import promise
  4. from celery import utils
  5. from celery.utils import text
  6. from celery.utils import functional
  7. from celery.utils.functional import mpromise
  8. from celery.utils.threads import bgThread
  9. from celery.tests.utils import Case
  10. def double(x):
  11. return x * 2
  12. class test_bgThread_interface(Case):
  13. def test_body(self):
  14. x = bgThread()
  15. with self.assertRaises(NotImplementedError):
  16. x.body()
  17. class test_chunks(Case):
  18. def test_chunks(self):
  19. # n == 2
  20. x = utils.chunks(iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), 2)
  21. self.assertListEqual(list(x),
  22. [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9], [10]])
  23. # n == 3
  24. x = utils.chunks(iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), 3)
  25. self.assertListEqual(list(x),
  26. [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10]])
  27. # n == 2 (exact)
  28. x = utils.chunks(iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), 2)
  29. self.assertListEqual(list(x),
  30. [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]])
  31. class test_utils(Case):
  32. def test_is_iterable(self):
  33. for a in "f", ["f"], ("f", ), {"f": "f"}:
  34. self.assertTrue(utils.is_iterable(a))
  35. for b in object(), 1:
  36. self.assertFalse(utils.is_iterable(b))
  37. def test_padlist(self):
  38. self.assertListEqual(functional.padlist(
  39. ["George", "Costanza", "NYC"], 3),
  40. ["George", "Costanza", "NYC"])
  41. self.assertListEqual(functional.padlist(["George", "Costanza"], 3),
  42. ["George", "Costanza", None])
  43. self.assertListEqual(functional.padlist(
  44. ["George", "Costanza", "NYC"], 4, default="Earth"),
  45. ["George", "Costanza", "NYC", "Earth"])
  46. def test_firstmethod_AttributeError(self):
  47. self.assertIsNone(functional.firstmethod("foo")([object()]))
  48. def test_firstmethod_promises(self):
  49. class A(object):
  50. def __init__(self, value=None):
  51. self.value = value
  52. def m(self):
  53. return self.value
  54. self.assertEqual("four", functional.firstmethod("m")([
  55. A(), A(), A(), A("four"), A("five")]))
  56. self.assertEqual("four", functional.firstmethod("m")([
  57. A(), A(), A(), promise(lambda: A("four")), A("five")]))
  58. def test_first(self):
  59. iterations = [0]
  60. def predicate(value):
  61. iterations[0] += 1
  62. if value == 5:
  63. return True
  64. return False
  65. self.assertEqual(5, functional.first(predicate, xrange(10)))
  66. self.assertEqual(iterations[0], 6)
  67. iterations[0] = 0
  68. self.assertIsNone(functional.first(predicate, xrange(10, 20)))
  69. self.assertEqual(iterations[0], 10)
  70. def test_truncate_text(self):
  71. self.assertEqual(text.truncate("ABCDEFGHI", 3), "ABC...")
  72. self.assertEqual(text.truncate("ABCDEFGHI", 10), "ABCDEFGHI")
  73. def test_abbr(self):
  74. self.assertEqual(text.abbr(None, 3), "???")
  75. self.assertEqual(text.abbr("ABCDEFGHI", 6), "ABC...")
  76. self.assertEqual(text.abbr("ABCDEFGHI", 20), "ABCDEFGHI")
  77. self.assertEqual(text.abbr("ABCDEFGHI", 6, None), "ABCDEF")
  78. def test_abbrtask(self):
  79. self.assertEqual(text.abbrtask(None, 3), "???")
  80. self.assertEqual(text.abbrtask("feeds.tasks.refresh", 10),
  81. "[.]refresh")
  82. self.assertEqual(text.abbrtask("feeds.tasks.refresh", 30),
  83. "feeds.tasks.refresh")
  84. def test_cached_property(self):
  85. def fun(obj):
  86. return fun.value
  87. x = utils.cached_property(fun)
  88. self.assertIs(x.__get__(None), x)
  89. self.assertIs(x.__set__(None, None), x)
  90. self.assertIs(x.__delete__(None), x)
  91. class test_mpromise(Case):
  92. def test_is_memoized(self):
  93. it = iter(xrange(20, 30))
  94. p = mpromise(it.next)
  95. self.assertEqual(p(), 20)
  96. self.assertTrue(p.evaluated)
  97. self.assertEqual(p(), 20)
  98. self.assertEqual(repr(p), "20")