public void LiveSourceForCurrentDate()
        {
            var reader = new ConstituentsUniverseData();

            var currentTime = DateTime.UtcNow;
            var source      = reader.GetSource(_config, currentTime, true);

            // From Tue to Sat will find files from Mon to Friday
            Assert.IsTrue(source.Source.Contains($"{currentTime.AddDays(-1):yyyyMMdd}"));
        }
        public void LiveDataTimeForCurrentDate()
        {
            var reader = new ConstituentsUniverseData();

            var currentTime = DateTime.UtcNow;

            var dataPoint = reader.Reader(_config, "NONE,NONE 0", currentTime, true);

            Assert.AreEqual(dataPoint.Time, currentTime.AddDays(-1));
            // emitted right away
            Assert.AreEqual(dataPoint.EndTime, currentTime);
        }
        public void BacktestDataTimeForEachTradableDate()
        {
            var reader = new ConstituentsUniverseData();

            var tradableDays = Time.EachTradeableDayInTimeZone(_exchangeHours,
                                                               new DateTime(2019, 06, 9), // sunday
                                                               new DateTime(2019, 06, 16),
                                                               _config.DataTimeZone,
                                                               _config.ExtendedMarketHours);

            foreach (var tradableDay in tradableDays)
            {
                var dataPoint = reader.Reader(_config, "NONE,NONE 0", tradableDay, false);
                Assert.AreEqual(dataPoint.Time, tradableDay);
                // emitted tomorrow
                Assert.AreEqual(dataPoint.EndTime, tradableDay.AddDays(1));
            }
        }
        public void BacktestSourceForEachTradableDate()
        {
            var reader = new ConstituentsUniverseData();

            var tradableDays = Time.EachTradeableDayInTimeZone(_exchangeHours,
                                                               new DateTime(2019, 06, 9), // sunday
                                                               new DateTime(2019, 06, 16),
                                                               _config.DataTimeZone,
                                                               _config.ExtendedMarketHours);

            foreach (var tradableDay in tradableDays)
            {
                if (tradableDay.DayOfWeek == DayOfWeek.Saturday ||
                    tradableDay.DayOfWeek == DayOfWeek.Sunday)
                {
                    Assert.Fail($"Unexpected tradable DayOfWeek {tradableDay.DayOfWeek}");
                }

                var source = reader.GetSource(_config, tradableDay, false);
                // Mon to Friday
                Assert.IsTrue(source.Source.Contains($"{tradableDay:yyyyMMdd}"));
            }
        }