コード例 #1
0
        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();
                    }
                }
            }
        }
コード例 #2
0
        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();
                }
            }
        }