django/tests/utils_tests/test_topological_sort.py

25 lines
846 B
Python

from django.test import SimpleTestCase
from django.utils.topological_sort import (
CyclicDependencyError, stable_topological_sort, topological_sort_as_sets,
)
class TopologicalSortTests(SimpleTestCase):
def test_basic(self):
dependency_graph = {
1: {2, 3},
2: set(),
3: set(),
4: {5, 6},
5: set(),
6: {5},
}
self.assertEqual(list(topological_sort_as_sets(dependency_graph)), [{2, 3, 5}, {1, 6}, {4}])
self.assertEqual(stable_topological_sort([1, 2, 3, 4, 5, 6], dependency_graph), [2, 3, 5, 1, 6, 4])
def test_cyclic_dependency(self):
msg = 'Cyclic dependency in graph: (1, {2}), (2, {1})'
with self.assertRaisesMessage(CyclicDependencyError, msg):
list(topological_sort_as_sets({1: {2}, 2: {1}}))