// intentionally attach to same function to test
// delegate naming
this.del1 = new LzDelegate( this, "execdel" );
this.del2 = new LzDelegate( this, "execdel" );
assertEquals(0, LzTimer.countTimers(tt1.del1), "before add");
var t1 = LzTimer.addTimer(tt1.del1, 10000);
assertEquals(1, LzTimer.countTimers(tt1.del1), "after add");
var td1 = LzTimer.removeTimer(tt1.del1);
assertEquals(0, LzTimer.countTimers(tt1.del1), "after remove");
assertEquals(t1, td1, "same timer");
// test whether we get confused between delegates. Remove in
// opposite order to avoid false positive due to FIFI policy.
assertEquals(0, LzTimer.countTimers(tt2.del1), "before add 1");
assertEquals(0, LzTimer.countTimers(tt2.del2), "before add 2");
var t1 = LzTimer.addTimer(tt2.del1, 10000);
assertEquals(1, LzTimer.countTimers(tt2.del1), "after add 1,1");
assertEquals(0, LzTimer.countTimers(tt2.del2), "after add 1,2");
var t2 = LzTimer.addTimer(tt2.del2, 10000);
assertEquals(1, LzTimer.countTimers(tt2.del1), "after add 2,1");
assertEquals(1, LzTimer.countTimers(tt2.del2), "after add 2,2");
var td2 = LzTimer.removeTimer(tt2.del2);
assertEquals(1, LzTimer.countTimers(tt2.del1), "after remove 2,1");
assertEquals(0, LzTimer.countTimers(tt2.del2), "after remove 2,2");
assertEquals(t2, td2, "same timer 2");
var td1 = LzTimer.removeTimer(tt2.del1);
assertEquals(0, LzTimer.countTimers(tt2.del1), "after remove 1,1");
assertEquals(0, LzTimer.countTimers(tt2.del2), "after remove 1,2");
assertEquals(t1, td1, "same timer 1");
assertEquals(0, LzTimer.countTimers(tt3.del1), "before add");
var t1 = LzTimer.addTimer(tt3.del1, 10000);
assertEquals(1, LzTimer.countTimers(tt3.del1), "after add");
var t2 = LzTimer.resetTimer(tt3.del1, 10000);
assertEquals(1, LzTimer.countTimers(tt3.del1), "after reset");
var td1 = LzTimer.removeTimer(tt3.del1);
assertEquals(0, LzTimer.countTimers(tt3.del1), "after remove");
assertEquals(t2, td1, "same timer");
// test order of removal.
assertEquals(0, LzTimer.countTimers(tt4.del1), "before add");
var t1 = LzTimer.addTimer(tt4.del1, 10000);
assertEquals(1, LzTimer.countTimers(tt4.del1), "after add 1");
var t2 = LzTimer.addTimer(tt4.del1, 10000);
assertEquals(2, LzTimer.countTimers(tt4.del1), "after add 2");
var td1 = LzTimer.removeTimer(tt4.del1);
assertEquals(1, LzTimer.countTimers(tt4.del1), "after remove 1");
assertEquals(t1, td1, "same timer 1");
var td2 = LzTimer.removeTimer(tt4.del1);
assertEquals(0, LzTimer.countTimers(tt4.del1), "after remove 2");
assertEquals(t2, td2, "same timer 2");
// test order of removal.
assertEquals(0, LzTimer.countTimers(tt4.del1), "before add");
var t1 = LzTimer.addTimer(tt4.del1, 10000);
assertEquals(1, LzTimer.countTimers(tt4.del1), "after add 1");
var t2 = LzTimer.addTimer(tt4.del1, 10000);
assertEquals(2, LzTimer.countTimers(tt4.del1), "after add 2");
var t3 = LzTimer.addTimer(tt4.del1, 10000);
assertEquals(3, LzTimer.countTimers(tt4.del1), "after add 3");
var td1 = LzTimer.removeTimer(tt4.del1);
assertEquals(2, LzTimer.countTimers(tt4.del1), "after remove 1");
assertEquals(t1, td1, "same timer 1");
var td2 = LzTimer.removeTimer(tt4.del1);
assertEquals(1, LzTimer.countTimers(tt4.del1), "after remove 2");
assertEquals(t2, td2, "same timer 2");
var td3 = LzTimer.removeTimer(tt4.del1);
assertEquals(0, LzTimer.countTimers(tt4.del1), "after remove 3");
assertEquals(t3, td3, "same timer 3");