/**
* Monitoring test.
*/
public void testListener() {
Graph base = Factory.createGraphMem();
MonitorGraph monitor = new MonitorGraph(base);
RecordingListener listener = new RecordingListener();
monitor.getEventManager().register(listener);
// base data
base.add(t1);
base.add(t2);
base.add(t3);
listener.has(new Object[]{});
// Test changes from empty
List<Triple> additions = new ArrayList<Triple>();
List<Triple> deletions = new ArrayList<Triple>();
monitor.snapshot(additions, deletions);
TestUtil.assertIteratorValues(this, additions.iterator(), new Object[] {t1, t2, t3});
TestUtil.assertIteratorValues(this, deletions.iterator(), new Object[] {});
listener.assertHas(new Object[] {"addList", monitor, additions, "deleteList", monitor, deletions});
listener.clear();
// Make some new changes
base.add(t4);
base.add(t5);
base.delete(t1);
base.delete(t2);
additions.clear();
deletions.clear();
monitor.snapshot(additions, deletions);
TestUtil.assertIteratorValues(this, additions.iterator(), new Object[] {t4, t5});
TestUtil.assertIteratorValues(this, deletions.iterator(), new Object[] {t1, t2});
TestUtil.assertIteratorValues(this, monitor.find(Node.ANY, Node.ANY, Node.ANY), new Object[] {t3, t4, t5});
listener.assertHas(new Object[] {"addList", monitor, additions, "deleteList", monitor, deletions});
listener.clear();
}