def test_positive_02(self): "Three node one edge digraph B -> A, C -> A and C -> B" config, reqset = create_parameters() config.set_depends_on() reqset.reqs = { "A": TestReq("A", {"Type": Requirement.rt_master_requirement}, {}), "B": TestReq("B", {"Type": Requirement.rt_initial_requirement}, {"Depends on": RecordEntry("Depends on", "A")}), "C": TestReq("C", {"Type": Requirement.rt_requirement}, {"Depends on": RecordEntry("Depends on", "A B")}), } rdep = RDepDependsOn(config) rdep.rewrite(reqset) assert(reqset.reqs["A"].outgoing_as_named_list() == []) assert(reqset.reqs["A"].incoming_as_named_list() == ["C", "B"]) assert(reqset.reqs["B"].outgoing_as_named_list() == ["A"]) assert(reqset.reqs["B"].incoming_as_named_list() == ["C"]) assert(reqset.reqs["C"].outgoing_as_named_list() == ["A", "B"]) assert(reqset.reqs["C"].incoming_as_named_list() == [])
def test_positive_01(self): "Two node one edge digraph B -> A" config, reqset = create_parameters({"B": ["A"], "A": [] }) reqset.graph_master_node = reqset.find("A") rdep = RDepNoDirectedCircles(config) result = rdep.rewrite(reqset) assert(result == True)
def rmttest_positive_01(self): "Two node one edge digraph B -> A" config, reqset = create_parameters({"B": ["A"], "A": []}) reqset.graph_master_node = reqset.find("A") rdep = RDepNoDirectedCircles(config) result = rdep.rewrite(reqset) assert result
def test_negative_01(self): "small digraph D -> B -> A and A -> C -> D" config, reqset = create_parameters( {"D": ["B"], "C": ["D"], "B": ["A"], "A": ["C"] }) reqset.graph_master_node = reqset.find("A") rdep = RDepNoDirectedCircles(config) result = rdep.rewrite(reqset) assert(result == False)
def test_positive_01(self): "small digraph D -> B -> A and D -> C -> A" opts, config, reqset = create_parameters( {"D": ["B", "C"], "C": ["A"], "B": ["A"], "A": [] }) reqset.graph_master_node = reqset.find("A") rdep = RDepNoDirectedCircles(opts, config) result = rdep.rewrite(reqset) assert(result==True)
def test_negative_01(self): "Master requirement with Depends on field" opts, config, reqset = create_parameters() reqset.reqs = { "A": TestReq("A", {"Type": Requirement.rt_master_requirement}, {"Depends on": RecordEntry("Depends on", "A")})} rdep = RDepDependsOn(opts, config) status = rdep.rewrite(reqset) assert(status==False)
def test_positive_01(self): "Two node one edge digraph B -> A" opts, config, reqset = create_parameters({"B": ["A"], "A": []}) reqset.build_named_nodes() reqset.graph_master_node = reqset.get_named_node("A") reqset.get_named_node("A").set_value("Factor", 1.0) reqset.get_named_node("B").set_value("Factor", 0.8) rdep = RDepPriority(opts, config) rdep.rewrite(reqset) assert reqset.get_named_node("A").get_value("Priority") == 1.0 assert reqset.get_named_node("B").get_value("Priority") == 0.8
def rmttest_positive_02(self): "small digraph D -> B -> A and D -> C -> A" config, reqset = create_parameters({ "D": ["B", "C"], "C": ["A"], "B": ["A"], "A": [] }) reqset.graph_master_node = reqset.find("A") rdep = RDepNoDirectedCircles(config) result = rdep.rewrite(reqset) self.assertTrue(result)
def rmttest_negative_01(self): "small digraph D -> B -> A and A -> C -> D" config, reqset = create_parameters({ "D": ["B"], "C": ["D"], "B": ["A"], "A": ["C"] }) reqset.graph_master_node = reqset.find("A") rdep = RDepNoDirectedCircles(config) result = rdep.rewrite(reqset) assert not result
def test_negative_03(self): "Normal requirement has no 'Depends on'" opts, config, reqset = create_parameters() reqset.reqs = { "A": TestReq("A", {"Type": Requirement.rt_master_requirement}, {}), "B": TestReq("B", {"Type": Requirement.rt_requirement}, {})} rdep = RDepDependsOn(opts, config) status = rdep.rewrite(reqset) assert(status==False)
def test_negative_07(self): "'Depends on' points to same requirement" opts, config, reqset = create_parameters() reqset.reqs = { "A": TestReq("A", {"Type": Requirement.rt_master_requirement}, {}), "B": TestReq("B", {"Type": Requirement.rt_requirement}, {"Depends on": RecordEntry("Depends on", "B")})} rdep = RDepDependsOn(opts, config) status = rdep.rewrite(reqset) assert(status==False)
def test_positive_02(self): "Three node digraph C -> B -> A" config, reqset = create_parameters( {"C": ["B"], "B": ["A"], "A": [] }) reqset.build_named_nodes() reqset.graph_master_node = reqset.get_named_node("A") reqset.get_named_node("A").set_value("Factor", 1.0) reqset.get_named_node("B").set_value("Factor", 0.8) reqset.get_named_node("C").set_value("Factor", 0.5) rdep = RDepPriority(config) rdep.rewrite(reqset) assert(reqset.get_named_node("A").get_value("Priority") == 1.0) assert(reqset.get_named_node("B").get_value("Priority") == 0.8) assert(reqset.get_named_node("C").get_value("Priority") == 0.4)
def test_negative_02(self): "Two nodes as master requirement" config, reqset = create_parameters() config.set_depends_on() reqset.reqs = { "A": TestReq("A", {"Type": Requirement.rt_master_requirement}, {}), "B": TestReq("B", {"Type": Requirement.rt_master_requirement}, {})} rdep = RDepDependsOn(config) status = rdep.rewrite(reqset) assert(status == False)
def test_negative_06(self): "Set without any master requirement" config, reqset = create_parameters() config.set_depends_on() reqset.reqs = { "A": TestReq("A", {"Type": Requirement.rt_requirement}, {"Depends on": RecordEntry("Depends on", "B")}), "B": TestReq("B", {"Type": Requirement.rt_requirement}, {"Depends on": RecordEntry("Depends on", "A")})} rdep = RDepDependsOn(config) status = rdep.rewrite(reqset) assert(status == False)
def test_negative_04(self): "Normal requirement has empty 'Depends on'" config, reqset = create_parameters() config.set_depends_on() reqset.reqs = { "A": TestReq("A", {"Type": Requirement.rt_master_requirement}, {}), "B": TestReq("B", {"Type": Requirement.rt_requirement}, {"Depends on": RecordEntry("Depends on", "")})} rdep = RDepDependsOn(config) status = rdep.rewrite(reqset) assert(status == False)
def test_negative_05(self): "'Depends on' points to a non existing requirement" config, reqset = create_parameters() config.set_depends_on() reqset.reqs = { "A": TestReq("A", {"Type": Requirement.rt_master_requirement}, {}), "B": TestReq("B", {"Type": Requirement.rt_requirement}, {"Depends on": RecordEntry("Depends on", "C")})} rdep = RDepDependsOn(config) status = rdep.rewrite(reqset) assert(status == False)
def test_positive_03(self): "Four node digraph D -> B -> A and D -> C -> A" opts, config, reqset = create_parameters({"D": ["B", "C"], "C": ["A"], "B": ["A"], "A": []}) reqset.build_named_nodes() reqset.graph_master_node = reqset.get_named_node("A") reqset.get_named_node("A").set_value("Factor", 1.0) reqset.get_named_node("B").set_value("Factor", 0.2) reqset.get_named_node("C").set_value("Factor", 0.4) reqset.get_named_node("D").set_value("Factor", 0.5) rdep = RDepPriority(opts, config) rdep.rewrite(reqset) assert reqset.get_named_node("A").get_value("Priority") == 1.0 assert reqset.get_named_node("B").get_value("Priority") == 0.2 assert reqset.get_named_node("C").get_value("Priority") == 0.4 assert reqset.get_named_node("D").get_value("Priority") == 0.2
def test_negative_05(self): "Set without any master requirement" config, reqset = create_parameters() reqset.reqs = { "A": TestReq("A", {"Type": Requirement.rt_requirement}, {"Solved by": RecordEntry("Solved by", "B")}), "B": TestReq("B", {"Type": Requirement.rt_requirement}, {"Solved by": RecordEntry("Solved by", "A")})} config.set_solved_by() rdep = RDepSolvedBy(config) status = rdep.rewrite(reqset) assert(status == False) assert(reqset.mls() == MemLogStore.create_mls( [[78, LogLevel.error(), "no master requirement found"], ]))
def test_negative_01(self): "Two nodes as master requirement" config, reqset = create_parameters() reqset.reqs = { "A": TestReq("A", {"Type": Requirement.rt_master_requirement}, {}), "B": TestReq("B", {"Type": Requirement.rt_master_requirement}, {})} config.set_solved_by() rdep = RDepSolvedBy(config) status = rdep.rewrite(reqset) assert(status == False) assert(reqset.mls() == MemLogStore.create_mls( [ [76, LogLevel.error(), "Another master is already there. " "There can only be one.", "B"] ]))
def test_negative_02(self): "Normal requirement has empty 'Solved by'" config, reqset = create_parameters() reqset.reqs = { "A": TestReq("A", {"Type": Requirement.rt_master_requirement}, {}), "B": TestReq("B", {"Type": Requirement.rt_requirement}, {"Solved by": RecordEntry("Solved by", "")})} config.set_solved_by() rdep = RDepSolvedBy(config) status = rdep.rewrite(reqset) assert(status == False) assert(reqset.mls() == MemLogStore.create_mls( [ [77, LogLevel.error(), "'Solved by' field has len 0", "B"] ]))
def test_positive_01(self): "Two node one edge digraph B -> A" opts, config, reqset = create_parameters() reqset.reqs = { "A": TestReq("A", {"Type": Requirement.rt_master_requirement}, {}), "B": TestReq("B", {"Type": Requirement.rt_initial_requirement}, {"Depends on": RecordEntry("Depends on", "A")})} rdep = RDepDependsOn(opts, config) rdep.rewrite(reqset) assert(reqset.reqs["A"].outgoing_as_named_list()==[]) assert(reqset.reqs["A"].incoming_as_named_list()==["B"]) assert(reqset.reqs["B"].outgoing_as_named_list()==["A"]) assert(reqset.reqs["B"].incoming_as_named_list()==[])
def test_negative_03(self): "'Solved by' points to a non existing requirement" opts, config, reqset = create_parameters() reqset.reqs = { "A": TestReq("A", {"Type": Requirement.rt_master_requirement}, {}), "B": TestReq("B", {"Type": Requirement.rt_requirement}, {"Solved by": RecordEntry("Solved by", "C")})} config.set_solved_by() rdep = RDepSolvedBy(opts, config) status = rdep.rewrite(reqset) assert(status==False) assert(reqset.mls()==MemLogStore.create_mls( [[74, MemLog.error, "'Solved by' points to a non-existing " "requirement 'C'", "B" ], ]))
def test_negative_04(self): "'Solved by' points to same requirement" config, reqset = create_parameters() reqset.reqs = { "A": TestReq("A", {"Type": Requirement.rt_master_requirement}, {}), "B": TestReq("B", {"Type": Requirement.rt_requirement}, {"Solved by": RecordEntry("Solved by", "B")})} config.set_solved_by() rdep = RDepSolvedBy(config) status = rdep.rewrite(reqset) assert(status == False) assert(reqset.mls() == MemLogStore.create_mls( [[75, LogLevel.error(), "'Solved by' points to the requirement " "itself", "B" ], ]))