mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
40 lines
1.0 KiB
Python
40 lines
1.0 KiB
Python
from galaxy.util import topsort
|
|
|
|
|
|
def test_topsort_level_stability():
|
|
data = [
|
|
(0, 2),
|
|
(1, 2),
|
|
(2, 3),
|
|
(2, 4),
|
|
(3, 4),
|
|
(3, 5),
|
|
(6, 2),
|
|
]
|
|
assert topsort.topsort_levels( data )[ 0 ] == [ 0, 1, 6 ]
|
|
assert topsort.topsort( data ) == [ 0, 1, 6, 2, 3, 4, 5 ]
|
|
# Swap first two edges - so 1 appears first
|
|
swap( data, 0, 1 )
|
|
assert topsort.topsort_levels( data )[ 0 ] == [ 1, 0, 6 ]
|
|
assert topsort.topsort( data ) == [ 1, 0, 6, 2, 3, 4, 5 ]
|
|
|
|
# Shouldn't really affect sorting of 1 0 6
|
|
swap( data, 3, 4 )
|
|
assert topsort.topsort_levels( data )[ 0 ] == [ 1, 0, 6 ]
|
|
assert topsort.topsort( data ) == [ 1, 0, 6, 2, 3, 4, 5 ]
|
|
|
|
# Place 0 before 6 in original list
|
|
swap( data, 1, 6 )
|
|
assert topsort.topsort_levels( data )[ 0 ] == [ 1, 6, 0 ]
|
|
assert topsort.topsort( data ) == [ 1, 6, 0, 2, 3, 4, 5 ]
|
|
|
|
|
|
def test_topsort_doc():
|
|
assert topsort.topsort([(1, 2), (3, 3)]) == [1, 3, 2]
|
|
|
|
|
|
def swap(lst, i, j):
|
|
tmp = lst[j]
|
|
lst[j] = lst[i]
|
|
lst[i] = tmp
|