def test_tagged_dag(): r"""Test add_tag/get_tag/get_context. With the following DAG:: A / \ B C* / \ / D* E / \ / \ F G H* """ d = DAG() d.add_vertex('a') d.add_vertex('b', predecessors=['a']) d.add_vertex('c', predecessors=['a']) d.add_vertex('d', predecessors=['b']) d.add_vertex('e', predecessors=['b', 'c']) d.add_vertex('f', predecessors=['d']) d.add_vertex('g', predecessors=['d', 'e']) d.add_vertex('h', predecessors=['e']) d.add_tag('c', data='tagc') d.add_tag('d', data='tagd') d.add_tag('h', data='tagh') assert d.get_tag('a') is None assert d.get_tag('b') is None assert d.get_tag('c') == 'tagc' assert d.get_tag('e') is None assert d.get_tag('h') == 'tagh' assert d.get_context('d') == [(0, 'd', 'tagd')] assert d.get_context('g') == [(1, 'd', 'tagd'), (2, 'c', 'tagc')] assert d.get_context('f') == [(1, 'd', 'tagd')] assert d.get_context('b') == [] assert d.get_context('a') == [] assert d.get_context('c') == [(0, 'c', 'tagc')] assert d.get_context('e') == [(1, 'c', 'tagc')] assert d.get_context('h') == [(0, 'h', 'tagh')] assert d.get_context('e', reverse_order=True) == [(1, 'h', 'tagh')] assert d.get_context('h', reverse_order=True) == [(0, 'h', 'tagh')] assert d.get_context('a', reverse_order=True) == [(1, 'c', 'tagc'), (2, 'd', 'tagd'), (3, 'h', 'tagh')] assert d.get_context('a', reverse_order=True) == [(1, 'c', 'tagc'), (2, 'd', 'tagd'), (3, 'h', 'tagh')] assert d.get_context(vertex_id='a', max_distance=2, reverse_order=True) == [(1, 'c', 'tagc'), (2, 'd', 'tagd')] assert d.get_context(vertex_id='a', max_element=2, reverse_order=True) == [(1, 'c', 'tagc'), (2, 'd', 'tagd')]
def test_cycle(): d = DAG() d.add_vertex('a') d.add_vertex('b') d.update_vertex('a', predecessors=['b']) d.add_vertex('c', predecessors=['b']) d.update_vertex('b', predecessors=['c'], enable_checks=False) with pytest.raises(DAGError): d.check() with pytest.raises(DAGError): d.get_context('b')
def test_cycle(): d = DAG() d.add_vertex("a") d.add_vertex("b") d.update_vertex("a", predecessors=["b"]) d.add_vertex("c", predecessors=["b"]) d.update_vertex("b", predecessors=["c"], enable_checks=False) with pytest.raises(DAGError): d.check() with pytest.raises(DAGError): d.get_context("b")
def test_tagged_dag(): r"""Test add_tag/get_tag/get_context. With the following DAG:: A / \ B C* / \ / D* E / \ / \ F G H* """ d = DAG() d.add_vertex("a") d.add_vertex("b", predecessors=["a"]) d.add_vertex("c", predecessors=["a"]) d.add_vertex("d", predecessors=["b"]) d.add_vertex("e", predecessors=["b", "c"]) d.add_vertex("f", predecessors=["d"]) d.add_vertex("g", predecessors=["d", "e"]) d.add_vertex("h", predecessors=["e"]) d.add_tag("c", data="tagc") d.add_tag("d", data="tagd") d.add_tag("h", data="tagh") assert d.get_tag("a") is None assert d.get_tag("b") is None assert d.get_tag("c") == "tagc" assert d.get_tag("e") is None assert d.get_tag("h") == "tagh" assert d.get_context("d") == [(0, "d", "tagd")] assert d.get_context("g") == [(1, "d", "tagd"), (2, "c", "tagc")] assert d.get_context("f") == [(1, "d", "tagd")] assert d.get_context("b") == [] assert d.get_context("a") == [] assert d.get_context("c") == [(0, "c", "tagc")] assert d.get_context("e") == [(1, "c", "tagc")] assert d.get_context("h") == [(0, "h", "tagh")] assert d.get_context("e", reverse_order=True) == [(1, "h", "tagh")] assert d.get_context("h", reverse_order=True) == [(0, "h", "tagh")] assert d.get_context("a", reverse_order=True) == [ (1, "c", "tagc"), (2, "d", "tagd"), (3, "h", "tagh"), ] assert d.get_context("a", reverse_order=True) == [ (1, "c", "tagc"), (2, "d", "tagd"), (3, "h", "tagh"), ] assert d.get_context(vertex_id="a", max_distance=2, reverse_order=True) == [ (1, "c", "tagc"), (2, "d", "tagd"), ] assert d.get_context(vertex_id="a", max_element=2, reverse_order=True) == [ (1, "c", "tagc"), (2, "d", "tagd"), ]