Пример #1
0
        /// <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);
        }
Пример #2
0
 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()
     }
 };
Пример #3
0
        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));
        }
Пример #4
0
        /// <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);
        }
Пример #5
0
        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);
        }