final ObjectTypeNode otn = epn.getObjectTypeNodes().values().iterator().next(); final LeftInputAdapterNode lian = (LeftInputAdapterNode)otn.getObjectSinkPropagator().getSinks()[0]; final ReactiveFromNode from1 = (ReactiveFromNode)lian.getSinkPropagator().getSinks()[0]; final ReactiveFromNode from2 = (ReactiveFromNode)from1.getSinkPropagator().getSinks()[0]; final ReactiveFromNode from3 = (ReactiveFromNode)from2.getSinkPropagator().getSinks()[0];
lian = new LeftInputAdapterNode(5, otn, buildContext ); lian.addAssociation( rule1 ); lian.addAssociation( rule2 ); lian.addAssociation( rule3 ); n1.addAssociation( rule1 ); n1.addAssociation( rule2 );
liaNode.assertObject( fh2, context, ksession ); assertTrue( liaMem.getSegmentMemory().isSegmentLinked() ); liaNode.retractLeftTuple( fh2.getFirstLeftTuple(), context, ksession ); assertFalse( liaMem.getSegmentMemory().isSegmentLinked() ); liaNode.assertObject( fh3, context, ksession ); liaNode.assertObject( fh4, context, ksession ); liaNode.retractLeftTuple( fh3.getFirstLeftTuple(), context, ksession ); assertTrue( liaMem.getSegmentMemory().isSegmentLinked() ); liaNode.retractLeftTuple( fh4.getFirstLeftTuple(), context, ksession ); assertFalse( liaMem.getSegmentMemory().isSegmentLinked() );
assertEquals(0, liaNode.getPositionInPath()); LeftTupleSink[] liaSinks = liaNode.getSinkPropagator().getSinks(); BetaNode join1 = (BetaNode)liaSinks[0]; assertEquals(1, join1.getPositionInPath());
liaNode.assertObject((InternalFactHandle) ksession.insert("str"), context, ksession);
BetaNode n1 = new JoinNode( 10, new LeftInputAdapterNode(3, otn, buildContext ), mockObjectSource, new EmptyBetaConstraints(), buildContext ); BetaNode n2 = new JoinNode( 11, n1, mockObjectSource,
lian.assertObject( f1, context, wm ); n1.assertObject( f1, context, wm ); n3.assertObject( f1, context, wm );
liaNode = new LeftInputAdapterNode(4, otn, buildContext );
assertEquals( 2, liaNode.getSinkPropagator().size() ); JoinNode bNode = ( JoinNode) liaNode.getSinkPropagator().getSinks()[0]; JoinNode cNode = ( JoinNode) bNode.getSinkPropagator().getSinks()[0]; ExistsNode exists1n = ( ExistsNode) liaNode.getSinkPropagator().getSinks()[1]; EvalConditionNode evalNode = ( EvalConditionNode) exists1n.getSinkPropagator().getSinks()[0]; ExistsNode exists2n = ( ExistsNode) exists1n.getSinkPropagator().getSinks()[1];
liaNode = new LeftInputAdapterNode( 5, otn, buildContext ); liaNode.addAssociation( rule1 ); liaNode.addAssociation( rule2 ); liaNode.addAssociation( rule3 ); n1.addAssociation( rule1 ); n1.addAssociation( rule2 );
liaNode.assertObject( f1, context, wm ); n1.assertObject( f1, context, wm ); n3.assertObject( f1, context, wm );
NotNode bNode = ( NotNode) aNode.getSinkPropagator().getSinks()[0]; JoinNode cNode = ( JoinNode) bNode.getSinkPropagator().getSinks()[0];
@Test public void testRTNodeNoConstraintsNoPropertySpecific() { String rule = "package org.drools.compiler.integrationtests\n" + "import " + Person.class.getCanonicalName() + "\n" + "rule r1\n" + "when\n" + " Person()\n" + "then\n" + "end\n"; KieBase kbase = new KieHelper(PropertySpecificOption.ALLOWED).addContent(rule, ResourceType.DRL).build(); ObjectTypeNode otn = getObjectTypeNode(kbase, "Person" ); assertNotNull( otn ); LeftInputAdapterNode liaNode = ( LeftInputAdapterNode ) otn.getObjectSinkPropagator().getSinks()[0]; RuleTerminalNode rtNode = ( RuleTerminalNode ) liaNode.getSinkPropagator().getSinks()[0]; assertEquals( AllSetBitMask.get(), rtNode.getDeclaredMask() ); assertEquals( AllSetBitMask.get(), rtNode.getInferredMask() ); }
assertEquals( 3, liaNode.getSinkPropagator().size() ); ExistsNode existsNode2 = ( ExistsNode) liaNode.getSinkPropagator().getSinks()[1]; ExistsNode existsNode3 = ( ExistsNode) liaNode.getSinkPropagator().getSinks()[2]; JoinNode joinNodeB = ( JoinNode) liaNode.getSinkPropagator().getSinks()[0]; assertSame( joinNodeB.getRightInput(), getObjectTypeNode(kbase, B.class ) );
JoinNode bNode1 = (JoinNode) liaNode.getSinkPropagator().getFirstLeftTupleSink(); JoinNode bNode2 = (JoinNode) liaNode.getSinkPropagator().getLastLeftTupleSink();
assertEquals( 1, liaNode.getSinkPropagator().size() ); NotNode notNode = ( NotNode) liaNode.getSinkPropagator().getSinks()[0]; JoinNode cNode = ( JoinNode) notNode.getSinkPropagator().getSinks()[0]; RuleTerminalNode rtn = ( RuleTerminalNode ) cNode.getSinkPropagator().getSinks()[0];
@Test public void testInitialFactBetaNodeWithRightInputAdapter() { String rule = "package org.drools.compiler.integrationtests\n" + "import " + Person.class.getCanonicalName() + "\n" + "import " + Cheese.class.getCanonicalName() + "\n" + "rule r1\n" + "when\n" + " exists(eval(1==1))\n" + "then\n" + "end\n"; KieBase kbase = loadKnowledgeBaseFromString( rule ); InternalWorkingMemory wm = ((InternalWorkingMemory)kbase.newKieSession()); ObjectTypeNode otn = getObjectTypeNode(kbase, "InitialFactImpl" ); assertNotNull( otn ); LeftInputAdapterNode liaNode = ( LeftInputAdapterNode ) otn.getObjectSinkPropagator().getSinks()[0]; BetaNode betaNode = ( BetaNode ) liaNode.getSinkPropagator().getSinks()[1]; assertEquals( AllSetBitMask.get(), betaNode.getLeftDeclaredMask() ); assertEquals( AllSetBitMask.get(), betaNode.getLeftInferredMask() ); assertEquals( AllSetBitMask.get(), betaNode.getRightDeclaredMask() ); assertEquals( AllSetBitMask.get(), betaNode.getRightInferredMask() ); }
NotNode bNode = ( NotNode) aNode.getSinkPropagator().getSinks()[0]; JoinNode cNode = ( JoinNode) bNode.getSinkPropagator().getSinks()[0];
assertEquals( 2, liaNode.getSinkPropagator().size() ); JoinNode bNode = ( JoinNode) liaNode.getSinkPropagator().getSinks()[0]; JoinNode cNode = ( JoinNode) bNode.getSinkPropagator().getSinks()[0]; ExistsNode exists1n = ( ExistsNode) liaNode.getSinkPropagator().getSinks()[1]; EvalConditionNode evalNode = ( EvalConditionNode) exists1n.getSinkPropagator().getSinks()[0]; ExistsNode exists2n = ( ExistsNode) exists1n.getSinkPropagator().getSinks()[1];
JoinNode b1Node = (JoinNode) liaNode.getSinkPropagator().getFirstLeftTupleSink(); JoinNode b2Node = (JoinNode) liaNode.getSinkPropagator().getLastLeftTupleSink(); JoinNode c1Node = (JoinNode) b1Node.getSinkPropagator().getLastLeftTupleSink();