public void TimeSeriesComparisonGraphSecondOrderResponseTest() { const double zetaExpected = 0.205; const double zetaActual = 0.2; const double omega = 1; const double theta = Math.PI / 2; var timestampBase = DateTime.Today; var minY = double.MaxValue; var maxY = double.MinValue; var expected = new TimeSeries(); var actual = new TimeSeries(); for (double time = 0; time <= 31; time += 0.5) { var timestamp = timestampBase.AddSeconds(time); var expectedValue = TimeSeriesChartTest.SecondOrderResponse(time, zetaExpected, omega, theta); var actualValue = TimeSeriesChartTest.SecondOrderResponse(time, zetaActual, omega, theta); if (actualValue > maxY) { maxY = actualValue; } if (actualValue < minY) { minY = actualValue; } var okValue = time < 12 || time > 16 && time <25 || time> 25.5; actual.AddMeasurement(new Measurement { Timestamp = timestamp, Value = actualValue.To <string>(), IsGood = okValue }); expected.AddMeasurement(new Measurement { Timestamp = timestamp, Value = expectedValue.To <string>(), IsGood = true }); } var parameters = new Dictionary <string, string> { { "Min Value", "0.7" }, { "Max Value", "1.6" }, { "start timestamp", timestampBase.ToRoundTripFormat() }, { "end timestamp", timestampBase.AddSeconds(30).ToRoundTripFormat() } }; var comparison = new TimeSeriesComparison(expected, actual, Tolerance.Parse("1.0")); var result = comparison.Graph(parameters); TimeSeriesChartTest.AssertChartImage(result, SecondOrderResponseLimitedYFile, nameof(TimeSeriesComparisonGraphSecondOrderResponseTest)); parameters.Remove("Min Value"); parameters.Remove("Max Value"); var result2 = new TimeSeriesComparison(expected, actual, Tolerance.Parse("1.0")).Graph(parameters); TimeSeriesChartTest.AssertChartImage(result2, SecondOrderResponseFile, nameof(TimeSeriesComparisonGraphSecondOrderResponseTest)); }