Exemplo n.º 1
0
        public void ReceiveExpectSuccess(byte[] expectedReceiveBuffer)
        {
            Console.WriteLine("[{0} {1} millis] ReceiveBlocking, timeout is {2} milliseconds (Expecting Success)...",
                              name, (Stopwatch.GetTimestamp() - stopwatchStartTicks).StopwatchTicksAsInt64Milliseconds(), timeoutMillis);
            Int32 bytesRead = receiveTransmitter.ReceiveBlocking(receiveBuffer, 0, (UInt32)receiveBuffer.Length, timeoutMillis);

            CdpTest.AssertEqual(expectedReceiveBuffer, receiveBuffer, bytesRead);
        }
        public void SimpleTestMethod()
        {
            Cdp.TryStaticInit(Cdp.MaxPayloadWithIDOverUdp);

            VirtualDatagramTransmitter transmitter = new VirtualDatagramTransmitter();

            transmitter.Print(Console.Out);


            byte[] sendBuffer = new Byte[] { 0, 1, 2, 3, 4 };
            byte[] receiveBuffer;
            Int32  length;

            //
            // Send Buffer
            //
            transmitter.Send(sendBuffer, 0, (UInt32)sendBuffer.Length);
            Assert.AreEqual(1, transmitter.DatagramsInSendQueue);

            //
            // Receive Buffer
            //
            receiveBuffer = new Byte[sendBuffer.Length];
            length        = transmitter.otherTransmitter.ReceiveNonBlocking(receiveBuffer, 0, (UInt32)receiveBuffer.Length);
            Assert.AreEqual(sendBuffer.Length, length);
            Assert.AreEqual(0, transmitter.DatagramsInSendQueue);
            CdpTest.AssertEqual(sendBuffer, receiveBuffer);

            length = transmitter.otherTransmitter.ReceiveNonBlocking(receiveBuffer, 0, (UInt32)sendBuffer.Length);
            Assert.AreEqual(-1, length);

            //
            // Send the buffer 5 times
            //
            for (int i = 0; i < 5; i++)
            {
                sendBuffer[0] = (Byte)i;
                transmitter.Send(sendBuffer, 0, (UInt32)sendBuffer.Length);
                Assert.AreEqual(i + 1, transmitter.DatagramsInSendQueue);
            }
            transmitter.Print(Console.Out);
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("Receiving datagram {0}", i + 1);
                receiveBuffer = new Byte[sendBuffer.Length];
                length        = transmitter.otherTransmitter.ReceiveNonBlocking(receiveBuffer, 0, (UInt32)receiveBuffer.Length);
                Assert.AreEqual(sendBuffer.Length, length);
                Assert.AreEqual(4 - i, transmitter.DatagramsInSendQueue);

                sendBuffer[0] = (Byte)i;
                CdpTest.AssertEqual(sendBuffer, receiveBuffer);
            }

            length = transmitter.otherTransmitter.ReceiveNonBlocking(receiveBuffer, 0, (UInt32)sendBuffer.Length);
            Assert.AreEqual(-1, length);
        }