added.add( array );
}
};
// Open the LiveQuery
LiveQuery query = ksession.openLiveQuery( "cheeses", new Object[] { "stilton", "cheddar" } , listener );
// Assert that on opening we have three rows added
assertEquals( 3, added.size() );
assertEquals( 0, removed.size() );
assertEquals( 0, updated.size() );
// Assert that the identifiers where retrievable
assertSame(stilton1, added.get( 0 )[0] );
assertSame(cheddar1, added.get( 0 )[1] );
assertEquals(1, added.get( 0 )[2] );
assertEquals(1, added.get( 0 )[3] );
assertEquals("stilton", added.get( 0 )[4] );
assertEquals("cheddar", added.get( 0 )[5] );
// And that we have correct values from those rows
assertEquals( 1, added.get( 0 )[3] );
assertEquals( 2, added.get( 1 )[3] );
assertEquals( 3, added.get( 2 )[3] );
// Do an update that causes a match to become untrue, thus triggering a removed
cheddar3.setPrice( 4 );
ksession.update( c3Fh, cheddar3 );
assertEquals( 3, added.size() );
assertEquals( 1, removed.size() );
assertEquals( 0, updated.size() );
assertEquals( 4, removed.get( 0 )[3] );
// Now make that partial true again, and thus another added
cheddar3.setPrice( 3 );
ksession.update( c3Fh, cheddar3 );
assertEquals( 4, added.size() );
assertEquals( 1, removed.size() );
assertEquals( 0, updated.size() );
assertEquals( 3, added.get( 3 )[3] );
// check a standard update
cheddar3.setOldPrice( 0 );
ksession.update( c3Fh, cheddar3 );
assertEquals( 4, added.size() );
assertEquals( 1, removed.size() );
assertEquals( 1, updated.size() );
assertEquals( 3, updated.get( 0 )[3] );
// Check a standard retract
ksession.retract( s1Fh );
assertEquals( 4, added.size() );
assertEquals( 2, removed.size() );
assertEquals( 1, updated.size() );
assertEquals( 1, removed.get( 1 )[3] );
// Close the query, we should get removed events for each row
query.close();
assertEquals( 4, added.size() );
assertEquals( 4, removed.size() );
assertEquals( 1, updated.size() );