private void HandleSameRow( IDataReader expectedReader, IDataReader actualsReader, DataComparerResults results, IDictionary <string, bool> additionalFieldsToIgnore) { DataComparerRowResults rowResults = null; // Iterate through all the fields, comparing values for (int i = 0; i < actualsReader.FieldCount; i++) { string fieldName = actualsReader.GetName(i); if (ShouldSkipFieldValueComparison(fieldName, additionalFieldsToIgnore)) { continue; } // Get the expected value int expectedOrdinal = GetExpectedOrdinal(expectedReader, fieldName); if (expectedOrdinal < 0) { _logger.WarnFormat("Expected row does not have column '{0}'", fieldName); continue; } object expectedValue = expectedReader.GetValue(expectedOrdinal); object actualValue = actualsReader.GetValue(i); if (!expectedValue.Equals(actualValue)) { // Make sure row results object is created if (rowResults == null) { rowResults = new DataComparerRowResults(DataComparerRowDifference.ValuesDiffer); } rowResults.ExpectedValues[fieldName] = MakeSerializable(expectedValue); rowResults.ActualValues[fieldName] = MakeSerializable(actualValue); } } if (rowResults != null) { CollectPrimaryKeyValues(actualsReader, rowResults.KeyValues); results.RowDifferences.Add(rowResults); // Add difference to the DataTables as well... if (dataCopyMode == DataCopyMode.DifferencesOnly) { AddDataRowToTable(expectedReader, tablesByReader[expectedReader]); AddDataRowToTable(actualsReader, tablesByReader[actualsReader]); } } }
private void HandleMissingActualRow(IDataReader expectedReader, DataComparerResults results) { // Missing actual row DataComparerRowResults diff = new DataComparerRowResults(DataComparerRowDifference.RowMissing); CollectPrimaryKeyValues(expectedReader, diff.KeyValues); CollectRowValues(expectedReader, diff.ExpectedValues); results.RowDifferences.Add(diff); // Add difference to the DataTable as well... if (dataCopyMode == DataCopyMode.DifferencesOnly) { AddDataRowToTable(expectedReader, tablesByReader[expectedReader]); } }
private void HandleUnexpectedActualsRow(IDataReader actualsReader, DataComparerResults results) { // Unexpected actual row DataComparerRowResults diff = new DataComparerRowResults(DataComparerRowDifference.UnexpectedRow); CollectPrimaryKeyValues(actualsReader, diff.KeyValues); CollectRowValues(actualsReader, diff.ActualValues); results.RowDifferences.Add(diff); // Add difference to the DataTable as well... if (dataCopyMode == DataCopyMode.DifferencesOnly) { AddDataRowToTable(actualsReader, tablesByReader[actualsReader]); } }