示例#1
0
def test_toposorted_single_before_after():
    class Info(object):
        def __init__(self, key, before=None, after=None):
            self.key = key
            if before is not None:
                self.before = [before]
            else:
                self.before = []
            if after is not None:
                self.after = [after]
            else:
                self.after = []

        def __repr__(self):
            return '<Info %r>' % self.key

    a = Info(1)
    b = Info(2, 1)
    c = Info(3, None, 1)

    infos = [a, b, c]

    assert toposorted(infos) == [b, a, c]

    a = Info(1)
    b = Info(2, None, 1)
    c = Info(3, 1, None)

    infos = [a, b, c]
    assert toposorted(infos) == [c, a, b]
def test_toposorted_single_before_after():
    a = Info(1, None, None)
    b = Info(2, 1, None)
    c = Info(3, None, 1)

    infos = [a, b, c]

    assert toposorted(infos) == [b, a, c]

    a = Info(1, None, None)
    b = Info(2, None, 1)
    c = Info(3, 1, None)

    infos = [a, b, c]
    assert toposorted(infos) == [c, a, b]
def test_toposorted_multi_before_after():
    a = Info(1, None, None)
    b = Info(2, [1], None)
    c = Info(3, None, [1, 2])

    infos = [a, b, c]

    assert toposorted(infos) == [b, a, c]
示例#4
0
def test_toposorted_multi_before_after():
    class Info(object):
        def __init__(self, key, before=None, after=None):
            self.key = key
            self.before = before or []
            self.after = after or []

        def __repr__(self):
            return '<Info %r>' % self.key

    a = Info(1)
    b = Info(2, [1])
    c = Info(3, None, [1, 2])

    infos = [a, b, c]

    assert toposorted(infos) == [b, a, c]
示例#5
0
    def _keys(self):
        """Sort key topologically by over and under.

        :return: a sorted list of infos.
        """
        return [info.key for info in toposorted(self._infos)]