public void Check_Glo_Excluded_On_Pure_Glo_File()
        {
            var obsFilter = new ObservationFilter(null, null, SatelliteSystem.Glo, null);

            var parser = new RinexObsWithFilter("pure_glo.16o", ParseType.StoreData, obsFilter);

            parser.Parse();

            Assert.IsTrue(parser.RinexType == RinexType.Obs);
            Assert.IsTrue(parser.ObsHeader.ObsHeaderData.SatelliteSystem == SatelliteSystem.Glo);
            Assert.IsTrue(parser.ObsHeader.ObsHeaderData.GnssTimeSystem == GnssTimeSystem.Glo);

            var headerMetadata = parser.ObsHeader.ObsHeaderData;

            Assert.IsTrue(headerMetadata.ObsMetaData.ContainsKey(SatelliteSystem.Glo));

            var observedGpsSatellites = parser.GetObservedSatellites();

            Assert.IsTrue(observedGpsSatellites.ContainsKey(SatelliteSystem.Glo),
                          "!observedGpsSatellites.ContainsKey(SatelliteSystem.Glo)");
            Assert.IsTrue(!observedGpsSatellites[SatelliteSystem.Glo].Any(),
                          "!observedGpsSatellites[SatelliteSystem.Glo].Any()");

            var observedGpsSatellites2 = parser.GetSatellitesObservations <GloSatellite>();

            Assert.IsTrue(observedGpsSatellites2.Count == 0, "observedGpsSatellites2.Count == 0");
        }
        public void Check_Invalid_Filter_No_Exception()
        {
            var start = new DateTime(2016, 3, 28, 0, 32, 0);
            var end   = new DateTime(2016, 3, 28, 0, 35, 30);


            var obsFilter = new ObservationFilter(start, end, SatelliteSystem.Qzss | SatelliteSystem.Sbas,
                                                  new Dictionary <SatelliteSystem, int[]>
            {
                { SatelliteSystem.Gal, new[] { (int)GpsSatellite.G05, (int)GpsSatellite.G15 } },
            });

            var parser = new RinexObsWithFilter("valid_mixed.16o", ParseType.StoreData, obsFilter);

            parser.Parse();

            Assert.IsTrue(parser.RinexType == RinexType.Obs);
            Assert.IsTrue(parser.ObsHeader.ObsHeaderData.SatelliteSystem == SatelliteSystem.Mixed);
            Assert.IsTrue(parser.ObsHeader.ObsHeaderData.GnssTimeSystem == GnssTimeSystem.Gps);

            Assert.IsTrue(parser.ObservationRecords.Count == 8, "Temporal test");

            var observedGpsSatellites = parser.GetObservedSatellites();

            Assert.IsTrue(
                !observedGpsSatellites[SatelliteSystem.Sbas].Any() && !observedGpsSatellites[SatelliteSystem.Qzss].Any(),
                "!observedGpsSatellites[SatelliteSystem.Sbas].Any() && !observedGpsSatellites[SatelliteSystem.Qzss].Any()");

            Assert.IsTrue(observedGpsSatellites.ContainsKey(SatelliteSystem.Gal),
                          "!observedGpsSatellites.ContainsKey(SatelliteSystem.Glo)");
            CollectionAssert.IsSubsetOf(new[] { (int)GalSatellite.E12 },
                                        observedGpsSatellites[SatelliteSystem.Gal].ToArray(), "gal IsNotSubsetOf");
        }
        public void Check_Temporal_Filter()
        {
            var start = new DateTime(2016, 3, 28, 0, 32, 0);
            var end   = new DateTime(2016, 3, 28, 0, 35, 30);

            var obsFilter = new ObservationFilter(start, end, null, null);
            var parser    = new RinexObsWithFilter("valid_mixed.16o", ParseType.StoreData, obsFilter);

            parser.Parse();

            Assert.IsTrue(parser.RinexType == RinexType.Obs);
            Assert.IsTrue(parser.ObsHeader.ObsHeaderData.SatelliteSystem == SatelliteSystem.Mixed);
            Assert.IsTrue(parser.ObsHeader.ObsHeaderData.GnssTimeSystem == GnssTimeSystem.Gps);

            Assert.IsTrue(parser.ObservationRecords.Count == 8);

            var firstObs  = parser.ObservationRecords.First();
            var appxStart = firstObs.Key.ApproximateDateTime;

            Assert.AreEqual(start, appxStart);

            var lastObs = parser.ObservationRecords.Last();
            var appxEnd = lastObs.Key.ApproximateDateTime;

            Assert.AreEqual(end, appxEnd);
        }
        public void Check_Excluded_Glo_R01_R11_On_Pure_Glo_File()
        {
            var obsFilter = new ObservationFilter(null, null, null, new Dictionary <SatelliteSystem, int[]>
            {
                { SatelliteSystem.Glo, new[] { (int)GloSatellite.R01, (int)GloSatellite.R11 } }
            });

            var parser = new RinexObsWithFilter("pure_glo.16o", ParseType.StoreData, obsFilter);

            parser.Parse();

            Assert.IsTrue(parser.RinexType == RinexType.Obs);
            Assert.IsTrue(parser.ObsHeader.ObsHeaderData.SatelliteSystem == SatelliteSystem.Glo);
            Assert.IsTrue(parser.ObsHeader.ObsHeaderData.GnssTimeSystem == GnssTimeSystem.Glo);

            Assert.IsTrue(parser.ObservationRecords.Count == 19, "parser.ObservationRecords.Count == 19");

            var headerMetadata = parser.ObsHeader.ObsHeaderData;

            Assert.IsTrue(headerMetadata.ObsMetaData.ContainsKey(SatelliteSystem.Glo));

            var observedGpsSatellites = parser.GetObservedSatellites();

            Assert.IsTrue(observedGpsSatellites.ContainsKey(SatelliteSystem.Glo),
                          "!observedGpsSatellites.ContainsKey(SatelliteSystem.Glo)");
            CollectionAssert.IsNotSubsetOf(new[] { (int)GloSatellite.R01, (int)GloSatellite.R11 },
                                           observedGpsSatellites[SatelliteSystem.Glo].ToArray(), "glo IsNotSubsetOf");
        }