@Test public void bindDataSourcesNonexistingEntryPoints() { final StatefulKnowledgeSessionImpl sessionImpl = mock(StatefulKnowledgeSessionImpl.class); when(sessionImpl.getEntryPoint("number")).thenReturn(null); when(sessionImpl.getEntryPoint("numbersArray")).thenReturn(null); when(sessionImpl.getEntryPoint("stringList")).thenReturn(null); when(sessionImpl.getEntryPoint("simpleFactList")).thenReturn(null); final TestRuleUnit testRuleUnit = new TestRuleUnit(new Integer[]{1, 2, 5}, BigDecimal.TEN); final SimpleFact simpleFact = new SimpleFact("testValue"); testRuleUnit.addSimpleFact(simpleFact); ruleUnitDescr.bindDataSources(sessionImpl, testRuleUnit); verify(sessionImpl, never()).insert(anyObject()); verify(sessionImpl, never()).insert(anyObject(), anyBoolean(), anyObject(), anyObject()); }
@Test public void testAssertObjectWithNoMatchingObjectTypeNode() { StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newKieSession(); final Rete rete = kBase.getRete(); assertEquals(1, rete.getObjectTypeNodes().size()); List list = new ArrayList(); ksession.insert(list); ksession.fireAllRules(); assertEquals(1, rete.getObjectTypeNodes().size()); }
@Test public void testSimpleExpression() { StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newKieSession(); final Person p = new Person( "mark", "", 31 ); final InternalFactHandle f0 = (InternalFactHandle) ksession.insert( p ); final LeftTupleImpl tuple = new LeftTupleImpl( f0, null, true ); RuleTerminalNode rtn = new RuleTerminalNode(); rtn.setSalienceDeclarations( context.getDeclarationResolver().getDeclarations( context.getRule() ).values().toArray( new Declaration[1] ) ); AgendaItem item = new AgendaItemImpl(0, tuple, 0, null, rtn, null); assertEquals( 25, context.getRule().getSalience().getValue( new DefaultKnowledgeHelper( item, ksession ), context.getRule(), ksession ) ); }
@Test public void test1() { StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newKieSession(); final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 1, this.entryPoint, new ClassObjectType( State.class ), buildContext ); objectTypeNode.attach(buildContext); final MockObjectSink sink = new MockObjectSink(); objectTypeNode.addObjectSink( sink ); final State a = new State( "go" ); ksession.insert( a, true ); ksession.fireAllRules(); assertEquals( 1, sink.getAsserted().size() ); a.setState( "stop" ); }
@Test public void testAllLinkedInWithNotNodesOnly() { setUp( NOT_NODE ); assertEquals( NotNode.class, n3.getClass() ); // make sure it created NotNodes KieBaseConfiguration kconf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); InternalKnowledgeBase kBase = (InternalKnowledgeBase) KnowledgeBaseFactory.newKnowledgeBase(kconf); StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newKieSession(); BetaMemory bm = (BetaMemory) ksession.getNodeMemory( n3 ); createSegmentMemory( n3, ksession ); assertTrue( bm.getSegmentMemory().isSegmentLinked() ); // not nodes start off linked DefaultFactHandle f1 = (DefaultFactHandle) ksession.insert( "test1" ); // unlinked after first assertion n3.assertObject( f1, context, ksession ); // this doesn't unlink on the assertObject, as the node's memory must be processed. So use the helper method the main network evaluator uses. PhreakNotNode.unlinkNotNodeOnRightInsert( (NotNode) n3, bm, ksession ); assertFalse( bm.getSegmentMemory().isSegmentLinked() ); n3.retractRightTuple( f1.getFirstRightTuple(), context, ksession ); assertTrue( bm.getSegmentMemory().isSegmentLinked() ); //assertFalse( bm.getSegmentMemory().isSigmentLinked() ); // check retraction unlinks again }
InternalFactHandle fh1 = (InternalFactHandle) ksession.insert( "str1" ); n1.assertObject( fh1, context, ksession ); InternalFactHandle fh2 = (InternalFactHandle) ksession.insert( "str2" ); liaNode.assertObject( fh2, context, ksession ); assertTrue( liaMem.getSegmentMemory().isSegmentLinked() ); InternalFactHandle fh3 = (InternalFactHandle) ksession.insert( "str3" ); InternalFactHandle fh4 = (InternalFactHandle) ksession.insert( "str4" ); liaNode.assertObject( fh3, context, ksession ); liaNode.assertObject( fh4, context, ksession );
@Test public void shouldLazilyAdd() throws Exception { final String fact1 = "logical"; ksession.insert(fact1); assertEquals( "Shouldn't have anything, since no logical insert was performed.", 0, tms.getEqualityKeyMap().size()); final String fact2 = "logical"; ksession.getTruthMaintenanceSystem().insert( fact2, null, null, new MockActivation() ); assertEquals( "Now that a logical insert was done, it should have an element.", 1, tms.getEqualityKeyMap().size()); // Make sure the internals are fine. ObjectTypeConf typeConf = ksession.getObjectTypeConfigurationRegistry() .getObjectTypeConf(ksession.getEntryPoint(), fact1); assertTrue("Should have enabled TMS", typeConf.isTMSEnabled()); }
@Test public void testAllLinkedInWithJoinNodesOnly() { setUp( JOIN_NODE ); assertEquals( JoinNode.class, n3.getClass() ); // make sure it created JoinNodes KieBaseConfiguration kconf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); InternalKnowledgeBase kBase = (InternalKnowledgeBase) KnowledgeBaseFactory.newKnowledgeBase(kconf); StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newKieSession(); DefaultFactHandle f1 = (DefaultFactHandle) ksession.insert( "test1" ); n3.assertObject( f1, context, ksession ); BetaMemory bm = (BetaMemory) ksession.getNodeMemory( n3 ); assertFalse( bm.getSegmentMemory().isSegmentLinked() ); n4.assertObject( f1, context, ksession ); assertFalse( bm.getSegmentMemory().isSegmentLinked() ); n5.assertObject( f1, context, ksession ); assertFalse( bm.getSegmentMemory().isSegmentLinked() ); n6.assertObject( f1, context, ksession ); assertTrue( bm.getSegmentMemory().isSegmentLinked() ); // only after all 4 nodes are populated, is the segment linked in }
@Test public void testAllLinkedInWithExistsNodesOnly() { setUp( EXISTS_NODE ); assertEquals( ExistsNode.class, n3.getClass() ); // make sure it created ExistsNodes KieBaseConfiguration kconf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); InternalKnowledgeBase kBase = (InternalKnowledgeBase) KnowledgeBaseFactory.newKnowledgeBase(kconf); StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kBase.newKieSession(); DefaultFactHandle f1 = (DefaultFactHandle) ksession.insert( "test1" ); n3.assertObject( f1, context, ksession ); BetaMemory bm = (BetaMemory) ksession.getNodeMemory( n3 ); assertFalse( bm.getSegmentMemory().isSegmentLinked() ); n4.assertObject( f1, context, ksession ); assertFalse( bm.getSegmentMemory().isSegmentLinked() ); n5.assertObject( f1, context, ksession ); assertFalse( bm.getSegmentMemory().isSegmentLinked() ); n6.assertObject( f1, context, ksession ); assertTrue( bm.getSegmentMemory().isSegmentLinked() ); // only after all 4 nodes are populated, is the segment linked in }
final DefaultFactHandle f0 = (DefaultFactHandle) ksession.insert( cheddar );
5 ); final DefaultFactHandle f0 = (DefaultFactHandle) ksession.insert( cheddar );
final Cheese cheddar = new Cheese( "cheddar", 10 ); final InternalFactHandle f0 = (InternalFactHandle) ksession.insert( cheddar );
final InternalFactHandle f0 = (InternalFactHandle) ksession.insert( cheddar ); final LeftTupleImpl tuple = new LeftTupleImpl( f0, null, true ); f0.removeLeftTuple(tuple);
PathMemory rtn3Rs = (PathMemory) wm.getNodeMemory( rtn3 ); DefaultFactHandle f1 = (DefaultFactHandle) wm.insert( "test1" ); assertFalse( bm.getSegmentMemory().isSegmentLinked() ); DefaultFactHandle f2 = (DefaultFactHandle) wm.insert( "test2" ); n2.assertObject( f2, context, wm ); assertTrue( bm.getSegmentMemory().isSegmentLinked() );