private static void AssertChartViewModel <T>(ChartType chartType, ChartAxisType xAxisType, ChartAxisType yAxisType, List <ChartPoint> expectedChartPoints, ChartPointsAssertionDelegate pointsAssertionMethod) where T : Series { // Init var chartAlertProperty = new ChartAlertProperty( "propertyName", "displayName", 1, chartType, xAxisType, yAxisType, expectedChartPoints); // Act var chartPropertyControlViewModel = new ChartPropertyControlViewModel(chartAlertProperty); // Assert Assert.AreEqual("displayName", chartPropertyControlViewModel.Title, "Unexpected chart title"); Assert.IsNotNull(chartPropertyControlViewModel, "View model is expected to be defined"); Assert.IsNotNull(chartPropertyControlViewModel.SeriesCollection[0], "Series is expected to be defined"); T series = chartPropertyControlViewModel.SeriesCollection[0] as T; Assert.IsNotNull(series, $"Series is from type {chartPropertyControlViewModel.SeriesCollection[0].GetType()}, but expected to be from type {typeof(T)}"); List <LiveCharts.ChartPoint> actualDataPoints = series.ChartPoints.ToList(); pointsAssertionMethod(expectedChartPoints, actualDataPoints); FormatterAssertMethod(chartPropertyControlViewModel, xAxisType, yAxisType, expectedChartPoints); }
private static void FormatterAssertMethod(ChartPropertyControlViewModel chartPropertyControlViewModel, ChartAxisType xAxisType, ChartAxisType yAxisType, List <ChartPoint> expectedChartPoints) { // Assert Y axis formatter for (var i = 0; i < expectedChartPoints.Count(); i++) { if (yAxisType == ChartAxisType.Percentage) { Assert.AreEqual( chartPropertyControlViewModel.YAxisFormatter((double)expectedChartPoints[i].Y), PercentageYFormatter((double)expectedChartPoints[i].Y)); } else { Assert.AreEqual( chartPropertyControlViewModel.YAxisFormatter((double)expectedChartPoints[i].Y), NumberFormatter((double)expectedChartPoints[i].Y)); } } // Assert X axis formatter for (var i = 0; i < expectedChartPoints.Count(); i++) { if (xAxisType == ChartAxisType.Number) { Assert.AreEqual( chartPropertyControlViewModel.XAxisFormatter((double)expectedChartPoints[i].X), NumberFormatter((double)expectedChartPoints[i].X)); } else { double xAxisFactor = expectedChartPoints.Count > 1 ? Now.AddDays(1).Ticks - Now.Ticks : Now.Ticks; dateXFormatter = value => new DateTime((long)(value * xAxisFactor)).ToString(CultureInfo.InvariantCulture); Assert.AreEqual( chartPropertyControlViewModel.XAxisFormatter((double)((DateTime)expectedChartPoints[i].X).Ticks / xAxisFactor), dateXFormatter((double)((DateTime)expectedChartPoints[i].X).Ticks / xAxisFactor)); } } }