コード例 #1
0
        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()));
                    }
                }
            }
        }
コード例 #2
0
ファイル: BaseEquivaler.cs プロジェクト: jeason0813/NBi
        protected void CheckSettingsFirstRowCell(ColumnRole columnRole, ColumnType columnType, DataColumn dataColumn, object value, string[] messages)
        {
            var columnName = dataColumn.ColumnName;

            if (!DBNull.Value.Equals(value))
            {
                if (columnRole != ColumnRole.Ignore)
                {
                    if (columnType == ColumnType.Numeric && IsNumericField(dataColumn))
                    {
                        return;
                    }

                    var numericCaster = new NumericCaster();
                    if (columnType == ColumnType.Numeric && !(numericCaster.IsValid(value) || BaseComparer.IsValidInterval(value)))
                    {
                        var exception = string.Format(messages[0]
                                                      , columnName, value.ToString());

                        if (numericCaster.IsValid(value.ToString().Replace(",", ".")))
                        {
                            exception += messages[1];
                        }

                        throw new EquivalerException(exception);
                    }

                    if (columnType == ColumnType.DateTime && IsDateTimeField(dataColumn))
                    {
                        return;
                    }

                    if (columnType == ColumnType.DateTime && !BaseComparer.IsValidDateTime(value.ToString()))
                    {
                        throw new EquivalerException(
                                  string.Format(messages[2]
                                                , columnName, value.ToString()));
                    }
                }
            }
        }
コード例 #3
0
 public void IsValidDateTime_String_False()
 {
     Assert.That(BaseComparer.IsValidDateTime("DateTime"), Is.False);
 }
コード例 #4
0
 public void IsValidDateTime_ddmm_True()
 {
     Assert.That(BaseComparer.IsValidDateTime("16.12"), Is.True);
 }
コード例 #5
0
 public void IsValidDateTime_mmdd_True()
 {
     Assert.That(BaseComparer.IsValidDateTime("12/17"), Is.True);
 }
コード例 #6
0
 public void IsValidDateTime_yyyymmdd_True()
 {
     Assert.That(BaseComparer.IsValidDateTime("2013-10-16"), Is.True);
 }
コード例 #7
0
 public void IsValidDateTime_ddmyy_True()
 {
     Assert.That(BaseComparer.IsValidDateTime("10.5.2013"), Is.True);
 }
コード例 #8
0
 public void IsValidDateTime_dmyy_True()
 {
     Assert.That(BaseComparer.IsValidDateTime("5.12.78"), Is.True);
 }
コード例 #9
0
 public void IsValidDateTime_mmddyy_True()
 {
     Assert.That(BaseComparer.IsValidDateTime("10/16/13"), Is.True);
 }
コード例 #10
0
 public void IsValidDateTime_xxxxyyyy_True()
 {
     Assert.That(BaseComparer.IsValidDateTime("10/10/2013"), Is.True);
 }