Пример #1
0
        static void Main(string[] args)
        {
            TafDecoder.SetStrictParsing(true);

            var options = new Options();

            if (Parser.Default.ParseArguments(args, options))
            {
                var decodedTaf = TafDecoder.ParseWithMode(options.Taf);
                Display(decodedTaf);
            }
        }
 public void Setup()
 {
     DecodedTafs = TestTafSource.Select(taf => TafDecoder.ParseWithMode(taf)).ToList();
 }
    public void TestParseSecond()
    {
        var rawTaf     = "TAF TAF LIRU 032244Z 0318/0406 23010KT P6SM +TSRA FG BKN020CB TX05/0318Z TNM03/0405Z";
        var decoderTaf = TafDecoder.ParseWithMode(rawTaf);

        Assert.True(decoderTaf.IsValid);
        Assert.AreEqual("TAF TAF LIRU 032244Z 0318/0406 23010KT P6SM +TSRA FG BKN020CB TX05/0318Z TNM03/0405Z", decoderTaf.RawTaf);
        Assert.AreEqual(TafType.TAF, decoderTaf.Type);
        Assert.AreEqual("LIRU", decoderTaf.Icao);
        Assert.AreEqual(3, decoderTaf.Day);
        Assert.AreEqual("22:44 UTC", decoderTaf.Time);

        var forecastPeriod = decoderTaf.ForecastPeriod;

        Assert.AreEqual(3, forecastPeriod.FromDay);
        Assert.AreEqual(18, forecastPeriod.FromHour);
        Assert.AreEqual(4, forecastPeriod.ToDay);
        Assert.AreEqual(6, forecastPeriod.ToHour);

        var surfaceWind = decoderTaf.SurfaceWind;

        Assert.False(surfaceWind.VariableDirection);
        Assert.AreEqual(230, surfaceWind.MeanDirection.ActualValue);
        Assert.AreEqual(Value.Unit.Degree, surfaceWind.MeanDirection.ActualUnit);
        Assert.Null(surfaceWind.DirectionVariations);
        Assert.AreEqual(10, surfaceWind.MeanSpeed.ActualValue);
        Assert.AreEqual(Value.Unit.Knot, surfaceWind.MeanSpeed.ActualUnit);
        Assert.Null(surfaceWind.SpeedVariations);

        var visibility = decoderTaf.Visibility;

        Assert.AreEqual(6, visibility.ActualVisibility.ActualValue);
        Assert.AreEqual(Value.Unit.StatuteMile, visibility.ActualVisibility.ActualUnit);
        Assert.True(visibility.Greater);

        var weatherPhenomenons = decoderTaf.WeatherPhenomenons;

        Assert.AreEqual("+", weatherPhenomenons[0].IntensityProximity);
        Assert.AreEqual("TS", weatherPhenomenons[0].Descriptor);
        var phenomena = weatherPhenomenons[0].Phenomena;

        Assert.AreEqual("RA", phenomena[0]);
        phenomena = weatherPhenomenons[1].Phenomena;
        Assert.AreEqual("FG", phenomena[0]);

        var cloud = decoderTaf.Clouds[0];

        Assert.AreEqual(CloudLayer.CloudAmount.BKN, cloud.Amount);
        Assert.AreEqual(2000, cloud.BaseHeight.ActualValue);
        Assert.AreEqual(Value.Unit.Feet, cloud.BaseHeight.ActualUnit);
        Assert.AreEqual(CloudLayer.CloudType.CB, cloud.Type);

        var minimumTemperature = decoderTaf.MinimumTemperature;

        Assert.AreEqual(-3, minimumTemperature.TemperatureValue.ActualValue);
        Assert.AreEqual(Value.Unit.DegreeCelsius, minimumTemperature.TemperatureValue.ActualUnit);
        Assert.AreEqual(4, minimumTemperature.Day);
        Assert.AreEqual(5, minimumTemperature.Hour);

        var maximumTemperature = decoderTaf.MaximumTemperature;

        Assert.AreEqual(5, maximumTemperature.TemperatureValue.ActualValue);
        Assert.AreEqual(Value.Unit.DegreeCelsius, maximumTemperature.TemperatureValue.ActualUnit);
        Assert.AreEqual(3, maximumTemperature.Day);
        Assert.AreEqual(18, maximumTemperature.Hour);
    }