/// <summary>Execute cell comparisons for a data row</summary> /// <param name="row">the index of the row to be compared</param> /// <returns>the list of cell comparisons that didn't pass (empty list if all passed)</returns> private List <CellComparison> RowErrors(int row) { var currentRow = row < ExpectedTable.RowCount ? ExpectedTable.DataCell(row, 0) : ActualTable.DataCell(row, 0); var result = new List <CellComparison>(); var maxColumns = Math.Max(ExpectedTable.Row(row).Length, ActualTable.Row(row).Length); for (var column = 0; column < maxColumns; column++) { var currentColumn = ExpectedTable.Header(column); var expectedValue = ExpectedTable.DataCell(row, column); var actualValue = ActualTable.DataCell(row, column); // reset tolerance range to force recalculating per comparison _tolerance.DataRange = null; var comparison = new CellComparison( row, currentRow, column, currentColumn, expectedValue, actualValue, _tolerance ); if (!comparison.Cell.IsOk()) { result.Add(comparison); } } return(result); }
private static Collection <object> QueryRow(CellComparison row) => new Collection <object> { new Collection <object> { CellCaption, CellReference(row.Row, row.Column) }, new Collection <object> { RowNoCaption, RowReference(row.Row) }, new Collection <object> { RowNameCaption, row.RowName }, new Collection <object> { ColumnNoCaption, ColumnReference(row.Column) }, new Collection <object> { ColumnNameCaption, row.ColumnName }, new Collection <object> { ValueCaption, row.Cell.ValueMessage }, new Collection <object> { DeltaCaption, row.Cell.DeltaMessage }, new Collection <object> { DeltaPercentageCaption, row.Cell.DeltaPercentageMessage }, new Collection <object> { IssueCaption, row.Cell.Outcome.ToString() } };
public void CellComparisonTest1() { var tolerance = Tolerance.Parse("1%"); var comparison = new CellComparison(1, "Row", 2, "Column", "1.0", "1.009", tolerance); Assert.AreEqual(1, comparison.Row); Assert.AreEqual("Row", comparison.RowName); Assert.AreEqual(2, comparison.Column); Assert.AreEqual("Column", comparison.ColumnName); Assert.AreEqual("1.009 ~= 1", comparison.Cell.ValueMessage); Assert.AreEqual("0.009", comparison.Cell.DeltaMessage); Assert.AreEqual("0.9 %", comparison.Cell.DeltaPercentageMessage); Assert.AreEqual("pass:0.009", comparison.Cell.TableResult(comparison.Cell.DeltaMessage)); }
/// <summary>Execute cell comparison for the header row</summary> /// <returns>the list of cell comparisons that didn't pass (empty list if all passed)</returns> private List <CellComparison> HeaderErrors() { const int headerRowNo = -1; var maxColumns = Math.Max(ExpectedTable.ColumnCount, ActualTable.ColumnCount); var result = new List <CellComparison>(); var rowName = ExpectedTable.Header(0); for (var column = 0; column < maxColumns; column++) { var columnName = ExpectedTable.Header(column); var comparison = new CellComparison( headerRowNo, rowName, column, columnName, columnName, ActualTable.Header(column), _tolerance ); if (!comparison.Cell.IsOk()) { result.Add(comparison); } } return(result); }
private SortedDictionary <string, CellComparison> GetAllColumns(DataTable firstDataTable, DataTable secondDataTable) { var allColumnDictionary = new SortedDictionary <string, CellComparison>(); if (firstDataTable != null) { foreach (var dataColumn in firstDataTable.Columns.Cast <DataColumn>()) { CellComparison columnComparisonDetail = new CellComparison(); columnComparisonDetail.IsColumnAvailableInFirstDatabase = true; columnComparisonDetail.ColumnName = dataColumn.ColumnName.ToUpper(); columnComparisonDetail.DataType = dataColumn.DataType; allColumnDictionary.Add(dataColumn.ColumnName.ToUpper(), columnComparisonDetail); } } if (secondDataTable != null) { foreach (var dataColumn in secondDataTable.Columns.Cast <DataColumn>()) { CellComparison columnComparisonDetail = null; if (allColumnDictionary.TryGetValue(dataColumn.ColumnName.ToUpper(), out columnComparisonDetail)) { columnComparisonDetail.IsColumnAvailableInSecondDatabase = true; } else { columnComparisonDetail = new CellComparison(); columnComparisonDetail.FirstDatabaseColumnValue = "--NA--"; columnComparisonDetail.IsColumnAvailableInFirstDatabase = false; columnComparisonDetail.IsColumnAvailableInSecondDatabase = true; columnComparisonDetail.ColumnName = dataColumn.ColumnName.ToUpper(); columnComparisonDetail.DataType = dataColumn.DataType; allColumnDictionary.Add(dataColumn.ColumnName.ToUpper(), columnComparisonDetail); } } } return(allColumnDictionary); }