@Test public void testCycleDetectionDeadlyDiamond() { final Definitions defs = buildSimplifiedDefinitions("ns", "a", "b", "c", "d"); final DecisionNodeImpl a = buildSimplifiedDecisionNode(defs, "a"); final DecisionNodeImpl b = buildSimplifiedDecisionNode(defs, "b"); final DecisionNodeImpl c = buildSimplifiedDecisionNode(defs, "c"); final DecisionNodeImpl d = buildSimplifiedDecisionNode(defs, "d"); a.addDependency("b", b); a.addDependency("c", c); b.addDependency("d", d); c.addDependency("d", d); final DMNModelImpl model = new DMNModelImpl(defs); model.setDefinitions(defs); model.addDecision(a); model.addDecision(b); model.addDecision(c); model.addDecision(d); final DMNRuntime runtime = DMNRuntimeUtil.createRuntime(this.getClass()); final DMNResult result = runtime.evaluateAll(model, DMNFactory.newContext()); assertFalse(result.hasErrors()); }
@Test public void testSharedDependency() { final Definitions defs = buildSimplifiedDefinitions("ns", "a", "b", "c"); final DecisionNodeImpl a = buildSimplifiedDecisionNode(defs, "a"); final DecisionNodeImpl b = buildSimplifiedDecisionNode(defs, "b"); final DecisionNodeImpl c = buildSimplifiedDecisionNode(defs, "c"); a.addDependency("c", c); b.addDependency("c", c); final DMNModelImpl model = new DMNModelImpl(defs); model.setDefinitions(defs); model.addDecision(a); model.addDecision(b); model.addDecision(c); final DMNRuntime runtime = DMNRuntimeUtil.createRuntime(this.getClass()); final DMNResult result = runtime.evaluateAll(model, DMNFactory.newContext()); assertFalse(result.hasErrors()); }
@Test public void testCycleDetection() { final Definitions defs = buildSimplifiedDefinitions("ns", "a", "b"); final DecisionNodeImpl a = buildSimplifiedDecisionNode(defs, "a"); final DecisionNodeImpl b = buildSimplifiedDecisionNode(defs, "b"); a.addDependency("b", b); b.addDependency("a", b); final DMNModelImpl model = new DMNModelImpl(defs); model.setDefinitions(defs); model.addDecision(a); model.addDecision(b); final DMNRuntime runtime = DMNRuntimeUtil.createRuntime(this.getClass()); final DMNResult result = runtime.evaluateAll(model, DMNFactory.newContext()); assertTrue(result.hasErrors()); }
@Test public void testCycleDetectionSelfReference() { final Definitions defs = buildSimplifiedDefinitions("ns", "self"); final DecisionNodeImpl decision = buildSimplifiedDecisionNode(defs, "self"); decision.addDependency("self", decision); final DMNModelImpl model = new DMNModelImpl(defs); model.setDefinitions(defs); model.addDecision(decision); final DMNRuntime runtime = DMNRuntimeUtil.createRuntime(this.getClass()); final DMNResult result = runtime.evaluateAll(model, DMNFactory.newContext()); assertTrue(result.hasErrors()); }