public void Should_support_get_column_schema()
 {
     using (var dbfDataReader = new DbfDataReader(FixturePath))
     {
         dbfDataReader.CanGetColumnSchema().ShouldBeTrue();
     }
 }
        public DbfMemo1251Tests()
        {
            var options = new DbfDataReaderOptions
            {
                Encoding = Encoding.GetEncoding("WINDOWS-1251")
            };

            DbfDataReader = new DbfDataReader(FixturePath, options);
        }
Example #3
0
        public void Should_get_typed_values()
        {
            using (var dbfDataReader = new DbfDataReader(FixturePath))
            {
                var columns = dbfDataReader.GetColumnSchema();
                columns.Count.ShouldBe(31);

                for (var i = 0; i < dbfDataReader.FieldCount; i++)
                {
                    if (dbfDataReader.IsDBNull(i))
                    {
                        var value = dbfDataReader.GetValue(i);
                        value.ShouldBeNull();
                        continue;
                    }

                    var fieldType = dbfDataReader.GetFieldType(i);
                    var typeCode  = Type.GetTypeCode(fieldType);
                    switch (typeCode)
                    {
                    case TypeCode.Boolean:
                        dbfDataReader.GetBoolean(i);
                        break;

                    case TypeCode.Int32:
                        dbfDataReader.GetInt32(i);
                        break;

                    case TypeCode.DateTime:
                        dbfDataReader.GetDateTime(i);
                        break;

                    case TypeCode.Single:
                        dbfDataReader.GetFloat(i);
                        break;

                    case TypeCode.Double:
                        dbfDataReader.GetDouble(i);
                        break;

                    case TypeCode.Decimal:
                        dbfDataReader.GetDecimal(i);
                        break;

                    case TypeCode.String:
                        dbfDataReader.GetString(i);
                        break;

                    default:
                        // no cheating
                        throw new NotSupportedException($"Unsupported field type: {fieldType} for column at index: {i}");
                    }
                }
            }
        }
Example #4
0
        public void Should_throw_exception_when_casting_to_wrong_type()
        {
            using (var dbfDataReader = new DbfDataReader(FixturePath))
            {
                dbfDataReader.Read();

                var exception = Should.Throw <InvalidCastException>(() => dbfDataReader.GetInt32(0));
                exception.Message.ShouldBe(
                    "Unable to cast object of type 'System.String' to type 'System.Int32' at ordinal '0'.");
            }
        }
Example #5
0
        public void Should_be_able_to_read_all_the_rows()
        {
            using (var dbfDataReader = new DbfDataReader(FixturePath))
            {
                var rowCount = 0;
                while (dbfDataReader.Read())
                {
                    rowCount++;

                    var valueCol1 = dbfDataReader.GetString(0);
                    var valueCol2 = dbfDataReader.GetDecimal(10);
                }

                rowCount.ShouldBe(14);
            }
        }
Example #6
0
        public void Should_get_valid_schema_table()
        {
            using (var dbfDataReader = new DbfDataReader(FixturePath))
            {
                var schemaTable = dbfDataReader.GetSchemaTable();
                schemaTable.ShouldNotBeNull();
                schemaTable.Rows.Count.ShouldBe(31);

                var index = 0;
                var rows  = schemaTable.Rows;
                foreach (var line in FixtureHelpers.GetFieldLines(FixtureSummaryPath))
                {
                    var row = rows[index++];
                    ValidateRow(row, line);
                }
            }
        }
Example #7
0
        public static void ReadField(this DbfDataReader dbfDataReader, int ordinal)
        {
            var fieldType = dbfDataReader.GetFieldType(ordinal);
            var typeCode  = Type.GetTypeCode(fieldType);

            switch (typeCode)
            {
            case TypeCode.Boolean:
                dbfDataReader.GetBoolean(ordinal);
                break;

            case TypeCode.Int32:
                dbfDataReader.GetInt32(ordinal);
                break;

            case TypeCode.DateTime:
                dbfDataReader.GetDateTime(ordinal);
                break;

            case TypeCode.Single:
                dbfDataReader.GetFloat(ordinal);
                break;

            case TypeCode.Double:
                dbfDataReader.GetDouble(ordinal);
                break;

            case TypeCode.Decimal:
                dbfDataReader.GetDecimal(ordinal);
                break;

            case TypeCode.String:
                dbfDataReader.GetString(ordinal);
                break;

            case TypeCode.Object:
                dbfDataReader.GetValue(ordinal);
                break;

            default:
                Console.WriteLine($"Unrecognised type: fieldType: {fieldType}, typeCode: {typeCode} ");
                // no cheating
                throw new NotSupportedException();
            }
        }
 public void DbfDataReader()
 {
     using (var dbfDataReader = new DbfDataReader(FixturePath))
     {
         var cols        = dbfDataReader.GetColumnSchema();
         var allowDbNull = cols.Select(c => c.AllowDBNull != false).ToArray();
         while (dbfDataReader.Read())
         {
             for (var ordinal = 0; ordinal < dbfDataReader.FieldCount; ordinal++)
             {
                 if (allowDbNull[ordinal] && dbfDataReader.IsDBNull(ordinal))
                 {
                     continue;
                 }
                 dbfDataReader.ReadField(ordinal);
             }
         }
     }
 }
