Files
galaxy/test/unit/test_topsort.py
T
John Chilton ac91ae8419 Ensure topological sorting is 'stable' w.r.t to first element of tuple.
This improves correctness of 64a25838085978c250a0486b516bb2c8e7c3b850.
2014-08-04 09:33:40 -04:00

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