예제 #1
0
            public void Zero_length_data_array_is_accepted_and_encoded()
            {
                byte[]           data             = new byte[0];
                EncodedDataField encodedEmptyData = new EncodedDataField(data);

                Assert.AreEqual(data.Length, encodedEmptyData.Length);
            }
예제 #2
0
 public Will(QoSLevel qos, bool retain, string topic, EncodedDataField message)
 {
     QoS     = qos;
     Retain  = retain;
     Topic   = topic;
     Message = message;
 }
예제 #3
0
            public void Data_length_is_counted_and_encoded_correctly()
            {
                UInt16 expectedDataLength = 52;

                byte[] exampleDataArray = new byte[expectedDataLength];

                EncodedDataField encodedDataField = new EncodedDataField(exampleDataArray);

                Assert.AreEqual(expectedDataLength, encodedDataField.Length);
                Assert.AreEqual(expectedDataLength.MostSignificantByte(), encodedDataField.Encode().First());
                Assert.AreEqual(expectedDataLength.LeastSignificantByte(), encodedDataField.Encode().Skip(1).First());
            }
예제 #4
0
            public void Max_length_data_array_is_accepted_and_encoded()
            {
                byte[] testData = new byte[65535];
                new Random().NextBytes(testData);
                EncodedDataField encodedMaxLengthData = new EncodedDataField(testData);

                byte[] encodedDataBytes = encodedMaxLengthData.Encode().Skip(2).ToArray();

                Assert.AreEqual(testData.Length, encodedMaxLengthData.Length);
                for (int i = 0; i < testData.Length; i++)
                {
                    Assert.AreEqual(testData[i], encodedDataBytes[i]);
                }
            }
예제 #5
0
            public void Encoded_data_bytes_match_source_data()
            {
                UInt16 testDataLength = 30;

                byte[] data = new byte[testDataLength];
                new Random().NextBytes(data);

                IByteEncodable     edf         = new EncodedDataField(data);
                IEnumerable <byte> encodedData = edf.Encode().Skip(2);

                for (int i = 0; i < data.Count(); i++)
                {
                    Assert.AreEqual(data[i], encodedData.ToArray()[i]);
                }
            }
예제 #6
0
            public void Will_msg_encoded_when_provided()
            {
                EncodedString      clientID     = new EncodedString("test 1");
                EncodedString      willTopic    = new EncodedString("Will Topic");
                EncodedDataField   willMsg      = new EncodedDataField(utf8.GetBytes("Will Message"));
                Will               w            = new Will(QoSLevel.AtMostOnce, false, willTopic, willMsg);
                IByteEncodable     cp           = new ConnectPayload(clientID, w);
                IEnumerable <byte> encodedBytes = cp.Encode();

                string encodedMsg = utf8.GetString(
                    new EncodedDataField(
                        encodedBytes.Skip(clientID.Length + 2)
                        .Skip(willTopic.Length + 4)
                        .ToArray()));

                Assert.IsTrue(utf8.GetString(willMsg.Data.ToArray()) == encodedMsg);
            }