using Microsoft.VisualStudio.TestTools.UnitTesting; using Quectel_BC35_G_NBIOT; using Quectel_BC35_G_NBIOT.MessageEntity.AT.Incoming; using Quectel_BC35_G_NBIOT.MessageEntity.AT.Outgoing._3GPP; using System.Collections.Generic; using System.Linq; using System.Text; namespace Quectel_BC35_G_NBIOT_Test { [TestClass] public class MessageTest { public static bool ValueEquals(IEnumerable array1, IEnumerable array2) { if (array1 == null && array2 == null) { return true; } if ((array1 == null) || (array2 == null)) { return false; } if (array1.Count() != array2.Count()) { return false; } if (array1.Equals(array2)) { return true; } else { for (int Index = 0; Index < array1.Count(); Index++) { if (!Equals(array1.ElementAt(Index), array2.ElementAt(Index))) { return false; } } } return true; } #region DisplayProductIdentificationInformationCommand [TestMethod] public void DisplayProductIdentificationInformationCommandTestMethod1() { var command = new DisplayProductIdentificationInformationCommand(); Quectel_BC35_G_NBIOT.Parser parser = new Quectel_BC35_G_NBIOT.Parser(); var actual = parser.Serialize(command); var expect = Encoding.UTF8.GetBytes("ATI") .Concat(new byte[] { MessageCutter.CR, MessageCutter.LF }); Assert.AreEqual(true, ValueEquals(actual, expect)); } [TestMethod] public void DisplayProductIdentificationInformationCommandResponseTestMethod1() { var msgStrContent = MessageCutter.CRLF + "Quectel" + MessageCutter.CRLF + "123" + MessageCutter.CRLF + "Revision:789" + MessageCutter.CRLF + MessageCutter.CRLF + "OK" + MessageCutter.CRLF; var raw = Encoding.UTF8.GetBytes(msgStrContent); Quectel_BC35_G_NBIOT.Parser parser = new Quectel_BC35_G_NBIOT.Parser(); var actual = parser.Deserialize(raw.ToArray()) as GenericResponse; Assert.AreEqual(true, actual != null); Assert.AreEqual(true, actual.State.HasValue); Assert.AreEqual(true, actual.State == GenericResponse.ResponseState.OK); Assert.AreEqual(true, actual.StringBody == msgStrContent); } [TestMethod] public void DisplayProductIdentificationInformationCommandResponseTestMethod2() { var msgStrContent = MessageCutter.CRLF + "Quectel" + MessageCutter.CRLF + "123" + MessageCutter.CRLF + "Revision:789" + MessageCutter.CRLF + MessageCutter.CRLF + "ERROR" + MessageCutter.CRLF; var raw = Encoding.UTF8.GetBytes(msgStrContent); Quectel_BC35_G_NBIOT.Parser parser = new Quectel_BC35_G_NBIOT.Parser(); var actual = parser.Deserialize(raw.ToArray()) as GenericResponse; Assert.AreEqual(true, actual != null); Assert.AreEqual(true, actual.State.HasValue); Assert.AreEqual(true, actual.State == GenericResponse.ResponseState.ERROR); Assert.AreEqual(true, actual.StringBody == msgStrContent); } [TestMethod] public void DisplayProductIdentificationInformationCommandResponseTestMethod3() { var msgStrContent = MessageCutter.CRLF + "Quectel" + MessageCutter.CRLF + "123" + MessageCutter.CRLF + "Revision:789" + MessageCutter.CRLF + MessageCutter.CRLF + "+CME ERROR:1" + MessageCutter.CRLF; var raw = Encoding.UTF8.GetBytes(msgStrContent); Quectel_BC35_G_NBIOT.Parser parser = new Quectel_BC35_G_NBIOT.Parser(); var actual = parser.Deserialize(raw.ToArray()) as GenericResponse; Assert.AreEqual(true, actual != null); Assert.AreEqual(true, actual.State.HasValue); Assert.AreEqual(true, actual.State == GenericResponse.ResponseState.CME_ERROR); Assert.AreEqual(true, actual.CME_ERROR_CODE.HasValue); Assert.AreEqual(true, actual.CME_ERROR_CODE == 1); Assert.AreEqual(true, actual.StringBody == msgStrContent); } [TestMethod] public void DisplayProductIdentificationInformationCommandResponseTestMethod4() { var msgStrContent = MessageCutter.CRLF + "Quectel" + MessageCutter.CRLF + "123" + MessageCutter.CRLF + "Revision:789" + MessageCutter.CRLF + MessageCutter.CRLF + "+CME ERROR:1123123" + MessageCutter.CRLF; var raw = Encoding.UTF8.GetBytes(msgStrContent); Quectel_BC35_G_NBIOT.Parser parser = new Quectel_BC35_G_NBIOT.Parser(); var actual = parser.Deserialize(raw.ToArray()) as GenericResponse; Assert.AreEqual(true, actual != null); Assert.AreEqual(true, actual.State.HasValue); Assert.AreEqual(true, actual.State == GenericResponse.ResponseState.CME_ERROR); Assert.AreEqual(true, actual.CME_ERROR_CODE.HasValue); Assert.AreEqual(true, actual.CME_ERROR_CODE == 1123123); Assert.AreEqual(true, actual.StringBody == msgStrContent); } [TestMethod] public void DisplayProductIdentificationInformationCommandResponseTestMethod5() { var msgStrContent = MessageCutter.CRLF + "Quectel" + MessageCutter.CRLF + "123" + MessageCutter.CRLF + "Revision:789" + MessageCutter.CRLF + MessageCutter.CRLF + "+CME ERROR: 1123123" + MessageCutter.CRLF; var raw = Encoding.UTF8.GetBytes(msgStrContent); Quectel_BC35_G_NBIOT.Parser parser = new Quectel_BC35_G_NBIOT.Parser(); var actual = parser.Deserialize(raw.ToArray()) as GenericResponse; Assert.AreEqual(true, actual != null); Assert.AreEqual(true, actual.State.HasValue); Assert.AreEqual(true, actual.State == GenericResponse.ResponseState.CME_ERROR); Assert.AreEqual(true, actual.CME_ERROR_CODE.HasValue); Assert.AreEqual(true, actual.CME_ERROR_CODE == 1123123); Assert.AreEqual(true, actual.StringBody == msgStrContent); } [TestMethod] public void DisplayProductIdentificationInformationCommandResponseTestMethod6() { var msgStrContent = MessageCutter.CRLF + "Quectel" + MessageCutter.CRLF + "123" + MessageCutter.CRLF + "Revision:789" + MessageCutter.CRLF + MessageCutter.CRLF + "+CME ERROR:" + MessageCutter.CRLF; var raw = Encoding.UTF8.GetBytes(msgStrContent); Quectel_BC35_G_NBIOT.Parser parser = new Quectel_BC35_G_NBIOT.Parser(); var actual = parser.Deserialize(raw.ToArray()) as GenericResponse; Assert.AreEqual(true, actual != null); Assert.AreEqual(true, actual.State.HasValue); Assert.AreEqual(true, actual.State == GenericResponse.ResponseState.CME_ERROR); Assert.AreEqual(true, !actual.CME_ERROR_CODE.HasValue); Assert.AreEqual(true, actual.StringBody == msgStrContent); } #endregion #region SetCommandEchoModeCommand [TestMethod] public void SetCommandEchoModeCommandTestMethod1() { var command = new SetCommandEchoModeCommand(true); Quectel_BC35_G_NBIOT.Parser parser = new Quectel_BC35_G_NBIOT.Parser(); var actual = parser.Serialize(command); var expect = Encoding.UTF8.GetBytes("ATE1") .Concat(new byte[] { MessageCutter.CR, MessageCutter.LF }); Assert.AreEqual(true, ValueEquals(actual, expect)); } [TestMethod] public void SetCommandEchoModeCommandTestMethod2() { var command = new SetCommandEchoModeCommand(false); Quectel_BC35_G_NBIOT.Parser parser = new Quectel_BC35_G_NBIOT.Parser(); var actual = parser.Serialize(command); var expect = Encoding.UTF8.GetBytes("ATE0") .Concat(new byte[] { MessageCutter.CR, MessageCutter.LF }); Assert.AreEqual(true, ValueEquals(actual, expect)); } [TestMethod] public void SetCommandEchoModeCommandResponseTestMethod1() { var msgStrContent = "OK" + MessageCutter.CRLF; var raw = Encoding.UTF8.GetBytes(msgStrContent); Quectel_BC35_G_NBIOT.Parser parser = new Quectel_BC35_G_NBIOT.Parser(); var actual = parser.Deserialize(raw.ToArray()) as GenericResponse; Assert.AreEqual(true, actual != null); Assert.AreEqual(true, actual.State.HasValue); Assert.AreEqual(true, actual.State == GenericResponse.ResponseState.OK); Assert.AreEqual(true, actual.StringBody == msgStrContent); } [TestMethod] public void SetCommandEchoModeCommandResponseTestMethod2() { var msgStrContent = "ERROR" + MessageCutter.CRLF; var raw = Encoding.UTF8.GetBytes(msgStrContent); Quectel_BC35_G_NBIOT.Parser parser = new Quectel_BC35_G_NBIOT.Parser(); var actual = parser.Deserialize(raw.ToArray()) as GenericResponse; Assert.AreEqual(true, actual != null); Assert.AreEqual(true, actual.State.HasValue); Assert.AreEqual(true, actual.State == GenericResponse.ResponseState.ERROR); Assert.AreEqual(true, actual.StringBody == msgStrContent); } #endregion } }