@Test public void testSplitTwoBeforeCreatedSegment() throws Exception { KnowledgeBase kbase1 = buildKnowledgeBase( "r1", " A(1;) A(2;) B(1;) B(2;) C(1;) C(2;) D(1;) D(2;) E(1;) E(2;)\n"); kbase1.addKnowledgePackages( buildKnowledgePackage( "r2", " A(1;) A(2;) B(1;) B(2;) C(1;) C(2;) D(1;) D(2;) E(1;) E(2;)\n")); kbase1.addKnowledgePackages( buildKnowledgePackage("r3", " A(1;) A(2;) B(1;) B(2;) C(1;) C(2;) D(1;) D(2;)\n")); kbase1.addKnowledgePackages( buildKnowledgePackage("r4", " A(1;) A(2;) B(1;) B(2;) C(1;) C(2;) \n")); InternalWorkingMemory wm = ((InternalWorkingMemory) kbase1.newStatefulKnowledgeSession()); List list = new ArrayList(); wm.setGlobal("list", list); wm.insert(new E(1)); wm.insert(new E(2)); wm.flushPropagations(); RuleTerminalNode rtn1 = getRtn("org.kie.r1", kbase1); RuleTerminalNode rtn2 = getRtn("org.kie.r2", kbase1); RuleTerminalNode rtn3 = getRtn("org.kie.r3", kbase1); RuleTerminalNode rtn4 = getRtn("org.kie.r4", kbase1); PathMemory pm1 = (PathMemory) wm.getNodeMemory(rtn1); SegmentMemory[] smems = pm1.getSegmentMemories(); assertEquals(4, smems.length); assertNull(smems[0]); assertNull(smems[1]); assertNull(smems[3]); SegmentMemory sm = smems[2]; assertEquals(2, sm.getPos()); assertEquals(4, sm.getSegmentPosMaskBit()); assertEquals(4, pm1.getLinkedSegmentMask()); kbase1.addKnowledgePackages(buildKnowledgePackage("r5", " A(1;) A(2;) B(1;) B(2;) \n")); smems = pm1.getSegmentMemories(); assertEquals(5, smems.length); assertNull(smems[0]); assertNull(smems[1]); assertNull(smems[2]); sm = smems[3]; assertEquals(3, sm.getPos()); assertEquals(8, sm.getSegmentPosMaskBit()); assertEquals(8, pm1.getLinkedSegmentMask()); RuleTerminalNode rtn5 = getRtn("org.kie.r5", kbase1); PathMemory pm5 = (PathMemory) wm.getNodeMemory(rtn5); smems = pm5.getSegmentMemories(); assertEquals(2, smems.length); assertNull(smems[0]); assertNull(smems[1]); }