Example #9
0
        public void Should_skip_deleted_rows()
        {
            var options = new DbfDataReaderOptions
            {
                SkipDeletedRecords = true
            };

            using (var dbfDataReader = new DbfDataReader(FixturePath, options))
            {
                var rowCount = 0;
                while (dbfDataReader.Read())
                {
                    rowCount++;

                    var valueCol1 = dbfDataReader.GetString(0);
                    var valueCol2 = dbfDataReader.GetDecimal(10);
                }

                rowCount.ShouldBe(12);
            }
        }
        public void Should_get_valid_column_schema()
        {
            using (var dbfDataReader = new DbfDataReader(FixturePath))
            {
                var columns = dbfDataReader.GetColumnSchema();
                columns.Count.ShouldBe(31);

                using (var dbColumns = columns.GetEnumerator())
                {
                    dbColumns.MoveNext();

                    foreach (var line in FixtureHelpers.GetFieldLines(FixtureSummaryPath))
                    {
                        var dbColumn = dbColumns.Current;
                        ValidateColumn(dbColumn, line);

                        dbColumns.MoveNext();
                    }
                }
            }
        }
Example #11
0
        public void Should_have_valid_first_row_values()
        {
            using (var dbfDataReader = new DbfDataReader(FixturePath))
            {
                dbfDataReader.Read().ShouldBeTrue();

                dbfDataReader.GetString(0).ShouldBe("0507121");
                dbfDataReader.GetString(1).ShouldBe("CMP");
                dbfDataReader.GetString(2).ShouldBe("circular");
                dbfDataReader.GetString(3).ShouldBe("12");
                dbfDataReader.GetString(4).ShouldBe(string.Empty);
                dbfDataReader.GetString(5).ShouldBe("no");
                dbfDataReader.GetString(6).ShouldBe("Good");
                dbfDataReader.GetString(7).ShouldBe(string.Empty);
                dbfDataReader.GetDateTime(8).ShouldBe(new DateTime(2005, 7, 12));
                dbfDataReader.GetString(9).ShouldBe("10:56:30am");
                dbfDataReader.GetDecimal(10).ShouldBe(5.2m);
                dbfDataReader.GetDecimal(11).ShouldBe(2.0m);
                dbfDataReader.GetString(12).ShouldBe("Postprocessed Code");
                dbfDataReader.GetString(13).ShouldBe("GeoXT");
                dbfDataReader.GetDateTime(14).ShouldBe(new DateTime(2005, 7, 12));
                dbfDataReader.GetString(15).ShouldBe("10:56:52am");
                dbfDataReader.GetString(16).ShouldBe("New");
                dbfDataReader.GetString(17).ShouldBe("Driveway");
                dbfDataReader.GetString(18).ShouldBe("050712TR2819.cor");
                dbfDataReader.GetInt32(19).ShouldBe(2);
                dbfDataReader.GetInt32(20).ShouldBe(2);
                dbfDataReader.GetString(21).ShouldBe("MS4");
                dbfDataReader.GetInt32(22).ShouldBe(1331);
                dbfDataReader.GetDecimal(23).ShouldBe(226625.000m);
                dbfDataReader.GetDecimal(24).ShouldBe(1131.323m);
                dbfDataReader.GetDecimal(25).ShouldBe(3.1m);
                dbfDataReader.GetDecimal(26).ShouldBe(1.3m);
                dbfDataReader.GetDecimal(27).ShouldBe(0.897088m);
                dbfDataReader.GetDecimal(28).ShouldBe(557904.898m);
                dbfDataReader.GetDecimal(29).ShouldBe(2212577.192m);
                dbfDataReader.GetInt32(30).ShouldBe(401);
            }
        }
 public void Dispose()
 {
     DbfDataReader.Dispose();
     DbfDataReader = null;
 }
 public DbfDataReaderTests()
 {
     DbfDataReader = new DbfDataReader(FixturePath);
 }