static void DoTest(TestCase test, string filePath) { List<DataValue> expectedValues = GetExpectedResults(test.ExpectedResultsPath, test.TestId); ArchiveItem item = new ArchiveItem(test.DataPath, Assembly.GetExecutingAssembly(), test.DataPath); DataFileReader reader = new DataFileReader(); reader.LoadConfiguration(null, item); reader.LoadHistoryData(null, item); AggregateConfiguration configuration = new AggregateConfiguration(); configuration.PercentDataBad = 100; configuration.PercentDataGood = 100; configuration.TreatUncertainAsBad = test.TreatUncertainAsBad; configuration.UseSlopedExtrapolation = test.UseSlopedExtrapolation; configuration.UseServerCapabilitiesDefaults = false; DateTime startTime = DateTime.UtcNow; startTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, startTime.Hour, 0, 0, DateTimeKind.Utc); AggregateCalculator calculator = new AggregateCalculator( test.AggregateId, startTime.AddSeconds(0), startTime.AddSeconds(100), 5000, test.Stepped, configuration); StringBuilder buffer = new StringBuilder(); List<DataValue> values = new List<DataValue>(); foreach (DataRowView row in item.DataSet.Tables[0].DefaultView) { DataValue rawValue = (DataValue)row.Row[2]; if (!calculator.QueueRawValue(rawValue)) { Utils.Trace("Oops!"); continue; } DataValue processedValue = calculator.GetProcessedValue(false); if (processedValue != null) { values.Add(processedValue); } } for (DataValue processedValue = calculator.GetProcessedValue(true); processedValue != null; processedValue = calculator.GetProcessedValue(true)) { values.Add(processedValue); } for (int ii = 0; ii < values.Count && ii < expectedValues.Count; ii++) { if (values[ii].SourceTimestamp != expectedValues[ii].SourceTimestamp) { Utils.Trace("Wrong Status Timestamp"); continue; } if (values[ii].StatusCode != expectedValues[ii].StatusCode) { Utils.Trace("Wrong Status Code"); continue; } if (StatusCode.IsNotBad(values[ii].StatusCode)) { double value1 = Math.Round(Convert.ToDouble(values[ii].Value), 4); double value2 = Math.Round(Convert.ToDouble(expectedValues[ii].Value), 4); if (value1 != value2) { Utils.Trace("Wrong Value"); continue; } } } foreach (DataValue processedValue in values) { buffer.Append(processedValue.SourceTimestamp.ToString("HH:mm:ss")); buffer.Append(", "); buffer.Append(processedValue.WrappedValue); buffer.Append(", "); buffer.Append(new StatusCode(processedValue.StatusCode.CodeBits)); buffer.Append(", "); buffer.Append(processedValue.StatusCode.AggregateBits); buffer.Append("\r\n"); } // write to the file. using (StreamWriter writer = new StreamWriter(filePath)) { writer.Write(buffer.ToString()); } }