public void Constructor_Normal_ThreadsNotNull()
 {
     var mock = new Mock<IDiagnoseOutputEntry>();
     mock.Setup(x => x.Type).Returns(DiagnoseType.SingleOutput);
     mock.Setup(x => x.Duration).Returns(1);
     mock.Setup(x => x.Gap).Returns(2);
     var processViewModel = new ProcessViewModel(mock.Object, 0);
     processViewModel.Threads.Should().NotBeNull();
 }
        public void ProcessNewDiagnoseOutputEntry_NewEntryWithExistingThreadNumber_AddsNewEntryAndNoNewThread()
        {
            var mock = new Mock<IDiagnoseOutputEntry>();
            mock.Setup(x => x.ThreadNumber).Returns(1234);
            mock.Setup(x => x.Type).Returns(DiagnoseType.SingleOutput);
            mock.Setup(x => x.Duration).Returns(1);
            mock.Setup(x => x.Gap).Returns(2);

            var processViewModel = new ProcessViewModel(mock.Object, 0);
            processViewModel.ProcessNewDiagnoseOutputEntry(mock.Object);

            processViewModel.Threads.Count.Should().Be(1);
            processViewModel.Threads.Should().Contain(x => x.ThreadNumber == 1234);
        }
        public void ProcessNewDiagnoseOutputEntry_NewEntriesDifferentDurations_TotalDurationIsMaximumDuration()
        {
            var mock1 = new Mock<IDiagnoseOutputEntry>();
            mock1.Setup(x => x.ThreadNumber).Returns(1);
            mock1.Setup(x => x.Gap).Returns(2);
            mock1.Setup(x => x.Duration).Returns(3);
            var mock2 = new Mock<IDiagnoseOutputEntry>();
            mock2.Setup(x => x.ThreadNumber).Returns(4);
            mock2.Setup(x => x.Gap).Returns(5);
            mock2.Setup(x => x.Duration).Returns(6);

            var processViewModel = new ProcessViewModel(mock1.Object, 0);
            processViewModel.ProcessNewDiagnoseOutputEntry(mock2.Object);

            processViewModel.TotalDuration.Should().Be(16);
        }
        public void ProcessNewDiagnoseOutputEntry(IDiagnoseOutputEntry diagnoseOutputEntry)
        {
            var process = Processes.SingleOrDefault(x => x.ProcessId == diagnoseOutputEntry.ProcessId);

            if (process == null)
            {
                process = new ProcessViewModel(diagnoseOutputEntry, TotalDuration);
                Processes.Add(process);
                ProcessIsShownChanged(process);
            }
            else
            {
                process.ProcessNewDiagnoseOutputEntry(diagnoseOutputEntry);
            }

            TotalDuration = process.TotalDuration;
            foreach (ProcessViewModel p in Processes)
            {
                p.UpdateTotalDuration(TotalDuration);
            }
        }
        public void ProcessNewDiagnoseOutputEntry(IDiagnoseOutputEntry diagnoseOutputEntry)
        {
            var process = Processes.SingleOrDefault(x => x.ProcessId == diagnoseOutputEntry.ProcessId);

            if (process == null)
            {
                process = new ProcessViewModel(diagnoseOutputEntry, TotalDuration);
                Processes.Add(process);
                ProcessIsShownChanged(process);
            }
            else
            {
                process.ProcessNewDiagnoseOutputEntry(diagnoseOutputEntry);
            }

            TotalDuration = process.TotalDuration;
            foreach (ProcessViewModel p in Processes)
            {
                p.UpdateTotalDuration(TotalDuration);
            }
        }