timeService.advanceTime( new Date().getTime(), TimeUnit.MILLISECONDS );
List list = new ArrayList();
ksession.setGlobal( "list", list );
FactA fact1 = new FactA();
fact1.setField1( "f1" );
fact1.setField2( 500 );
fact1.setField4( 1000 );
FactHandle fh = (FactHandle) ksession.insert (fact1 );
ksession.fireAllRules();
assertEquals( 0, list.size() );
timeService.advanceTime( 2600, TimeUnit.MILLISECONDS );
ksession.fireAllRules();
assertEquals( 3, list.size() );
assertEquals( fact1, list.get( 0 ) );
assertEquals( fact1, list.get( 1 ) );
assertEquals( fact1, list.get( 2 ) );
list.clear();
fact1.setField2( 300 );
fact1.setField4( 2000 );
ksession.update( fh, fact1 );
// 100 has passed of the 1000, from the previous schedule
// so that should be deducted from the 300 delay above, meaning
// we only need to increment another 250