public void TestFlatFileReader_IgnoreIgnoredColumns() { const string data = @"A,B,C 1,2,3 4,5,6"; var schema = new SeparatedValueSchema(); schema.AddColumn(new StringColumn("A")); schema.AddColumn(new IgnoredColumn("Ignored")); schema.AddColumn(new StringColumn("C")); var options = new SeparatedValueOptions() { IsFirstRecordSchema = true }; var textReader = new StringReader(data); var csvReader = new SeparatedValueReader(textReader, schema, options); using (var dataReader = new FlatFileDataReader(csvReader)) { Assert.AreEqual("A", dataReader.GetName(0)); Assert.AreEqual("C", dataReader.GetName(1)); Assert.AreEqual(0, dataReader.GetOrdinal("A")); Assert.AreEqual(-1, dataReader.GetOrdinal("B")); Assert.AreEqual(1, dataReader.GetOrdinal("C")); var schemaTable = dataReader.GetSchemaTable(); string[] columnNames = schemaTable.Rows.OfType <DataRow>() .Select(r => r.Field <string>("ColumnName")) .ToArray(); CollectionAssert.AreEqual(new[] { "A", "C" }, columnNames); Assert.IsTrue(dataReader.Read()); object[] values1 = dataReader.GetValues(); CollectionAssert.AreEqual(new[] { "1", "3" }, values1); Assert.IsTrue(dataReader.Read()); object[] values2 = dataReader.GetValues(); CollectionAssert.AreEqual(new[] { "4", "6" }, values2); Assert.IsFalse(dataReader.Read()); } }
public void ShouldGetDefaultSchemaForCSVFile() { FlatFileDataReader dataReader = GetFlatFileReaderWithDefaultSchema(); var schema = dataReader.GetSchemaTable(); var expectedNames = new[] { "Id", "Name", "CreatedOn", "IsActive", "VisitCount", "UniqueId", "FavoriteDay" }; var actualNames = schema.Rows.Cast <DataRow>().Select(r => r.Field <string>(SchemaTableColumn.ColumnName)).ToArray(); CollectionAssert.AreEqual(expectedNames, actualNames); var expectedPositions = Enumerable.Range(0, 7).ToArray(); var actualPositions = schema.Rows.Cast <DataRow>().Select(r => r.Field <int>(SchemaTableColumn.ColumnOrdinal)).ToArray(); CollectionAssert.AreEqual(expectedPositions, actualPositions); var expectedTypes = Enumerable.Repeat(typeof(string), 7).ToArray(); var actualTypes = schema.Rows.Cast <DataRow>().Select(r => r.Field <Type>(SchemaTableColumn.DataType)).ToArray(); CollectionAssert.AreEqual(expectedTypes, actualTypes); }