public void SameFrameReceiveAsync() { var test = new EventSystemTest(); var frameCounter = 0; test.AddTask(async () => { while (test.IsRunning) { frameCounter++; await test.NextFrame(); } }, 100); test.AddTask(async () => { var key = new EventKey(); var recv = new EventReceiver(key); key.Broadcast(); var currentFrame = frameCounter; await recv.ReceiveAsync(); Assert.AreEqual(currentFrame, frameCounter); test.Exit(); }); test.Run(); }
public void EveryFrameClear() { var game = new EventSystemTest(); var frameCount = 0; var evt = new EventKey(); game.AddTask(async() => { while (frameCount < 25) { evt.Broadcast(); evt.Broadcast(); await game.NextFrame(); } }, 10); game.AddTask(async() => { var rcv = new EventReceiver(evt, EventReceiverOptions.Buffered); while (frameCount < 25) { if (frameCount == 20) { var manyEvents = rcv.TryReceiveAll(); Assert.AreEqual(2, manyEvents); game.Exit(); } rcv.Reset(); await game.NextFrame(); frameCount++; } }, -10); game.Run(); }
public void DelayedReceiverCreation() { var game = new EventSystemTest(); var frameCount = 0; game.AddTask(async() => { var evt = new EventKey(); EventReceiver rcv = null; while (frameCount < 25) { if (frameCount == 5) { evt.Broadcast(); } if (frameCount == 20) { rcv = new EventReceiver(evt); Assert.False(rcv.TryReceive()); evt.Broadcast(); } if (frameCount == 22) { Assert.NotNull(rcv); Assert.True(rcv.TryReceive()); game.Exit(); } await game.NextFrame(); frameCount++; } }); game.Run(); }
public void EveryFrameClear() { var game = new EventSystemTest(); var frameCount = 0; var evt = new EventKey(); game.AddTask(async () => { while (frameCount < 25) { evt.Broadcast(); evt.Broadcast(); await game.NextFrame(); } }, 10); game.AddTask(async () => { var rcv = new EventReceiver(evt, EventReceiverOptions.Buffered); while (frameCount < 25) { if (frameCount == 20) { var manyEvents = rcv.TryReceiveAll(); Assert.AreEqual(2, manyEvents); game.Exit(); } rcv.Reset(); await game.NextFrame(); frameCount++; } }, -10); game.Run(); }
public void ReceiveFirstCheck() { var game = new EventSystemTest(); var frameCount = 0; var evt1 = new EventKey(); var evt2 = new EventKey(); game.AddTask(async () => { var rcv1 = new EventReceiver(evt1); var rcv2 = new EventReceiver(evt2); for (;;) { var rcv = await EventReceiver.ReceiveOne(rcv1, rcv2); if (rcv.Receiver == rcv1) { evt2.Broadcast(); //this is the point of this test.. see if t2 will get populated next loop await game.NextFrame(); } else if (rcv.Receiver == rcv2) { await game.NextFrame(); game.Exit(); } } }); game.AddTask(async () => { while (frameCount < 30 && game.IsRunning) { frameCount++; if (frameCount == 20) { evt1.Broadcast(); } await game.NextFrame(); } Assert.Fail("t2 should be completed"); }); }
public void ReceiveManyCheck() { var game = new EventSystemTest(); var frameCount = 0; game.AddTask(async () => { var evt = new EventKey(); var rcv = new EventReceiver(evt, EventReceiverOptions.Buffered); while (frameCount < 25) { evt.Broadcast(); if (frameCount == 20) { var manyEvents = rcv.TryReceiveAll(); Assert.AreEqual(manyEvents, 21); game.Exit(); } await game.NextFrame(); frameCount++; } }); game.Run(); }
public void DelayedReceiverCreation() { var game = new EventSystemTest(); var frameCount = 0; game.AddTask(async () => { var evt = new EventKey(); EventReceiver rcv = null; while (frameCount < 25) { if (frameCount == 5) { evt.Broadcast(); } if (frameCount == 20) { rcv = new EventReceiver(evt); Assert.False(rcv.TryReceive()); evt.Broadcast(); } if (frameCount == 22) { Assert.NotNull(rcv); Assert.True(rcv.TryReceive()); game.Exit(); } await game.NextFrame(); frameCount++; } }); game.Run(); }