Example #1
0
    public bool Read_SurrogateCharacter()
    {
        SerialPort com1 = TCSupport.InitFirstSerialPort();
        SerialPort com2 = TCSupport.InitSecondSerialPort(com1);

        Console.WriteLine("Verifying read method with surrogate pair in the input and a surrogate pair for the newline");
        com1.Open();

        if (!com2.IsOpen) //This is necessary since com1 and com2 might be the same port if we are using a loopback
        {
            com2.Open();
        }

        string surrogatePair = "\uD800\uDC00";
        string newLine       = "\uD801\uDC01";
        string input         = TCSupport.GetRandomString(256, TCSupport.CharacterOptions.None) + surrogatePair + newLine;

        com1.NewLine = newLine;

        if (!VerifyReadTo(com1, com2, input, newLine))
        {
            Console.WriteLine("Err_342882haue!!! Verifying read method with surrogate pair in the input and a surrogate pair for the newline FAILED");
            return(false);
        }

        return(true);
    }
Example #2
0
            public void WriteRndStr()
            {
                string stringToWrite = TCSupport.GetRandomString(_strSize, TCSupport.CharacterOptions.Surrogates);

                try
                {
                    _com.WriteLine(stringToWrite);
                }
                catch (TimeoutException)
                {
                }
            }
Example #3
0
    public bool VerifyWrite(System.Text.Encoding encoding, int strSize, int numWrites)
    {
        SerialPort com1          = TCSupport.InitFirstSerialPort();
        SerialPort com2          = TCSupport.InitSecondSerialPort(com1);
        string     stringToWrite = TCSupport.GetRandomString(strSize, TCSupport.CharacterOptions.Surrogates);

        com1.Encoding = encoding;
        com1.Open();

        if (!com2.IsOpen) //This is necessary since com1 and com2 might be the same port if we are using a loopback
        {
            com2.Open();
        }

        return(VerifyWriteStr(com1, com2, stringToWrite, numWrites));
    }
Example #4
0
    public bool VerifyWrite(System.Text.Encoding encoding, int strSize, string newLine, int numWrites)
    {
        SerialPort com1          = TCSupport.InitFirstSerialPort();
        SerialPort com2          = TCSupport.InitSecondSerialPort(com1);
        Random     rndGen        = new Random(-55);
        string     stringToWrite = TCSupport.GetRandomString(NEWLINE_TESTING_STRING_SIZE, TCSupport.CharacterOptions.None);

        com1.Encoding = encoding;
        com1.Open();

        if (!com2.IsOpen) //This is necessary since com1 and com2 might be the same port if we are using a loopback
        {
            com2.Open();
        }

        return(VerifyWriteLine(com1, com2, stringToWrite, numWrites));
    }
Example #5
0
    private void VerifyWrite(System.Text.Encoding encoding, int strSize, string newLine, int numWrites)
    {
        using (SerialPort com1 = TCSupport.InitFirstSerialPort())
            using (SerialPort com2 = TCSupport.InitSecondSerialPort(com1))
            {
                string stringToWrite = TCSupport.GetRandomString(NEWLINE_TESTING_STRING_SIZE, TCSupport.CharacterOptions.None);

                com1.Encoding = encoding;
                com1.Open();

                if (!com2.IsOpen) //This is necessary since com1 and com2 might be the same port if we are using a loopback
                {
                    com2.Open();
                }

                VerifyWriteLine(com1, com2, stringToWrite, numWrites);
            }
    }
        private void VerifyWrite(Encoding encoding, int strSize, int numWrites)
        {
            using (SerialPort com1 = TCSupport.InitFirstSerialPort())
                using (SerialPort com2 = TCSupport.InitSecondSerialPort(com1))
                {
                    string stringToWrite = TCSupport.GetRandomString(strSize, TCSupport.CharacterOptions.Surrogates);

                    com1.Encoding = encoding;
                    com1.Open();

                    if (!com2.IsOpen) //This is necessary since com1 and com2 might be the same port if we are using a loopback
                    {
                        com2.Open();
                    }

                    VerifyWriteStr(com1, com2, stringToWrite, numWrites);
                }
        }
