[jboss-svn-commits] JBL Code SVN: r32689 - in labs/jbossrules/trunk/drools-examples/drools-examples-fusion: src/test/java/org/drools/examples/broker/events and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Apr 30 11:56:29 EDT 2010
Author: tirelli
Date: 2010-04-30 11:56:28 -0400 (Fri, 30 Apr 2010)
New Revision: 32689
Modified:
labs/jbossrules/trunk/drools-examples/drools-examples-fusion/.classpath
labs/jbossrules/trunk/drools-examples/drools-examples-fusion/src/test/java/org/drools/examples/broker/events/EventFeederTest.java
Log:
Removing old jmock dependency and replacing it by mockito
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-fusion/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-fusion/.classpath 2010-04-30 14:48:36 UTC (rev 32688)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-fusion/.classpath 2010-04-30 15:56:28 UTC (rev 32689)
@@ -8,20 +8,18 @@
<classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.1.1/antlr-runtime-3.1.1.jar"/>
<classpathentry kind="var" path="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar"/>
<classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.4.2.v_883_R34x/core-3.4.2.v_883_R34x.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/drools/drools-api/5.0.1.SNAPSHOT/drools-api-5.0.1.SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/drools/drools-compiler/5.0.1.SNAPSHOT/drools-compiler-5.0.1.SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/drools/drools-core/5.0.1.SNAPSHOT/drools-core-5.0.1.SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/com/jgoodies/forms/1.2.1/forms-1.2.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar" sourcepath="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar" sourcepath="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jmock/jmock-legacy/2.5.1/jmock-legacy-2.5.1.jar"/>
<classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.6/joda-time-1.6.jar"/>
- <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar" sourcepath="M2_REPO/junit/junit/3.8.1/junit-3.8.1-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/com/jgoodies/looks/2.2.0/looks-2.2.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.10/mvel2-2.0.10.jar"/>
<classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
- <classpathentry kind="con" path="DROOLS/Drools"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/drools-api"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/drools-compiler"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/drools-core"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.16/mvel2-2.0.16.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mockito/mockito-all/1.8.2/mockito-all-1.8.2.jar"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-fusion/src/test/java/org/drools/examples/broker/events/EventFeederTest.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-fusion/src/test/java/org/drools/examples/broker/events/EventFeederTest.java 2010-04-30 14:48:36 UTC (rev 32688)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-fusion/src/test/java/org/drools/examples/broker/events/EventFeederTest.java 2010-04-30 15:56:28 UTC (rev 32689)
@@ -1,18 +1,21 @@
package org.drools.examples.broker.events;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.util.Arrays;
+import java.util.Iterator;
import java.util.concurrent.TimeUnit;
import junit.framework.TestCase;
-import org.drools.time.impl.JDKTimerService;
import org.drools.time.impl.PseudoClockScheduler;
-import org.jmock.Expectations;
-import org.jmock.Mockery;
-import org.jmock.Sequence;
-import org.jmock.States;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
public class EventFeederTest extends TestCase {
- Mockery context = new Mockery();
protected void setUp() throws Exception {
super.setUp();
@@ -20,145 +23,46 @@
public void testFeedPseudoClock() {
// create the events for the test
- final Event<String> event1 = new EventImpl<String>( 1000, "one" );
- final Event<String> event2 = new EventImpl<String>( 1100, "two" );
- final Event<String> event3 = new EventImpl<String>( 1120, "three" );
- final Event<String> event4 = new EventImpl<String>( 1300, "four" );
- final Event<String> event5 = new EventImpl<String>( 1550, "five" );
- final Event<String> event6 = new EventImpl<String>( 1700, "six" );
-
- // define a jmock sequence and state machine
- final Sequence seq = context.sequence( "call sequence" );
- final States ts = context.states( "timestamp" ).startsAs( String.valueOf( event1.getTimestamp() ) );
-
+ final Event< ? >[] events = new Event[]{new EventImpl<String>( 1000,
+ "one" ), new EventImpl<String>( 1100,
+ "two" ), new EventImpl<String>( 1120,
+ "three" ), new EventImpl<String>( 1300,
+ "four" ), new EventImpl<String>( 1550,
+ "five" ), new EventImpl<String>( 1700,
+ "six" ),};
+
+ final Iterator<Event< ? >> it = Arrays.asList( events ).iterator();
+
// create mock objects for the source and the receiver
- final EventSource source = context.mock( EventSource.class );
- final EventReceiver receiver = context.mock( EventReceiver.class );
+ final EventSource source = mock( EventSource.class );
+ final EventReceiver receiver = mock( EventReceiver.class );
+
+ when( source.hasNext() ).thenAnswer( new Answer<Boolean>() {
+ public Boolean answer(InvocationOnMock invocation) throws Throwable {
+ return it.hasNext();
+ }
+ } );
+ when( source.getNext() ).thenAnswer( new Answer<Event<?>>() {
+ public Event< ? > answer(InvocationOnMock invocation) throws Throwable {
+ return it.next();
+ }
+ });
// create the scheduler used by drools and the feeder to be tested
PseudoClockScheduler clock = new PseudoClockScheduler();
- EventFeeder feeder = new EventFeeder( clock, source, receiver );
-
- // create the expectations
- context.checking( new Expectations() {{
- // there is an event1, so, read and feed
- oneOf( source ).hasNext(); inSequence( seq ); will( returnValue( true ) );
- oneOf( source ).getNext(); inSequence( seq ); will( returnValue( event1 ) );
- oneOf( receiver ).receive( event1 ); inSequence( seq ); when( ts.is( String.valueOf( event1.getTimestamp() ) ) );
- then( ts.is( String.valueOf( event2.getTimestamp() ) ) );
-
- // there is an event 2, so read and feed
- oneOf( source ).hasNext(); inSequence( seq ); will( returnValue( true ) );
- oneOf( source ).getNext(); inSequence( seq ); will( returnValue( event2 ) );
- oneOf( receiver ).receive( event2 ); inSequence( seq ); when( ts.is( String.valueOf( event2.getTimestamp() ) ) );
- then( ts.is( String.valueOf( event3.getTimestamp() ) ) );
-
- // there is an event 3, so read and feed
- oneOf( source ).hasNext(); inSequence( seq ); will( returnValue( true ) );
- oneOf( source ).getNext(); inSequence( seq ); will( returnValue( event3 ) );
- oneOf( receiver ).receive( event3 ); inSequence( seq ); when( ts.is( String.valueOf( event3.getTimestamp() ) ) );
- then( ts.is( String.valueOf( event4.getTimestamp() ) ) );
-
- // there is an event 4, so read and feed
- oneOf( source ).hasNext(); inSequence( seq ); will( returnValue( true ) );
- oneOf( source ).getNext(); inSequence( seq ); will( returnValue( event4 ) );
- oneOf( receiver ).receive( event4 ); inSequence( seq ); when( ts.is( String.valueOf( event4.getTimestamp() ) ) );
- then( ts.is( String.valueOf( event5.getTimestamp() ) ) );
-
- // there is an event 5, so read and feed
- oneOf( source ).hasNext(); inSequence( seq ); will( returnValue( true ) );
- oneOf( source ).getNext(); inSequence( seq ); will( returnValue( event5 ) );
- oneOf( receiver ).receive( event5 ); inSequence( seq ); when( ts.is( String.valueOf( event5.getTimestamp() ) ) );
- then( ts.is( String.valueOf( event6.getTimestamp() ) ) );
-
- // there is an event 6, so read and feed
- oneOf( source ).hasNext(); inSequence( seq ); will( returnValue( true ) );
- oneOf( source ).getNext(); inSequence( seq ); will( returnValue( event6 ) );
- oneOf( receiver ).receive( event6 ); inSequence( seq ); when( ts.is( String.valueOf( event6.getTimestamp() ) ) );
-
- // there are no more events
- oneOf( source ).hasNext(); inSequence( seq ); will( returnValue( false ) );
- }});
-
- feeder.feed();
- // advancing time step by step, so that we can test state between advances
- clock.advanceTime( event1.getTimestamp() - clock.getCurrentTime(), TimeUnit.MILLISECONDS );
- clock.advanceTime( event2.getTimestamp() - clock.getCurrentTime(), TimeUnit.MILLISECONDS );
- clock.advanceTime( event3.getTimestamp() - clock.getCurrentTime(), TimeUnit.MILLISECONDS );
- clock.advanceTime( event4.getTimestamp() - clock.getCurrentTime(), TimeUnit.MILLISECONDS );
- clock.advanceTime( event5.getTimestamp() - clock.getCurrentTime(), TimeUnit.MILLISECONDS );
- clock.advanceTime( event6.getTimestamp() - clock.getCurrentTime(), TimeUnit.MILLISECONDS );
-
- context.assertIsSatisfied();
- }
+ EventFeeder feeder = new EventFeeder( clock,
+ source,
+ receiver );
- @SuppressWarnings("static-access")
- public void testFeedRealtimeClock() {
- // create the events for the test
- long startTime = System.currentTimeMillis() + 10000;
- final Event<String> event1 = new EventImpl<String>( startTime + 1000, "one" );
- final Event<String> event2 = new EventImpl<String>( startTime + 1100, "two" );
- final Event<String> event3 = new EventImpl<String>( startTime + 1120, "three" );
- final Event<String> event4 = new EventImpl<String>( startTime + 1300, "four" );
- final Event<String> event5 = new EventImpl<String>( startTime + 1550, "five" );
- final Event<String> event6 = new EventImpl<String>( startTime + 1700, "six" );
-
- // define a jmock sequence and state machine
- final Sequence seq = context.sequence( "call sequence" );
-
- // create mock objects for the source and the receiver
- final EventSource source = context.mock( EventSource.class );
- final EventReceiver receiver = context.mock( EventReceiver.class );
-
- // create the scheduler used by drools and the feeder to be tested
- JDKTimerService clock = new JDKTimerService(1);
- EventFeeder feeder = new EventFeeder( clock, source, receiver );
-
- // create the expectations
- context.checking( new Expectations() {{
- // there is an event1, so, read and feed
- oneOf( source ).hasNext(); inSequence( seq ); will( returnValue( true ) );
- oneOf( source ).getNext(); inSequence( seq ); will( returnValue( event1 ) );
- oneOf( receiver ).receive( event1 ); inSequence( seq );
-
- // there is an event 2, so read and feed
- oneOf( source ).hasNext(); inSequence( seq ); will( returnValue( true ) );
- oneOf( source ).getNext(); inSequence( seq ); will( returnValue( event2 ) );
- oneOf( receiver ).receive( event2 ); inSequence( seq );
-
- // there is an event 3, so read and feed
- oneOf( source ).hasNext(); inSequence( seq ); will( returnValue( true ) );
- oneOf( source ).getNext(); inSequence( seq ); will( returnValue( event3 ) );
- oneOf( receiver ).receive( event3 ); inSequence( seq );
-
- // there is an event 4, so read and feed
- oneOf( source ).hasNext(); inSequence( seq ); will( returnValue( true ) );
- oneOf( source ).getNext(); inSequence( seq ); will( returnValue( event4 ) );
- oneOf( receiver ).receive( event4 ); inSequence( seq );
-
- // there is an event 5, so read and feed
- oneOf( source ).hasNext(); inSequence( seq ); will( returnValue( true ) );
- oneOf( source ).getNext(); inSequence( seq ); will( returnValue( event5 ) );
- oneOf( receiver ).receive( event5 ); inSequence( seq );
-
- // there is an event 6, so read and feed
- oneOf( source ).hasNext(); inSequence( seq ); will( returnValue( true ) );
- oneOf( source ).getNext(); inSequence( seq ); will( returnValue( event6 ) );
- oneOf( receiver ).receive( event6 ); inSequence( seq );
-
- // there are no more events
- oneOf( source ).hasNext(); inSequence( seq ); will( returnValue( false ) );
- }});
-
feeder.feed();
-
- // give time for the test to run
- try {
- Thread.currentThread().sleep( 20000 );
- } catch ( InterruptedException e ) {
- e.printStackTrace();
+ // advancing time step by step, so that we can test state between advances
+ for( Event<?> event : events ) {
+ clock.advanceTime( event.getTimestamp() - clock.getCurrentTime(),
+ TimeUnit.MILLISECONDS );
}
-
- context.assertIsSatisfied();
+
+ verify( source, times(7) ).hasNext();
+ verify( source, times(6) ).getNext();
}
+
}
More information about the jboss-svn-commits
mailing list