예제 #1
0
        public void TestMerge6()
        {
            var source0 = new InMemoryLogSource();
            var source1 = new InMemoryLogSource();

            var merged        = new MergedLogSource(_taskScheduler, TimeSpan.Zero, source0, source1);
            var entries       = Listen(merged);
            var modifications = ListenToChanges(merged, 1);

            merged.OnLogFileModified(source0, LogSourceModification.Reset());
            merged.OnLogFileModified(source0, LogSourceModification.Reset());
            merged.OnLogFileModified(source0, LogSourceModification.Reset());
            merged.OnLogFileModified(source0, LogSourceModification.Reset());
            merged.OnLogFileModified(source0, LogSourceModification.Reset());
            merged.OnLogFileModified(source0, LogSourceModification.Reset());
            merged.OnLogFileModified(source1, LogSourceModification.Reset());

            DateTime timestamp = DateTime.Now;

            source1.AddEntry("Hello World", LevelFlags.Info, timestamp);

            _taskScheduler.RunOnce();
            merged.GetProperty(Core.Properties.PercentageProcessed).Should().Be(Percentage.HundredPercent);

            entries.Count.Should().Be(1);
            entries[0].Index.Should().Be(0);
            entries[0].LogEntryIndex.Should().Be(0);
            entries[0].GetValue(Core.Columns.SourceId).Should().Be(new LogEntrySourceId(1));
            entries[0].RawContent.Should().Be("Hello World");
            entries[0].LogLevel.Should().Be(LevelFlags.Info);
            entries[0].Timestamp.Should().Be(timestamp);

            int count = modifications.Count;

            modifications.ElementAt(count - 2).Should().Be(LogSourceModification.Reset());
            modifications.ElementAt(count - 1).Should().Be(LogSourceModification.Appended(0, 1));
        }