01: package org.drools.reteoo;
02:
03: import org.drools.RuleBaseConfiguration;
04: import org.drools.WorkingMemory;
05: import org.drools.base.SalienceInteger;
06: import org.drools.rule.Rule;
07: import org.drools.spi.Consequence;
08: import org.drools.spi.KnowledgeHelper;
09:
10: import junit.framework.TestCase;
11:
12: public class ReteooBuilderTest extends TestCase {
13:
14: public void testOrder() {
15: //ReteooBuilder
16: RuleBaseConfiguration conf = new RuleBaseConfiguration();
17: conf.setSequential(true);
18: ReteooRuleBase ruleBase = new ReteooRuleBase(conf);
19: ReteooBuilder builder = new ReteooBuilder(ruleBase);
20:
21: final Consequence consequence = new Consequence() {
22: public void evaluate(KnowledgeHelper knowledgeHelper,
23: WorkingMemory workingMemory) throws Exception {
24: System.out.println("Consequence!");
25: }
26: };
27:
28: Rule rule0 = new Rule("rule0");
29: rule0.setAgendaGroup("group 0");
30: rule0.setConsequence(consequence);
31: builder.addRule(rule0);
32:
33: Rule rule1 = new Rule("rule1");
34: rule1.setAgendaGroup("group 0");
35: rule1.setConsequence(consequence);
36: builder.addRule(rule1);
37:
38: Rule rule2 = new Rule("rule2");
39: rule2.setAgendaGroup("group 1");
40: rule2.setConsequence(consequence);
41: builder.addRule(rule2);
42:
43: Rule rule3 = new Rule("rule3");
44: rule3.setAgendaGroup("group 0");
45: rule3.setConsequence(consequence);
46: builder.addRule(rule3);
47:
48: Rule rule4 = new Rule("rule4");
49: rule4.setAgendaGroup("group 2");
50: rule4.setConsequence(consequence);
51: builder.addRule(rule4);
52:
53: Rule rule5 = new Rule("rule5");
54: rule5.setAgendaGroup("group 1");
55: rule5.setConsequence(consequence);
56: builder.addRule(rule5);
57:
58: Rule rule6 = new Rule("rule6");
59: rule6.setSalience(new SalienceInteger(5));
60: rule6.setAgendaGroup("group 2");
61: rule6.setConsequence(consequence);
62: builder.addRule(rule6);
63:
64: Rule rule7 = new Rule("rule7");
65: rule7.setAgendaGroup("group 0");
66: rule7.setConsequence(consequence);
67: builder.addRule(rule7);
68:
69: Rule rule8 = new Rule("rule8");
70: rule8.setSalience(new SalienceInteger(10));
71: rule8.setAgendaGroup("group 2");
72: rule8.setConsequence(consequence);
73: builder.addRule(rule8);
74:
75: builder.order();
76:
77: assertEquals(0, ((RuleTerminalNode) builder
78: .getTerminalNodes(rule0)[0]).getSequence());
79: assertEquals(1, ((RuleTerminalNode) builder
80: .getTerminalNodes(rule1)[0]).getSequence());
81: assertEquals(0, ((RuleTerminalNode) builder
82: .getTerminalNodes(rule2)[0]).getSequence());
83: assertEquals(2, ((RuleTerminalNode) builder
84: .getTerminalNodes(rule3)[0]).getSequence());
85: assertEquals(2, ((RuleTerminalNode) builder
86: .getTerminalNodes(rule4)[0]).getSequence());
87: assertEquals(1, ((RuleTerminalNode) builder
88: .getTerminalNodes(rule5)[0]).getSequence());
89: assertEquals(1, ((RuleTerminalNode) builder
90: .getTerminalNodes(rule6)[0]).getSequence());
91: assertEquals(3, ((RuleTerminalNode) builder
92: .getTerminalNodes(rule7)[0]).getSequence());
93: assertEquals(0, ((RuleTerminalNode) builder
94: .getTerminalNodes(rule8)[0]).getSequence());
95:
96: }
97: }
|