def test_proctree_getnexttorun(set2): # p15 -> p16 -> p17 -> 19 # p14 _/ \_ p18_/ \_ p20 # hide p1 = Proc() #ProcTree.register(p1) p2 = Proc() p2.depends = p1 pt = ProcTree() pt.init() pt.setStarts([set2.p14, set2.p15]) pt.NODES[set2.p14].ran = True assert pt.getNextToRun() is set2.p15 pt.NODES[set2.p15].ran = True assert pt.getNextToRun() is set2.p16 pt.NODES[set2.p16].ran = True assert pt.getNextToRun() is set2.p18 pt.NODES[set2.p18].ran = True assert pt.getNextToRun() is set2.p17 pt.NODES[set2.p17].ran = True assert pt.getNextToRun() is set2.p20 pt.NODES[set2.p20].ran = True assert pt.getNextToRun() is set2.p19 pt.NODES[set2.p19].ran = True assert pt.getNextToRun() is None
def test_proctree_getpaths(set1): # hide # p15 -> p16 -> p17 -> 19 # \_ p18_/ \_ p20 pt = ProcTree() pt.init() assert pt.getPaths(set1.p15) == [] assert pt.getPaths(set1.p19) == [[set1.p17, set1.p16, set1.p15], [set1.p17, set1.p18, set1.p16, set1.p15]] assert pt.getPaths(set1.p20) == [[set1.p17, set1.p16, set1.p15], [set1.p17, set1.p18, set1.p16, set1.p15]] # assert pt.getPaths(set1.p19, check_hide = True) == [ # [set1.p17, set1.p15], [set1.p17, set1.p18, set1.p15]] # assert pt.getPaths(set1.p20, check_hide = True) == [ # [set1.p17, set1.p15], [set1.p17, set1.p18, set1.p15]] # circulic dependence p21 = Proc() p22 = Proc() p23 = Proc() # p21 -> p22 -> p23 -> p21 p21.depends = p23 p23.depends = p22 p22.depends = p21 pt = ProcTree() pt.init() with pytest.raises(ProcTreeParseError): pt.getPaths(p23)
def test_proctree_chechpath(set2): # p15 -> p16 -> p17 -> 19 # p14 _/ \_ p18_/ \_ p20 # hide pt = ProcTree() pt.init() assert pt.checkPath(set2.p16) == [set2.p14] pt.setStarts([set2.p14]) assert pt.checkPath(set2.p16) == [set2.p15] pt.setStarts([set2.p14, set2.p15]) assert pt.checkPath(set2.p16) is True
def test_proctree_getends(set2): # p15 -> p16 -> p17 -> 19 # p14 _/ \_ p18_/ \_ p20 # hide pt = ProcTree() pt.init() pt.setStarts([set2.p14, set2.p15]) assert set(pt.getEnds()) == {set2.p19, set2.p20} assert set(pt.ends) == {set2.p19, set2.p20} assert set(pt.getEnds()) == {set2.p19, set2.p20} #set2.p19.hide = True pt.ends = []
def test_proctree_getallpaths(set2): # p15 -> p16 -> p17 -> 19 # p14 _/ \_ p18_/ \_ p20 # ##hide moved to plugin pt = ProcTree() pt.init() pt.setStarts([set2.p14, set2.p15]) allpath = list(pt.getAllPaths()) assert len(allpath) == 8 assert [set2.p19, set2.p17, set2.p16, set2.p14] in allpath assert [set2.p19, set2.p17, set2.p16, set2.p15] in allpath assert [set2.p20, set2.p17, set2.p16, set2.p14] in allpath assert [set2.p20, set2.p17, set2.p16, set2.p15] in allpath assert [set2.p19, set2.p17, set2.p18, set2.p16, set2.p14] in allpath assert [set2.p19, set2.p17, set2.p18, set2.p16, set2.p15] in allpath assert [set2.p20, set2.p17, set2.p18, set2.p16, set2.p14] in allpath assert [set2.p20, set2.p17, set2.p18, set2.p16, set2.p15] in allpath
def test_proctree_getends_failed(): p1 = Proc() p2 = Proc() p2.depends = p1 ProcTree.register(p1) pt = ProcTree() pt.init() with pytest.raises(ProcTreeParseError): #Failed to determine end processes by start processes pt.getEnds() p3 = Proc() p3.depends = p2 pt = ProcTree() pt.init() pt.setStarts([p3]) with pytest.raises(ProcTreeParseError): # Failed to determine end processes, one of the paths cannot go through: 'p3 <- p2 <- p1' pt.getEnds()
def test_proctree_getpathstostarts(set2): # p15 -> p16 -> p17 -> 19 # p14 _/ \_ p18_/ \_ p20 # hide pt = ProcTree() pt.init() pt.setStarts([set2.p15]) assert pt.getPathsToStarts(set2.p15) == [] assert pt.getPathsToStarts( set2.p19) == [[set2.p17, set2.p16, set2.p15], [set2.p17, set2.p18, set2.p16, set2.p15]] assert pt.getPathsToStarts( set2.p20) == [[set2.p17, set2.p16, set2.p15], [set2.p17, set2.p18, set2.p16, set2.p15]] # assert pt.getPathsToStarts(set2.p19, check_hide = True) == [[set2.p17, set2.p16, set2.p15]] # assert pt.getPathsToStarts(set2.p20, check_hide = True) == [[set2.p17, set2.p16, set2.p15]] pt.setStarts([set2.p14, set2.p15]) assert pt.getPathsToStarts(set2.p14) == [] assert pt.getPathsToStarts(set2.p15) == [] assert pt.getPathsToStarts(set2.p16) == [[set2.p14], [set2.p15]] assert pt.getPathsToStarts(set2.p18) == [[set2.p16, set2.p14], [set2.p16, set2.p15]] assert pt.getPathsToStarts(set2.p17) == [ [set2.p16, set2.p14], [set2.p16, set2.p15], [set2.p18, set2.p16, set2.p14], [set2.p18, set2.p16, set2.p15], ] assert pt.getPathsToStarts(set2.p19) == [ [set2.p17, set2.p16, set2.p14], [set2.p17, set2.p16, set2.p15], [set2.p17, set2.p18, set2.p16, set2.p14], [set2.p17, set2.p18, set2.p16, set2.p15], ] assert pt.getPathsToStarts(set2.p20) == [ [set2.p17, set2.p16, set2.p14], [set2.p17, set2.p16, set2.p15], [set2.p17, set2.p18, set2.p16, set2.p14], [set2.p17, set2.p18, set2.p16, set2.p15], ]
def test_proctree_init(): p21 = Proc() p22 = Proc() p23 = Proc() p24 = Proc() p25 = Proc() p23.depends = p21, p22 #p23.hide = True p24.depends = p23 p25.depends = p23 ProcTree.register(p21) ProcTree.register(p22) pt = ProcTree() pt.init() # with pytest.raises(ProcHideError): # pt.init() assert p21 in ProcTree.NODES assert p22 in ProcTree.NODES assert p23 in ProcTree.NODES assert p24 in ProcTree.NODES assert p25 in ProcTree.NODES assert ProcTree.NODES[p21].prev == [] assert ProcTree.NODES[p22].prev == [] assert ProcTree.NODES[p23].prev == [ ProcTree.NODES[p21], ProcTree.NODES[p22] ] assert ProcTree.NODES[p24].prev == [ProcTree.NODES[p23]] assert ProcTree.NODES[p25].prev == [ProcTree.NODES[p23]] assert ProcTree.NODES[p21].next == [ProcTree.NODES[p23]] assert ProcTree.NODES[p22].next == [ProcTree.NODES[p23]] assert ProcTree.NODES[p23].next == [ ProcTree.NODES[p24], ProcTree.NODES[p25] ] assert ProcTree.NODES[p24].next == [] assert ProcTree.NODES[p25].next == []
def test_proctree_setgetstarts(): p12 = Proc() p13 = Proc() p14 = Proc() #p14.hide = True p12.depends = p13 ProcTree.register(p13) ProcTree.register(p14) pt = ProcTree() pt.init() # with pytest.raises(ProcHideError): # pt.setStarts([p14]) pt.ends = [1, 2, 3] pt.setStarts([p13]) assert ProcTree.NODES[p12].start == False assert ProcTree.NODES[p13].start == True assert ProcTree.NODES[p14].start == False assert pt.starts == [p13] assert pt.ends == [] pt.starts = [] assert pt.getStarts() == [p13] assert pt.starts == [p13] assert pt.getStarts() == [p13]