1
2 package org.drools.reteoo.impl;
3
4 import org.drools.AssertionException;
5 import org.drools.RetractionException;
6 import org.drools.semantics.java.ClassObjectType;
7
8 import junit.framework.TestCase;
9
10 import java.util.List;
11 import java.util.Collection;
12
13 public class ReteImplTest extends TestCase
14 {
15 private ReteImpl rete;
16
17 private InstrumentedObjectTypeNode objectTypeNode;
18 private InstrumentedObjectTypeNode stringTypeNode;
19
20 public ReteImplTest(String name)
21 {
22 super( name );
23 }
24
25 public void setUp()
26 {
27 this.rete = new ReteImpl();
28
29 this.objectTypeNode = new InstrumentedObjectTypeNode( new ClassObjectType( Object.class ) );
30 this.stringTypeNode = new InstrumentedObjectTypeNode( new ClassObjectType( String.class ) );
31
32 this.rete.addObjectTypeNode( this.objectTypeNode );
33 this.rete.addObjectTypeNode( this.stringTypeNode );
34 }
35
36 public void tearDown()
37 {
38 this.rete = null;
39 }
40
41 public void testGetObjectTypeNodes()
42 {
43 Collection objectTypeNodes = this.rete.getObjectTypeNodes();
44
45 assertEquals( 2,
46 objectTypeNodes.size() );
47
48 assertTrue( objectTypeNodes.contains( this.objectTypeNode ) );
49 assertTrue( objectTypeNodes.contains( this.stringTypeNode ) );
50 }
51
52 /*** All objects asserted to a RootNode must be propagated
53 * to all children ObjectTypeNodes.
54 */
55 public void testAssertObject()
56 {
57 Object object1 = new Object();
58 String string1 = "cheese";
59
60 try
61 {
62 this.rete.assertObject( object1,
63 null );
64
65 this.rete.assertObject( string1,
66 null );
67
68 List asserted = null;
69
70 // ----------------------------------------
71
72 asserted = this.objectTypeNode.getAssertedObjects();
73
74 assertEquals( 2,
75 asserted.size() );
76
77 assertSame( object1,
78 asserted.get( 0 ) );
79
80 assertSame( string1,
81 asserted.get( 1 ) );
82
83 // ----------------------------------------
84
85 asserted = this.stringTypeNode.getAssertedObjects();
86
87 assertEquals( 2,
88 asserted.size() );
89
90 assertSame( object1,
91 asserted.get( 0 ) );
92
93 assertSame( string1,
94 asserted.get( 1 ) );
95
96 }
97 catch (AssertionException e)
98 {
99 fail( e.toString() );
100 }
101 }
102
103 /*** All objects retracted from a RootNode must be propagated
104 * to all children ObjectTypeNodes.
105 */
106 public void testRetractObject()
107 {
108 Object object1 = new Object();
109 String string1 = "cheese";
110
111 try
112 {
113 this.rete.retractObject( object1,
114 null );
115
116 this.rete.retractObject( string1,
117 null );
118
119 List retracted = null;
120
121 // ----------------------------------------
122
123 retracted = this.objectTypeNode.getRetractedObjects();
124
125 assertEquals( 2,
126 retracted.size() );
127
128 assertSame( object1,
129 retracted.get( 0 ) );
130
131 assertSame( string1,
132 retracted.get( 1 ) );
133
134 // ----------------------------------------
135
136 retracted = this.stringTypeNode.getRetractedObjects();
137
138 assertEquals( 2,
139 retracted.size() );
140
141 assertSame( object1,
142 retracted.get( 0 ) );
143
144 assertSame( string1,
145 retracted.get( 1 ) );
146
147 }
148 catch (RetractionException e)
149 {
150 fail( e.toString() );
151 }
152 }
153 }
This page was automatically generated by Maven