test_graph.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. from __future__ import absolute_import, unicode_literals
  2. from celery.five import WhateverIO
  3. from celery.utils.graph import DependencyGraph
  4. from celery.tests.case import Case, Mock
  5. class test_DependencyGraph(Case):
  6. def graph1(self):
  7. return DependencyGraph([
  8. ('A', []),
  9. ('B', []),
  10. ('C', ['A']),
  11. ('D', ['C', 'B']),
  12. ])
  13. def test_repr(self):
  14. self.assertTrue(repr(self.graph1()))
  15. def test_topsort(self):
  16. order = self.graph1().topsort()
  17. # C must start before D
  18. self.assertLess(order.index('C'), order.index('D'))
  19. # and B must start before D
  20. self.assertLess(order.index('B'), order.index('D'))
  21. # and A must start before C
  22. self.assertLess(order.index('A'), order.index('C'))
  23. def test_edges(self):
  24. self.assertItemsEqual(
  25. list(self.graph1().edges()),
  26. ['C', 'D'],
  27. )
  28. def test_connect(self):
  29. x, y = self.graph1(), self.graph1()
  30. x.connect(y)
  31. def test_valency_of_when_missing(self):
  32. x = self.graph1()
  33. self.assertEqual(x.valency_of('foobarbaz'), 0)
  34. def test_format(self):
  35. x = self.graph1()
  36. x.formatter = Mock()
  37. obj = Mock()
  38. self.assertTrue(x.format(obj))
  39. x.formatter.assert_called_with(obj)
  40. x.formatter = None
  41. self.assertIs(x.format(obj), obj)
  42. def test_items(self):
  43. self.assertDictEqual(
  44. dict(self.graph1().items()),
  45. {'A': [], 'B': [], 'C': ['A'], 'D': ['C', 'B']},
  46. )
  47. def test_repr_node(self):
  48. x = self.graph1()
  49. self.assertTrue(x.repr_node('fasdswewqewq'))
  50. def test_to_dot(self):
  51. s = WhateverIO()
  52. self.graph1().to_dot(s)
  53. self.assertTrue(s.getvalue())