public async void ArchivesTheLogFileEveryHourOnTheHourWhenRolloverPeriodIsHourly()
        {
            RollingFileLogProvider logProvider = new TestingRollingFileLogProvider(
                _logFilePath,
                RolloverPeriod.Hourly,
                new TimeSet(new DateTime(2014, 10, 14, 11, 30, 0), new DateTime(2014, 10, 15, 13, 15, 0)),  // A) Different date, different hour.
                new TimeSet(new DateTime(2014, 10, 14, 11, 30, 0), new DateTime(2014, 10, 15, 11, 45, 0)),  // B) Different date, same hour.
                new TimeSet(new DateTime(2014, 10, 15, 11, 45, 0), new DateTime(2014, 10, 15, 13, 30, 0)),  // C) Same date, different hour.
                new TimeSet(new DateTime(2014, 10, 15, 13, 15, 0), new DateTime(2014, 10, 15, 13, 30, 0))); // D) Same date, same hour.

            Assert.That(GetFileCount(), Is.EqualTo(0));

            await logProvider.WriteAsync(GetLogEntry()); // New file, doesn't consume TimeSet
            Assert.That(GetFileCount(), Is.EqualTo(1));

            await logProvider.WriteAsync(GetLogEntry()); // A) Archive: Different date, different hour.
            Assert.That(GetFileCount(), Is.EqualTo(2));

            await logProvider.WriteAsync(GetLogEntry()); // B) Archive: Different date, same hour.
            Assert.That(GetFileCount(), Is.EqualTo(3));

            await logProvider.WriteAsync(GetLogEntry()); // C) Archive: Same date, different hour.
            Assert.That(GetFileCount(), Is.EqualTo(4));

            await logProvider.WriteAsync(GetLogEntry()); // D) No Archive: Same date, same hour.
            Assert.That(GetFileCount(), Is.EqualTo(4));
        }
        public async Task WriteAsyncArchivesTheLogFileEveryDayAtMidnightWhenRolloverPeriodIsDaily()
        {
            RollingFileLogProvider rollingFileLogProvider = new TestingRollingFileLogProvider(
                _logFilePath,
                RolloverPeriod.Daily,
                new TimeSet(new DateTime(2014, 10, 14, 11, 30, 0), new DateTime(2014, 10, 15, 13, 15, 0)),  // A) Different date, different hour.
                new TimeSet(new DateTime(2014, 10, 14, 11, 30, 0), new DateTime(2014, 10, 15, 11, 45, 0)),  // B) Different date, same hour.
                new TimeSet(new DateTime(2014, 10, 15, 11, 45, 0), new DateTime(2014, 10, 15, 13, 30, 0)),  // C) Same date, different hour.
                new TimeSet(new DateTime(2014, 10, 15, 13, 15, 0), new DateTime(2014, 10, 15, 13, 30, 0))); // D) Same date, same hour.

            GetFileCount().Should().Be(0);

            await rollingFileLogProvider.WriteAsync(GetLogEntry()); // New file, doesn't consume TimeSet

            GetFileCount().Should().Be(1);

            await rollingFileLogProvider.WriteAsync(GetLogEntry()); // A) Archive: Different date, different hour.

            GetFileCount().Should().Be(2);

            await rollingFileLogProvider.WriteAsync(GetLogEntry()); // B) Archive: Different date, same hour.

            GetFileCount().Should().Be(3);

            await rollingFileLogProvider.WriteAsync(GetLogEntry()); // C) No Archive: Same date, different hour.

            GetFileCount().Should().Be(3);

            await rollingFileLogProvider.WriteAsync(GetLogEntry()); // D) No Archive: Same date, same hour.

            GetFileCount().Should().Be(3);
        }