public void TestClear()
        {
            var collection = new LogSourceListenerCollection(new Mock <ILogSource>().Object);

            var listener      = new Mock <ILogSourceListener>();
            var modifications = new List <LogSourceModification>();

            listener.Setup(x => x.OnLogFileModified(It.IsAny <ILogSource>(), It.IsAny <LogSourceModification>()))
            .Callback((ILogSource file, LogSourceModification y) => modifications.Add(y));

            collection.AddListener(listener.Object, TimeSpan.FromHours(1), 1000);
            collection.OnRead(1);
            collection.Flush();
            modifications.Should().Equal(new object[]
            {
                LogSourceModification.Reset(),
                LogSourceModification.Appended(0, 1),
            });

            collection.Clear();
            modifications.Clear();

            collection.OnRead(2);
            collection.Flush();
            modifications.Should()
            .BeEmpty("because the collection should have removed all listeners and thus we may not have been notified anymore");
        }
        public void TestFlush1()
        {
            var collection = new LogSourceListenerCollection(new Mock <ILogSource>().Object);

            var listener      = new Mock <ILogSourceListener>();
            var modifications = new List <LogSourceModification>();

            listener.Setup(x => x.OnLogFileModified(It.IsAny <ILogSource>(), It.IsAny <LogSourceModification>()))
            .Callback((ILogSource file, LogSourceModification y) => modifications.Add(y));

            collection.AddListener(listener.Object, TimeSpan.FromHours(1), 1000);
            collection.OnRead(1);

            modifications.Should().Equal(new object[]
            {
                LogSourceModification.Reset()
            });

            collection.Flush();
            modifications.Should().Equal(new object[]
            {
                LogSourceModification.Reset(),
                LogSourceModification.Appended(0, 1)
            }, "Because Flush() should force calling the OnLogFileModified method");
        }