" then\n" +
" list.add($lecture.getId());\n" +
"end\n";
KnowledgeBase kbase = loadKnowledgeBaseFromString(str);
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
ArrayList list = new ArrayList();
ksession.setGlobal( "list", list );
Lecture lA = new Lecture("A", 0, 4);
Lecture lB = new Lecture("B", 2, 2);
Lecture lC = new Lecture("C", 2, 1);
FactHandle fhA = ksession.insert(lA);
FactHandle fhB = ksession.insert(lB);
FactHandle fhC = ksession.insert(lC);
ksession.fireAllRules(); // C gets blocked by B
assertEquals(2, list.size());
assertTrue(list.containsAll(asList("A", "B")));
list.clear();
ksession.update(fhB, lB.setDay(0).setIndex(4));
ksession.update(fhC, lC.setDay(0).setIndex(3));
ksession.fireAllRules(); // B is still a valid blocker for C
assertEquals(1, list.size());
assertTrue(list.contains("B"));
list.clear();
ksession.update(fhB, lB.setDay(2).setIndex(2));
ksession.fireAllRules(); // C doesn't find A as blocker
assertEquals(1, list.size());
assertTrue(list.contains("B"));
}