public void PopMixingMethodsOnSingleConnectionWorks() { var queue = new NetworkEventQueue(16); int offset, size; for (int i = 0; i < 16; ++i) { queue.PushEvent(new NetworkEvent { connectionId = 0, offset = i, size = 0, type = NetworkEvent.Type.Data }); } int id; for (int i = 0; i < 16 / 2; ++i) { Assert.AreEqual(NetworkEvent.Type.Data, queue.PopEvent(out id, out offset, out size)); Assert.AreEqual(0, id); Assert.AreEqual(i * 2, offset); Assert.AreEqual(NetworkEvent.Type.Data, queue.PopEventForConnection(0, out offset, out size)); Assert.AreEqual(i * 2 + 1, offset); } Assert.AreEqual(NetworkEvent.Type.Empty, queue.PopEvent(out id, out offset, out size)); Assert.AreEqual(NetworkEvent.Type.Empty, queue.PopEventForConnection(0, out offset, out size)); queue.Dispose(); }
public void PopFromMultipleConnectionsWithGrowingEventsWorks() { var queue = new NetworkEventQueue(1); var cq = queue.ToConcurrent(); int offset, size; for (int con = 0; con < 16; ++con) { for (int i = 0; i < con; ++i) { queue.PushEvent(new NetworkEvent { connectionId = con, offset = con, size = i, type = NetworkEvent.Type.Data }); } } for (int con = 0; con < 16; ++con) { for (int i = 0; i < con; ++i) { Assert.AreEqual(NetworkEvent.Type.Data, cq.PopEventForConnection(con, out offset, out size)); Assert.AreEqual(con, offset); Assert.AreEqual(i, size); } Assert.AreEqual(NetworkEvent.Type.Empty, cq.PopEventForConnection(con, out offset, out size)); } queue.Dispose(); }
public void PushToMultipleConnectionsCanGrowMaxEvents() { var queue = new NetworkEventQueue(1); int offset, size; for (int con = 0; con < 16; ++con) { for (int i = 0; i < con; ++i) { queue.PushEvent(new NetworkEvent { connectionId = con, offset = con, size = i, type = NetworkEvent.Type.Data }); } } for (int con = 0; con < 16; ++con) { for (int i = 0; i < con; ++i) { Assert.AreEqual(NetworkEvent.Type.Data, queue.PopEventForConnection(con, out offset, out size)); Assert.AreEqual(con, offset); Assert.AreEqual(i, size); } Assert.AreEqual(NetworkEvent.Type.Empty, queue.PopEventForConnection(con, out offset, out size)); } queue.Dispose(); }
public void PopFromEmptyQueueReturnsEmpty() { var queue = new NetworkEventQueue(1); int offset, size; Assert.AreEqual(NetworkEvent.Type.Empty, queue.PopEventForConnection(0, out offset, out size)); queue.Dispose(); }
public void PushToSingleConnectionCanBePoppedPerConnection() { var queue = new NetworkEventQueue(1); int offset, size; queue.PushEvent(new NetworkEvent { connectionId = 0, offset = 0, size = 0, type = NetworkEvent.Type.Data }); Assert.AreEqual(NetworkEvent.Type.Data, queue.PopEventForConnection(0, out offset, out size)); Assert.AreEqual(NetworkEvent.Type.Empty, queue.PopEventForConnection(0, out offset, out size)); queue.Dispose(); }
public void PopFromSingleConnectionWorks() { var queue = new NetworkEventQueue(1); var cq = queue.ToConcurrent(); int offset, size; queue.PushEvent(new NetworkEvent { connectionId = 0, offset = 0, size = 0, type = NetworkEvent.Type.Data }); Assert.AreEqual(NetworkEvent.Type.Data, cq.PopEventForConnection(0, out offset, out size)); Assert.AreEqual(NetworkEvent.Type.Empty, cq.PopEventForConnection(0, out offset, out size)); queue.Dispose(); }
public void PopMixingMethodsOnMultipleConnectionsWorks() { var queue = new NetworkEventQueue(16); int offset, size; for (int i = 0; i < 16; ++i) { for (int con = 0; con < 16; ++con) { queue.PushEvent(new NetworkEvent { connectionId = con, offset = con, size = i, type = NetworkEvent.Type.Data }); } } // Pop half the events from connection 10, make sure everything else is still in sync int id; for (int i = 0; i < 8; ++i) { Assert.AreEqual(NetworkEvent.Type.Data, queue.PopEventForConnection(10, out offset, out size)); Assert.AreEqual(10, offset); Assert.AreEqual(i, size); } for (int i = 0; i < 16; ++i) { for (int con = 0; con < 16; ++con) { if (con == 10 && i < 8) { continue; } Assert.AreEqual(NetworkEvent.Type.Data, queue.PopEvent(out id, out offset, out size)); Assert.AreEqual(con, id); Assert.AreEqual(con, offset); Assert.AreEqual(i, size); } } Assert.AreEqual(NetworkEvent.Type.Empty, queue.PopEventForConnection(10, out offset, out size)); Assert.AreEqual(NetworkEvent.Type.Empty, queue.PopEvent(out id, out offset, out size)); queue.Dispose(); }
public void PushToSingleConnectionCanGrowMaxEvents() { var queue = new NetworkEventQueue(1); int offset, size; for (int i = 0; i < 16; ++i) { queue.PushEvent(new NetworkEvent { connectionId = 0, offset = 0, size = 0, type = NetworkEvent.Type.Data }); } for (int i = 0; i < 16; ++i) { Assert.AreEqual(NetworkEvent.Type.Data, queue.PopEventForConnection(0, out offset, out size)); } Assert.AreEqual(NetworkEvent.Type.Empty, queue.PopEventForConnection(0, out offset, out size)); queue.Dispose(); }