internal object FormatValue(int columnIndex, object value) { object v = null; if (settings.IsNumeric(columnIndex)) { v = new NumericConverter().Convert(value); } else if (settings.IsDateTime(columnIndex)) { v = new DateTimeConverter().Convert(value); } else if (settings.IsBoolean(columnIndex)) { v = new BooleanConverter().Convert(value); } else { if (value is IConvertible) { v = ((IConvertible)value).ToString(CultureInfo.InvariantCulture); } else { v = value.ToString(); } } return(v); }
protected void CheckSettingsAndFirstRow(DataTable dt, ResultSetComparisonSettings settings) { if (dt.Rows.Count == 0) { return; } var dr = dt.Rows[0]; for (int i = 0; i < dr.Table.Columns.Count; i++) { if (!dr.IsNull(i)) { if (settings.IsNumeric(i) && IsNumericField(dr.Table.Columns[i])) { continue; } var numericConverter = new NumericConverter(); if (settings.IsNumeric(i) && !(numericConverter.IsValid(dr[i]) || BaseComparer.IsValidInterval(dr[i]))) { var exception = string.Format("The column with an index of {0} is expecting a numeric value but the first row of your result set contains a value '{1}' not recognized as a valid numeric value or a valid interval." , i, dr[i].ToString()); if (numericConverter.IsValid(dr[i].ToString().Replace(",", "."))) { exception += " Aren't you trying to use a comma (',' ) as a decimal separator? NBi requires that the decimal separator must be a '.'."; } throw new ResultSetComparerException(exception); } if (settings.IsDateTime(i) && IsDateTimeField(dr.Table.Columns[i])) { return; } if (settings.IsDateTime(i) && !BaseComparer.IsValidDateTime(dr[i].ToString())) { throw new ResultSetComparerException( string.Format("The column with an index of {0} is expecting a date & time value but the first row of your result set contains a value '{1}' not recognized as a valid date & time value." , i, dr[i].ToString())); } } } }
protected void CheckSettingsAndFirstRow(DataTable dt, ResultSetComparisonSettings settings) { if (dt.Rows.Count == 0) return; var dr = dt.Rows[0]; for (int i = 0; i < dr.Table.Columns.Count; i++) { if (!dr.IsNull(i)) { if (settings.IsNumeric(i) && IsNumericField(dr.Table.Columns[i])) continue; if (settings.IsNumeric(i) && !(BaseComparer.IsValidNumeric(dr[i]) || BaseComparer.IsValidInterval(dr[i]))) { var exception = string.Format("The column with an index of {0} is expecting a numeric value but the first row of your result set contains a value '{1}' not recognized as a valid numeric value or a valid interval." , i, dr[i].ToString()); if (BaseComparer.IsValidNumeric(dr[i].ToString().Replace(",", "."))) exception += " Aren't you trying to use a comma (',' ) as a decimal separator? NBi requires that the decimal separator must be a '.'."; throw new ResultSetComparerException(exception); } if (settings.IsDateTime(i) && IsDateTimeField(dr.Table.Columns[i])) return; if (settings.IsDateTime(i) && !BaseComparer.IsValidDateTime(dr[i].ToString())) { throw new ResultSetComparerException( string.Format("The column with an index of {0} is expecting a date & time value but the first row of your result set contains a value '{1}' not recognized as a valid date & time value." , i, dr[i].ToString())); } } } }