示例#1
0
def test_queue():
    class Element(HasDuration):
        def __init__(self, v, d):
            self.val = v
            self.dur = d

        def duration(self) -> int:
            return self.dur

        def __repr__(self):
            return f"Element({self.val})"

    def advance():
        return frozenset(e.val for e in queue.advance())

    queue = Queue()
    queue.extend([Element("a_0", 1), Element("b_0", 2), Element("d_0", 4), Element("c_0", 3)])
    queue.append(Element("a_1", 1))

    assert advance() == {"a_0", "a_1"}
    queue.extend([Element("b_1", 1), Element("e_0", 4)])
    assert advance() == {"b_0", "b_1"}
    assert advance() == {"c_0"}
    assert advance() == {"d_0"}
    assert advance() == {"e_0"}
    assert advance() == set()
    queue.append(Element("f_0", 5))
    for _ in range(4):
        assert advance() == set()
    assert advance() == {"f_0"}