public void ModeSTranslator_Translate_Decodes_Packets_Correctly() { for(var conversionMethod = 0;conversionMethod < 2;++conversionMethod) { var worksheet = new ExcelWorksheetData(TestContext); var expectedValue = new SpreadsheetFieldValue(worksheet, 7); var bits = worksheet.String("Packet"); var bytes = TestUtilities.ConvertBitStringToBytes(bits); var reply = conversionMethod == 0 ? _Translator.Translate(bytes.ToArray()) : _Translator.Translate(bytes.ToArray(), 0); foreach(var replyProperty in reply.GetType().GetProperties()) { switch(replyProperty.Name) { case "ACASMessage": Assert.IsTrue(TestUtilities.SequenceEqual(expectedValue.GetBytes("MV"), reply.ACASMessage)); break; case "Altitude": Assert.AreEqual(expectedValue.GetNInt("AC"), reply.Altitude); break; case "AltitudeIsMetric": Assert.AreEqual(expectedValue.GetNBool("AC:M"), reply.AltitudeIsMetric); break; case "ApplicationField": Assert.AreEqual(expectedValue.GetEnum<ApplicationField>("AF"), reply.ApplicationField); break; case "Capability": Assert.AreEqual(expectedValue.GetEnum<Capability>("CA"), reply.Capability); break; case "CommBMessage": Assert.IsTrue(TestUtilities.SequenceEqual(expectedValue.GetBytes("MB"), reply.CommBMessage)); break; case "CommDMessage": Assert.IsTrue(TestUtilities.SequenceEqual(expectedValue.GetBytes("MD"), reply.CommDMessage)); break; case "ControlField": Assert.AreEqual(expectedValue.GetEnum<ControlField>("CF"), reply.ControlField); break; case "CrossLinkCapability": Assert.AreEqual(expectedValue.GetNBool("CC"), reply.CrossLinkCapability); break; case "DownlinkFormat": Assert.AreEqual(worksheet.ParseEnum<DownlinkFormat>("DownlinkFormat"), reply.DownlinkFormat); break; case "DownlinkRequest": Assert.AreEqual(expectedValue.GetNByte("DR", true), reply.DownlinkRequest); break; case "DSegmentNumber": Assert.AreEqual(expectedValue.GetNByte("ND", true), reply.DSegmentNumber); break; case "ElmControl": Assert.AreEqual(expectedValue.GetEnum<ElmControl>("KE"), reply.ElmControl); break; case "ExtendedSquitterMessage": Assert.IsTrue(TestUtilities.SequenceEqual(expectedValue.GetBytes("ME"), reply.ExtendedSquitterMessage)); break; case "ExtendedSquitterSupplementaryMessage": Assert.IsTrue(TestUtilities.SequenceEqual(expectedValue.GetBytes("MEX"), reply.ExtendedSquitterSupplementaryMessage)); break; case "FlightStatus": Assert.AreEqual(expectedValue.GetEnum<FlightStatus>("FS"), reply.FlightStatus); break; case "FormattedIcao24": Assert.AreEqual(worksheet.String("Icao24"), reply.FormattedIcao24); break; case "Icao24": Assert.AreEqual(Convert.ToInt32(worksheet.String("Icao24"), 16), reply.Icao24); break; case "Identity": Assert.AreEqual(expectedValue.GetNShort("ID"), reply.Identity); break; case "NonIcao24Address": Assert.AreEqual(expectedValue.GetNInt("AAX", true), reply.NonIcao24Address); break; case "ParityInterrogatorIdentifier": Assert.AreEqual(expectedValue.GetNInt("PI", true), reply.ParityInterrogatorIdentifier); break; case "PossibleCallsign": Assert.AreEqual(expectedValue.GetString("PC"), reply.PossibleCallsign); break; case "ReplyInformation": Assert.AreEqual(expectedValue.GetNByte("RI", true), reply.ReplyInformation); break; case "SensitivityLevel": Assert.AreEqual(expectedValue.GetNByte("SL", true), reply.SensitivityLevel); break; case "UtilityMessage": Assert.AreEqual(expectedValue.GetNByte("UM", true), reply.UtilityMessage); break; case "VerticalStatus": Assert.AreEqual(expectedValue.GetEnum<VerticalStatus>("VS"), reply.VerticalStatus); break; default: throw new NotImplementedException(); } } } }
public void ModeSTranslator_Translate_Decodes_Packets_Correctly() { var worksheet = new ExcelWorksheetData(TestContext); var expectedValue = new SpreadsheetFieldValue(worksheet, 7); var bits = worksheet.String("Packet"); var bytes = TestUtilities.ConvertBitStringToBytes(bits); var reply = _Translator.Translate(bytes.ToArray(), 0, null, false); foreach (var replyProperty in reply.GetType().GetProperties()) { switch (replyProperty.Name) { case "ACASMessage": Assert.IsTrue(TestUtilities.SequenceEqual(expectedValue.GetBytes("MV"), reply.ACASMessage)); break; case "Altitude": Assert.AreEqual(expectedValue.GetNInt("AC"), reply.Altitude); break; case "AltitudeIsMetric": Assert.AreEqual(expectedValue.GetNBool("AC:M"), reply.AltitudeIsMetric); break; case "ApplicationField": Assert.AreEqual(expectedValue.GetEnum <ApplicationField>("AF"), reply.ApplicationField); break; case "Capability": Assert.AreEqual(expectedValue.GetEnum <Capability>("CA"), reply.Capability); break; case "CommBMessage": Assert.IsTrue(TestUtilities.SequenceEqual(expectedValue.GetBytes("MB"), reply.CommBMessage)); break; case "CommDMessage": Assert.IsTrue(TestUtilities.SequenceEqual(expectedValue.GetBytes("MD"), reply.CommDMessage)); break; case "ControlField": Assert.AreEqual(expectedValue.GetEnum <ControlField>("CF"), reply.ControlField); break; case "CrossLinkCapability": Assert.AreEqual(expectedValue.GetNBool("CC"), reply.CrossLinkCapability); break; case "DownlinkFormat": Assert.AreEqual(worksheet.ParseEnum <DownlinkFormat>("DownlinkFormat"), reply.DownlinkFormat); break; case "DownlinkRequest": Assert.AreEqual(expectedValue.GetNByte("DR", true), reply.DownlinkRequest); break; case "DSegmentNumber": Assert.AreEqual(expectedValue.GetNByte("ND", true), reply.DSegmentNumber); break; case "ElmControl": Assert.AreEqual(expectedValue.GetEnum <ElmControl>("KE"), reply.ElmControl); break; case "ExtendedSquitterMessage": Assert.IsTrue(TestUtilities.SequenceEqual(expectedValue.GetBytes("ME"), reply.ExtendedSquitterMessage)); break; case "ExtendedSquitterSupplementaryMessage": Assert.IsTrue(TestUtilities.SequenceEqual(expectedValue.GetBytes("MEX"), reply.ExtendedSquitterSupplementaryMessage)); break; case "FlightStatus": Assert.AreEqual(expectedValue.GetEnum <FlightStatus>("FS"), reply.FlightStatus); break; case "FormattedIcao24": Assert.AreEqual(worksheet.String("Icao24"), reply.FormattedIcao24); break; case "Icao24": Assert.AreEqual(Convert.ToInt32(worksheet.String("Icao24"), 16), reply.Icao24); break; case "Identity": Assert.AreEqual(expectedValue.GetNShort("ID"), reply.Identity); break; case "IsMlat": break; case "NonIcao24Address": Assert.AreEqual(expectedValue.GetNInt("AAX", true), reply.NonIcao24Address); break; case "ParityInterrogatorIdentifier": Assert.AreEqual(expectedValue.GetNInt("PI", true), reply.ParityInterrogatorIdentifier); break; case "PossibleCallsign": Assert.AreEqual(expectedValue.GetString("PC"), reply.PossibleCallsign); break; case "ReplyInformation": Assert.AreEqual(expectedValue.GetNByte("RI", true), reply.ReplyInformation); break; case "SensitivityLevel": Assert.AreEqual(expectedValue.GetNByte("SL", true), reply.SensitivityLevel); break; case "UtilityMessage": Assert.AreEqual(expectedValue.GetNByte("UM", true), reply.UtilityMessage); break; case "VerticalStatus": Assert.AreEqual(expectedValue.GetEnum <VerticalStatus>("VS"), reply.VerticalStatus); break; case "SignalLevel": break; default: throw new NotImplementedException(); } } }