public void GetSystemStatusViewModel_ParameterIsNotInitialized_ResultIsUninitializedViewModel()
        {
            // Arrage
            var sytemInformation = new SystemInformation();

            // Act
            var result = this.systemStatusOrchestrator.GetSystemStatusViewModel(sytemInformation);

            // Assert
            var emptyViewModel = new SystemStatusViewModel();
            Assert.AreEqual(emptyViewModel.MachineName, result.MachineName);
            Assert.AreEqual(emptyViewModel.Timestamp, result.Timestamp);
            Assert.AreEqual(emptyViewModel.DataPoints, result.DataPoints);
        }
        public SystemStatusViewModel GetSystemStatusViewModel(SystemInformation systemInformation)
        {
            if (systemInformation == null)
            {
                throw new ArgumentNullException("systemInformation");
            }

            var systemStatusViewModel = new SystemStatusViewModel { MachineName = systemInformation.MachineName, Timestamp = systemInformation.Timestamp, };

            // add data series
            var dataSerieses = new List<SystemStatusPointViewModel>();

            // systerm performance
            if (systemInformation.SystemPerformance != null)
            {
                // Processor status data series
                if (systemInformation.SystemPerformance.ProcessorStatus != null)
                {
                    dataSerieses.Add(this.processorStatusOrchestrator.GetProcessorUtilizationInPercent(systemInformation.SystemPerformance.ProcessorStatus));
                }

                // Memory status data series
                if (systemInformation.SystemPerformance.MemoryStatus != null)
                {
                    dataSerieses.Add(this.memoryStatusOrchestrator.GetMemoryUtilizationInPercent(systemInformation.SystemPerformance.MemoryStatus));
                }

                // Storage status data series
                if (systemInformation.SystemPerformance.StorageStatus != null)
                {
                    dataSerieses.AddRange(this.storageStatusOrchestrator.GetStorageUtilizationInPercent(systemInformation.SystemPerformance.StorageStatus));
                }
            }

            systemStatusViewModel.DataPoints = dataSerieses.ToArray();

            return systemStatusViewModel;
        }