Example #7
0
        public void Read_SurrogateCharacter()
        {
            using (SerialPort com1 = TCSupport.InitFirstSerialPort())
                using (SerialPort com2 = TCSupport.InitSecondSerialPort(com1))
                {
                    Debug.WriteLine("Verifying read method with surrogate pair in the input and a surrogate pair for the newline");
                    com1.Open();

                    if (!com2.IsOpen) //This is necessary since com1 and com2 might be the same port if we are using a loopback
                    {
                        com2.Open();
                    }

                    var    surrogatePair = "\uD800\uDC00";
                    var    newLine       = "\uD801\uDC01";
                    string input         = TCSupport.GetRandomString(256, TCSupport.CharacterOptions.None) + surrogatePair + newLine;

                    com1.NewLine = newLine;

                    VerifyReadLine(com1, com2, input, newLine);
                }
        }
Example #8
0
        private void Verify_Handshake(Handshake handshake)
        {
            using (SerialPort com1 = new SerialPort(TCSupport.LocalMachineSerialInfo.FirstAvailablePortName))
                using (SerialPort com2 = new SerialPort(TCSupport.LocalMachineSerialInfo.SecondAvailablePortName))
                {
                    byte[] XOffBuffer = new byte[1];
                    byte[] XOnBuffer  = new byte[1];

                    XOffBuffer[0] = 19;
                    XOnBuffer[0]  = 17;

                    int numNewLineBytes;

                    Debug.WriteLine("Verifying Handshake={0}", handshake);

                    com1.WriteTimeout = 3000;
                    com1.Handshake    = handshake;
                    com1.Open();
                    com2.Open();

                    numNewLineBytes = com1.Encoding.GetByteCount(com1.NewLine.ToCharArray());

                    //Setup to ensure write will block with type of handshake method being used
                    if (Handshake.RequestToSend == handshake || Handshake.RequestToSendXOnXOff == handshake)
                    {
                        com2.RtsEnable = false;
                    }

                    if (Handshake.XOnXOff == handshake || Handshake.RequestToSendXOnXOff == handshake)
                    {
                        com2.Write(XOffBuffer, 0, 1);
                        Thread.Sleep(250);
                    }

                    //Write a random string asynchronously so we can verify some things while the write call is blocking
                    string randomLine      = TCSupport.GetRandomString(s_STRING_SIZE_HANDSHAKE, TCSupport.CharacterOptions.Surrogates);
                    byte[] randomLineBytes = com1.Encoding.GetBytes(randomLine);
                    Task   task            = Task.Run(() => com1.WriteLine(randomLine));

                    TCSupport.WaitForTaskToStart(task);

                    TCSupport.WaitForWriteBufferToLoad(com1, randomLineBytes.Length + numNewLineBytes);

                    //Verify that CtsHolding is false if the RequestToSend or RequestToSendXOnXOff handshake method is used
                    if ((Handshake.RequestToSend == handshake || Handshake.RequestToSendXOnXOff == handshake) && com1.CtsHolding)
                    {
                        Fail("ERROR!!! Expcted CtsHolding={0} actual {1}", false, com1.CtsHolding);
                    }

                    //Setup to ensure write will succeed
                    if (Handshake.RequestToSend == handshake || Handshake.RequestToSendXOnXOff == handshake)
                    {
                        com2.RtsEnable = true;
                    }

                    if (Handshake.XOnXOff == handshake || Handshake.RequestToSendXOnXOff == handshake)
                    {
                        com2.Write(XOnBuffer, 0, 1);
                    }

                    //Wait till write finishes
                    TCSupport.WaitForTaskCompletion(task);

                    Assert.Equal(0, com1.BytesToWrite);

                    //Verify that CtsHolding is true if the RequestToSend or RequestToSendXOnXOff handshake method is used
                    if ((Handshake.RequestToSend == handshake || Handshake.RequestToSendXOnXOff == handshake) &&
                        !com1.CtsHolding)
                    {
                        Fail("ERROR!!! Expected CtsHolding={0} actual {1}", true, com1.CtsHolding);
                    }
                }
        }
