Ejemplo n.º 1
0
        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());
            }
        }