filtered[0].booleanValue());
}
@Test
public void testFocusStack() throws ConsequenceException {
final AbstractWorkingMemory workingMemory = (AbstractWorkingMemory) ruleBase.newStatefulSession();
// create the consequence
final Consequence consequence = new Consequence() {
private static final long serialVersionUID = 510l;
public void evaluate(KnowledgeHelper knowledgeHelper,
WorkingMemory workingMemory) {
// do nothing
}
public void readExternal(ObjectInput in) throws IOException,
ClassNotFoundException {
}
public void writeExternal(ObjectOutput out) throws IOException {
}
public String getName() {
return "default";
}
};
// create a rule for each agendaGroup
final Rule rule0 = new Rule("test-rule0");
final RuleTerminalNode node0 = new RuleTerminalNode(3,
new MockTupleSource(2),
rule0,
rule0.getLhs(),
0,
buildContext);
rule0.setConsequence(consequence);
final PropagationContext context0 = pctxFactory.createPropagationContext(0,
PropagationContext.INSERTION,
rule0,
null,
new DefaultFactHandle());
final Rule rule1 = new Rule("test-rule1",
"agendaGroup1");
final RuleTerminalNode node1 = new RuleTerminalNode(5,
new MockTupleSource(4),
rule1,
rule1.getLhs(),
0,
buildContext);
rule1.setConsequence(consequence);
final PropagationContext context1 = pctxFactory.createPropagationContext(0,
PropagationContext.INSERTION,
rule1,
null,
new DefaultFactHandle());
final Rule rule2 = new Rule("test-rule2",
"agendaGroup2");
final RuleTerminalNode node2 = new RuleTerminalNode(7,
new MockTupleSource(6),
rule2,
rule2.getLhs(),
0,
buildContext);
rule2.setConsequence(consequence);
final PropagationContext context2 = pctxFactory.createPropagationContext(0,
PropagationContext.INSERTION,
rule2,
null,
new DefaultFactHandle());
final Rule rule3 = new Rule("test-rule3",
"agendaGroup3");
final RuleTerminalNode node3 = new RuleTerminalNode(9,
new MockTupleSource(8),
rule3,
rule3.getLhs(),
0,
buildContext);
rule3.setConsequence(consequence);
final PropagationContext context3 = pctxFactory.createPropagationContext(0,
PropagationContext.INSERTION,
rule3,
null,
new DefaultFactHandle());
final RuleTerminalNodeLeftTuple tuple1 = new RuleTerminalNodeLeftTuple(new DefaultFactHandle(1,
"cheese"),
node0,
true);
final RuleTerminalNodeLeftTuple tuple2 = new RuleTerminalNodeLeftTuple(new DefaultFactHandle(2,
"cheese"),
node2,
true);
final RuleTerminalNodeLeftTuple tuple3 = new RuleTerminalNodeLeftTuple(new DefaultFactHandle(3,
"cheese"),
node2,
true);
final RuleTerminalNodeLeftTuple tuple4 = new RuleTerminalNodeLeftTuple(new DefaultFactHandle(4,
"cheese"),
node3,
true);
final RuleTerminalNodeLeftTuple tuple5 = new RuleTerminalNodeLeftTuple(new DefaultFactHandle(5,
"cheese"),
node3,
true);
final InternalAgenda agenda = (InternalAgenda) workingMemory.getAgenda();
// create the AgendaGroups
final AgendaGroup agendaGroup1 = new AgendaGroupQueueImpl("agendaGroup1",
ruleBase);
agenda.addAgendaGroup(agendaGroup1);