Example #1
0
        public void SocketWrapper_TestEndToEnd()
        {
            SocketWrapper server = new SocketWrapper(Configuration.server);
            SocketWrapper client = new SocketWrapper(Configuration.client);

            DataQueue knownData = new DataQueue();
            DataQueue toSend    = new DataQueue();
            DataQueue toRecieve = new DataQueue();

            short[] known   = new short[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 };
            byte[]  payload = new byte[known.Length * 2];
            Buffer.BlockCopy(known, 0, payload, 0, payload.Length);
            Motus_1_RawDataPacket dummyPacket = new Motus_1_RawDataPacket(payload);

            for (int i = 0; i < knownData.MaxSize; i++)
            {
                knownData.Add(dummyPacket);
                toSend.Add(dummyPacket);
            }

            server.StartServer();
            server.ServerSetTxData(toSend);
            Assert.IsTrue(toSend.IsEmpty());

            client.ClientStartRead();
            Thread.Sleep(1000);
            Assert.IsTrue(client.ClientHasData());
            client.ClientGetRxData(toRecieve);
            Assert.AreEqual(toRecieve.Count, toRecieve.MaxSize);
            while (!toRecieve.IsEmpty())
            {
                Motus_1_RawDataPacket packetKnown = new Motus_1_RawDataPacket(knownData.Get());
                Motus_1_RawDataPacket packetTest  = new Motus_1_RawDataPacket(toRecieve.Get());
                short[] payloadKnown = packetKnown.DeSerialize();
                short[] payloadTest  = packetTest.DeSerialize();
                for (int i = 0; i < payloadKnown.Length; i++)
                {
                    Assert.AreEqual(known[i], payloadKnown[i]);
                    Assert.AreEqual(payloadKnown[i], payloadTest[i]);
                }
            }
        }