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