public void Serializes_Pdu()
        {
            var expectedResult = new byte[]
            {
                0x00, 0x00, 0x00, 0x2a,                   // length
                0x80, 0x00, 0x00, 0x03,                   // command
                0x00, 0x00, 0x00, 0x00,                   // status
                0x00, 0x00, 0x00, 0x10,                   // sequence
                0x73, 0x6f, 0x6d, 0x65, 0x69, 0x64, 0x00, // message_id
                0x31, 0x36, 0x30, 0x38, 0x31, 0x38, 0x31, // final_date
                0x36, 0x33, 0x34, 0x35, 0x36, 0x34, 0x34,
                0x30, 0x2b, 0x00,
                0x05,                                     // message_state
                0xff                                      // error_code
            };

            var pdu = new QueryResponse(
                SmppStatus.Ok,
                16,
                "someid",
                new DateTimeOffset(2016, 8, 18, 16, 34, 56, 400, TimeSpan.FromHours(10)),
                MessageState.Undeliverable,
                255);
            var serializer = new QueryResponseSerializer();
            var result = serializer.Serialize(pdu);

            CollectionAssert.AreEqual(expectedResult, result);
        }
        public void Deserializes_Pdu()
        {
            var data = new byte[]
            {
                0x00, 0x00, 0x00, 0x2a,                   // length
                0x80, 0x00, 0x00, 0x03,                   // command
                0x00, 0x00, 0x00, 0x00,                   // status
                0x00, 0x00, 0x00, 0x10,                   // sequence
                0x73, 0x6f, 0x6d, 0x65, 0x69, 0x64, 0x00, // message_id
                0x31, 0x36, 0x30, 0x38, 0x31, 0x38, 0x31, // final_date
                0x36, 0x33, 0x34, 0x35, 0x36, 0x34, 0x34,
                0x30, 0x2b, 0x00,
                0x05,                                     // message_state
                0xff                                      // error_code
            };

            var serializer = new QueryResponseSerializer();
            var pdu = serializer.Deserialize(data);

            Assert.AreEqual(SmppCommand.QueryResp, pdu.Command);
            Assert.AreEqual(16, pdu.SequenceNumber);
            Assert.AreEqual("someid", pdu.MessageId);
            Assert.AreEqual(new DateTimeOffset(2016, 8, 18, 16, 34, 56, 400, TimeSpan.FromHours(10)), pdu.FinalDate);
            Assert.AreEqual(MessageState.Undeliverable, pdu.MessageState);
            Assert.AreEqual(255, pdu.ErrorCode);
        }