public void Issue469_An_actor_with_receive_timeout_must_cancel_receive_timeout_when_terminated()
{
//This test verifies that bug #469 "ReceiveTimeout isn't cancelled when actor terminates" has been fixed
var timeoutLatch = CreateTestLatch();
Sys.EventStream.Subscribe(TestActor, typeof(DeadLetter));
var timeoutActor = Sys.ActorOf(Props.Create(() => new TimeoutActor(timeoutLatch, TimeSpan.FromMilliseconds(500))));
//make sure TestActor gets a notification when timeoutActor terminates
Watch(timeoutActor);
// wait for first ReceiveTimeout message, in which the latch is opened
timeoutLatch.Ready(TimeSpan.FromSeconds(2));
//Stop and wait for the actor to terminate
Sys.Stop(timeoutActor);
ExpectTerminated(timeoutActor);
//We should not get any messages now. If we get a message now,
//it's a DeadLetter with ReceiveTimeout, meaning the receivetimeout wasn't cancelled.
ExpectNoMsg(TimeSpan.FromSeconds(1));
}
}