/**
* Checks and verifies that commit and flush events are driven
* by the current commit trigger.
*/
public void testListensToCurrentCommitTrigger() {
CommitTrigger trigger1 = new CommitTrigger();
CommitTrigger trigger2 = new CommitTrigger();
BufferedValueModel buffer = new BufferedValueModel(wrapped, trigger1);
buffer.setValue("change1");
Object wrappedValue = wrapped.getValue();
Object bufferedValue = buffer.getValue();
trigger2.commit();
assertEquals(
"Changing the unrelated trigger2 to commit has no effect on the wrapped.",
wrapped.getValue(),
wrappedValue);
assertSame(
"Changing the unrelated trigger2 to commit has no effect on the buffer.",
buffer.getValue(),
bufferedValue);
trigger2.revert();
assertEquals(
"Changing the unrelated trigger2 to revert has no effect on the wrapped.",
wrapped.getValue(),
wrappedValue);
assertSame(
"Changing the unrelated trigger2 to revert has no effect on the buffer.",
buffer.getValue(),
bufferedValue);
// Change the commit trigger to trigger2.
buffer.setCommitTrigger(trigger2);
assertSame(
"Commit trigger has been changed.",
buffer.getCommitTrigger(),
trigger2);
trigger1.commit();
assertEquals(
"Changing the unrelated trigger1 to commit has no effect on the wrapped.",
wrapped.getValue(),
wrappedValue);
assertSame(
"Changing the unrelated trigger1 to commit has no effect on the buffer.",
buffer.getValue(),
bufferedValue);
trigger1.revert();
assertEquals(
"Changing the unrelated trigger1 to revert has no effect on the wrapped.",
wrapped.getValue(),
wrappedValue);
assertSame(
"Changing the unrelated trigger1 to revert has no effect on the buffer.",
buffer.getValue(),
bufferedValue);
// Commit using trigger2.
trigger2.commit();
assertEquals(
"Changing the current trigger2 to commit commits the buffered value.",
buffer.getValue(),
wrapped.getValue());
buffer.setValue("change2");
wrappedValue = wrapped.getValue();
trigger2.revert();
assertEquals(
"Changing the current trigger2 to revert flushes the buffered value.",
buffer.getValue(),
wrapped.getValue());
assertEquals(