1. from django.test import SimpleTestCase
    
  2. from django.utils.topological_sort import (
    
  3.     CyclicDependencyError,
    
  4.     stable_topological_sort,
    
  5.     topological_sort_as_sets,
    
  6. )
    
  7. 
    
  8. 
    
  9. class TopologicalSortTests(SimpleTestCase):
    
  10.     def test_basic(self):
    
  11.         dependency_graph = {
    
  12.             1: {2, 3},
    
  13.             2: set(),
    
  14.             3: set(),
    
  15.             4: {5, 6},
    
  16.             5: set(),
    
  17.             6: {5},
    
  18.         }
    
  19.         self.assertEqual(
    
  20.             list(topological_sort_as_sets(dependency_graph)), [{2, 3, 5}, {1, 6}, {4}]
    
  21.         )
    
  22.         self.assertEqual(
    
  23.             stable_topological_sort([1, 2, 3, 4, 5, 6], dependency_graph),
    
  24.             [2, 3, 5, 1, 6, 4],
    
  25.         )
    
  26. 
    
  27.     def test_cyclic_dependency(self):
    
  28.         msg = "Cyclic dependency in graph: (1, {2}), (2, {1})"
    
  29.         with self.assertRaisesMessage(CyclicDependencyError, msg):
    
  30.             list(topological_sort_as_sets({1: {2}, 2: {1}}))