示例#1
0
        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();
        }
示例#2
0
        public void PopFromEmptyQueueReturnsEmpty()
        {
            var queue = new NetworkEventQueue(1);
            var cq = queue.ToConcurrent();
            int offset, size;

            Assert.AreEqual(NetworkEvent.Type.Empty, cq.PopEventForConnection(0, out offset, out size));
            queue.Dispose();
        }
示例#3
0
        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();
        }