use of org.drools.impact.analysis.graph.Graph in project drools by kiegroup.
the class AbstractGraphTest method assertLink.
/**
* Assert that there are exact links with the types between source node and target node.
* If no expectedTypes, it means there is no link
*/
protected void assertLink(Graph graph, String sourceFqdn, String targetFqdn, ReactivityType... expectedTypes) {
Node source = graph.getNodeMap().get(sourceFqdn);
Node target = graph.getNodeMap().get(targetFqdn);
List<Link> outgoingLinks = source.getOutgoingLinks().stream().filter(l -> l.getTarget().equals(target)).collect(Collectors.toList());
List<Link> incomingLinks = target.getIncomingLinks().stream().filter(l -> l.getSource().equals(source)).collect(Collectors.toList());
assertThat(outgoingLinks).hasSameElementsAs(incomingLinks);
List<ReactivityType> outgoingLinkTypelist = outgoingLinks.stream().map(l -> l.getReactivityType()).collect(Collectors.toList());
List<ReactivityType> expectedTypeList = Arrays.asList(expectedTypes);
assertThat(outgoingLinkTypelist).hasSameElementsAs(expectedTypeList);
}
use of org.drools.impact.analysis.graph.Graph in project drools by kiegroup.
the class DrlSyntaxTest method testNot1.
@Test
public void testNot1() {
String str = "package mypkg;\n" + "import " + Person.class.getCanonicalName() + ";" + "rule R1 when\n" + "then\n" + " insert(new Person());" + "end\n" + "rule R2 when\n" + " not (Person())\n" + "then\n" + "end\n";
AnalysisModel analysisModel = new ModelBuilder().build(str);
ModelToGraphConverter converter = new ModelToGraphConverter();
Graph graph = converter.toGraph(analysisModel);
assertLink(graph, "mypkg.R1", "mypkg.R2", ReactivityType.NEGATIVE);
}
use of org.drools.impact.analysis.graph.Graph in project drools by kiegroup.
the class DrlSyntaxTest method testGlobal.
@Test
public void testGlobal() {
String str = "package mypkg;\n" + "import " + Person.class.getCanonicalName() + ";" + "global java.util.List resultList;" + "rule R1 when\n" + " $p : Person(name == \"Mario\")\n" + "then\n" + " modify($p) { setAge( 18 ) };" + " insert(\"Done\");\n" + "end\n" + "rule R2 when\n" + " $p : Person(age > 15)\n" + "then\n" + "end\n" + "rule R3 when\n" + " $p : String(this == \"Done\")\n" + "then\n" + " resultList.add($p);" + "end\n";
List<Person> resultList = new ArrayList<>();
runRuleWithGlobal(str, "resultList", resultList, new Person("Mario", 10));
AnalysisModel analysisModel = new ModelBuilder().build(str);
ModelToGraphConverter converter = new ModelToGraphConverter();
Graph graph = converter.toGraph(analysisModel);
assertLink(graph, "mypkg.R1", "mypkg.R2", ReactivityType.POSITIVE);
assertLink(graph, "mypkg.R1", "mypkg.R3", ReactivityType.POSITIVE);
}
use of org.drools.impact.analysis.graph.Graph in project drools by kiegroup.
the class DrlSyntaxTest method testNot2.
@Test
public void testNot2() {
String str = "package mypkg;\n" + "import " + Person.class.getCanonicalName() + ";" + "import " + Address.class.getCanonicalName() + ";" + "rule R1 when\n" + " $p : Person()\n" + "then\n" + " delete($p);" + "end\n" + "rule R2 when\n" + " not (Person())\n" + "then\n" + "end\n";
AnalysisModel analysisModel = new ModelBuilder().build(str);
ModelToGraphConverter converter = new ModelToGraphConverter();
Graph graph = converter.toGraph(analysisModel);
assertLink(graph, "mypkg.R1", "mypkg.R1", ReactivityType.NEGATIVE);
assertLink(graph, "mypkg.R1", "mypkg.R2", ReactivityType.POSITIVE);
}
use of org.drools.impact.analysis.graph.Graph in project drools by kiegroup.
the class DrlSyntaxTest method testExists2.
@Test
public void testExists2() {
String str = "package mypkg;\n" + "import " + Person.class.getCanonicalName() + ";" + "import " + Address.class.getCanonicalName() + ";" + "rule R1 when\n" + " $p : Person()\n" + "then\n" + " delete($p);" + "end\n" + "rule R2 when\n" + " exists (Person())\n" + "then\n" + "end\n";
AnalysisModel analysisModel = new ModelBuilder().build(str);
ModelToGraphConverter converter = new ModelToGraphConverter();
Graph graph = converter.toGraph(analysisModel);
assertLink(graph, "mypkg.R1", "mypkg.R1", ReactivityType.NEGATIVE);
assertLink(graph, "mypkg.R1", "mypkg.R2", ReactivityType.NEGATIVE);
}
Aggregations