예제 #1
0
        private void CanDecode(int iNumberOfEntries)
        {
            // Add entries to pending
            RailPackedListOutgoing <Foo> list = new RailPackedListOutgoing <Foo>();

            for (int i = 0; i < iNumberOfEntries; ++i)
            {
                list.AddPending(poolMock.Object.Allocate());
            }

            Assert.Equal(iNumberOfEntries, elementsCreated);
            poolMock.Verify(p => p.Allocate(), Times.Exactly(iNumberOfEntries));
            poolMock.Verify(p => p.Deallocate(It.IsAny <Foo>()), Times.Never);

            // Encode
            RailBitBuffer buffer = new RailBitBuffer();

            list.Encode(
                buffer,
                RailConfig.PACKCAP_COMMANDS,
                RailConfig.MAXSIZE_COMMANDUPDATE,
                (foo, buf) => foo.WriteData(buf));
            Assert.False(buffer.Empty);
            poolMock.Verify(p => p.Allocate(), Times.Exactly(iNumberOfEntries));
            poolMock.Verify(p => p.Deallocate(It.IsAny <Foo>()), Times.Never);
            Assert.Equal(iNumberOfEntries, list.Sent.Count());

            RailPackedListIncoming <Foo> incoming = new RailPackedListIncoming <Foo>();

            incoming.Decode(
                buffer,
                b =>
            {
                Foo foo = poolMock.Object.Allocate();
                foo.ReadData(b);
                return(foo);
            });

            Assert.Equal(iNumberOfEntries, incoming.Received.Count());
        }
예제 #2
0
 public RailPacketFromClient()
 {
     View           = new RailView();
     commandUpdates = new RailPackedListIncoming <RailCommandUpdate>();
 }
예제 #3
0
 public RailPacketFromServer()
 {
     deltas = new RailPackedListIncoming <RailStateDelta>();
 }