Example #9
0
    private void Verify_Handshake(Handshake handshake)
    {
        using (SerialPort com1 = new SerialPort(TCSupport.LocalMachineSerialInfo.FirstAvailablePortName))
            using (SerialPort com2 = new SerialPort(TCSupport.LocalMachineSerialInfo.SecondAvailablePortName))
            {
                byte[] XOffBuffer = new byte[1];
                byte[] XOnBuffer  = new byte[1];

                XOffBuffer[0] = 19;
                XOnBuffer[0]  = 17;

                int numNewLineBytes;

                Debug.WriteLine("Verifying Handshake={0}", handshake);

                com1.WriteTimeout = 3000;
                com1.Handshake    = handshake;
                com1.Open();
                com2.Open();

                numNewLineBytes = com1.Encoding.GetByteCount(com1.NewLine.ToCharArray());

                //Setup to ensure write will block with type of handshake method being used
                if (Handshake.RequestToSend == handshake || Handshake.RequestToSendXOnXOff == handshake)
                {
                    com2.RtsEnable = false;
                }

                if (Handshake.XOnXOff == handshake || Handshake.RequestToSendXOnXOff == handshake)
                {
                    com2.Write(XOffBuffer, 0, 1);
                    Thread.Sleep(250);
                }

                //Write a random string asynchronously so we can verify some things while the write call is blocking
                string randomLine      = TCSupport.GetRandomString(STRING_SIZE_HANDSHAKE, TCSupport.CharacterOptions.Surrogates);
                byte[] randomLineBytes = com1.Encoding.GetBytes(randomLine);
                Task   task            = Task.Run(() => com1.WriteLine(randomLine));

                Stopwatch sw = Stopwatch.StartNew();

                while (task.Status != TaskStatus.Running)
                {
                    //Wait for the thread to start
                    Thread.Sleep(50);
                    Assert.False(sw.ElapsedMilliseconds > 2000, "Timeout waiting for task to start");
                }


                sw.Restart();

                int expectedWriteLengthBytes = randomLineBytes.Length + numNewLineBytes;

                while (expectedWriteLengthBytes > com1.BytesToWrite)
                {
                    Thread.Sleep(50);
                    Assert.False(sw.ElapsedMilliseconds > 1000, $"Timeout waiting for write to enqueue (queued {com1.BytesToWrite}, expected {expectedWriteLengthBytes})");
                }

                int bytesInBuffer = com1.BytesToWrite;

                //Verify that the correct number of bytes are in the buffer
                Assert.Equal(expectedWriteLengthBytes, bytesInBuffer);

                //Verify that CtsHolding is false if the RequestToSend or RequestToSendXOnXOff handshake method is used
                if ((Handshake.RequestToSend == handshake || Handshake.RequestToSendXOnXOff == handshake) && com1.CtsHolding)
                {
                    Fail("ERROR!!! Expcted CtsHolding={0} actual {1}", false, com1.CtsHolding);
                }

                //Setup to ensure write will succeed
                if (Handshake.RequestToSend == handshake || Handshake.RequestToSendXOnXOff == handshake)
                {
                    com2.RtsEnable = true;
                }

                if (Handshake.XOnXOff == handshake || Handshake.RequestToSendXOnXOff == handshake)
                {
                    com2.Write(XOnBuffer, 0, 1);
                }

                //Wait till write finishes
                Assert.True(task.Wait(2000), "Waiting for task to complete");

                Assert.Equal(0, com1.BytesToWrite);

                //Verify that CtsHolding is true if the RequestToSend or RequestToSendXOnXOff handshake method is used
                if ((Handshake.RequestToSend == handshake || Handshake.RequestToSendXOnXOff == handshake) &&
                    !com1.CtsHolding)
                {
                    Fail("ERROR!!! Expcted CtsHolding={0} actual {1}", true, com1.CtsHolding);
                }
            }
    }