public void TestReadFlatFile_ClearsSchemaAndData() { // fill the table with some existing columns, constraints and data DataTable table = new DataTable(); DataColumn column = table.Columns.Add("blah", typeof(int)); table.Columns.Add("bleh", typeof(string)); table.Constraints.Add("PK_blah", column, true); DataRow row = table.Rows.Add(new object[] { 123, "dopey" }); row.AcceptChanges(); const string text = @"id,name,created,avg 123,Bob,12/31/2012,3.14159"; SeparatedValueParserOptions options = new SeparatedValueParserOptions() { IsFirstRecordSchema = true }; Stream stream = new MemoryStream(Encoding.Default.GetBytes(text)); IParser parser = new SeparatedValueParser(stream, options); table.ReadFlatFile(parser); Assert.AreEqual(4, table.Columns.Count, "The wrong number of columns were extracted."); Assert.IsTrue(table.Columns.Contains("id"), "The ID column was not extracted."); Assert.IsTrue(table.Columns.Contains("name"), "The name column was not extracted."); Assert.IsTrue(table.Columns.Contains("created"), "The created column was not extracted."); Assert.IsTrue(table.Columns.Contains("avg"), "The AVG column was not extracted."); Assert.AreEqual(1, table.Rows.Count, "Not all of the records were extracted."); row = table.Rows[0]; object[] expected = new object[] { "123", "Bob", "12/31/2012", "3.14159" }; object[] values = row.ItemArray; CollectionAssert.AreEqual(expected, values, "The wrong values were extracted"); }
public void TestReadFlatFile_ClearsSchemaAndData() { // fill the table with some existing columns, constraints and data DataTable table = new DataTable(); DataColumn column = table.Columns.Add("blah", typeof(int)); table.Columns.Add("bleh", typeof(string)); table.Constraints.Add("PK_blah", column, true); DataRow row = table.Rows.Add(new object[] { 123, "dopey" }); row.AcceptChanges(); const string text = @"id,name,created,avg 123,Bob,12/31/2012,3.14159"; SeparatedValueOptions options = new SeparatedValueOptions() { IsFirstRecordSchema = true }; StringReader stringReader = new StringReader(text); IReader parser = new SeparatedValueReader(stringReader, options); table.ReadFlatFile(parser); Assert.Equal(4, table.Columns.Count); Assert.True(table.Columns.Contains("id"), "The ID column was not extracted."); Assert.True(table.Columns.Contains("name"), "The name column was not extracted."); Assert.True(table.Columns.Contains("created"), "The created column was not extracted."); Assert.True(table.Columns.Contains("avg"), "The AVG column was not extracted."); Assert.Equal(1, table.Rows.Count); row = table.Rows[0]; object[] expected = new object[] { "123", "Bob", "12/31/2012", "3.14159" }; object[] values = row.ItemArray; Assert.Equal(expected, values); }
public void TestReadFlatFile_ExtractsSchema_PopulatesTable() { const string text = @"id,name,created,avg 123,Bob,12/31/2012,3.14159"; SeparatedValueParserOptions options = new SeparatedValueParserOptions() { IsFirstRecordSchema = true }; Stream stream = new MemoryStream(Encoding.Default.GetBytes(text)); DataTable table = new DataTable(); IParser parser = new SeparatedValueParser(stream, options); table.ReadFlatFile(parser); Assert.AreEqual(4, table.Columns.Count, "The wrong number of columns were extracted."); Assert.IsTrue(table.Columns.Contains("id"), "The ID column was not extracted."); Assert.IsTrue(table.Columns.Contains("name"), "The name column was not extracted."); Assert.IsTrue(table.Columns.Contains("created"), "The created column was not extracted."); Assert.IsTrue(table.Columns.Contains("avg"), "The AVG column was not extracted."); Assert.AreEqual(1, table.Rows.Count, "Not all of the records were extracted."); DataRow row = table.Rows[0]; object[] expected = new object[] { "123", "Bob", "12/31/2012", "3.14159" }; object[] values = row.ItemArray; CollectionAssert.AreEqual(expected, values, "The wrong values were extracted"); }
public void TestReadFlatFile_ParserNull_Throws() { DataTable table = new DataTable(); IParser parser = null; table.ReadFlatFile(parser); }
public void TestReadFlatFile_SchemaProvided_TypesUsed() { const string text = @"123,Bob,12/31/2012,3.14159"; Stream stream = new MemoryStream(Encoding.Default.GetBytes(text)); DataTable table = new DataTable(); Schema schema = new Schema(); schema.AddColumn(new Int32Column("id")) .AddColumn(new StringColumn("name")) .AddColumn(new DateTimeColumn("created")) .AddColumn(new DoubleColumn("avg")); IParser parser = new SeparatedValueParser(stream, schema); table.ReadFlatFile(parser); Assert.AreEqual(4, table.Columns.Count, "The wrong number of columns were extracted."); Assert.IsTrue(table.Columns.Contains("id"), "The ID column was not extracted."); Assert.IsTrue(table.Columns.Contains("name"), "The name column was not extracted."); Assert.IsTrue(table.Columns.Contains("created"), "The created column was not extracted."); Assert.IsTrue(table.Columns.Contains("avg"), "The AVG column was not extracted."); Assert.AreEqual(1, table.Rows.Count, "Not all of the records were extracted."); DataRow row = table.Rows[0]; object[] expected = new object[] { 123, "Bob", new DateTime(2012, 12, 31), 3.14159 }; object[] values = row.ItemArray; CollectionAssert.AreEqual(expected, values, "The wrong values were extracted"); }
public void TestReadFlatFile_ExtractsSchema_PopulatesTable() { SeparatedValueSchema schema = new SeparatedValueSchema(); schema.AddColumn(new Int32Column("id")) .AddColumn(new StringColumn("name")) .AddColumn(new DateTimeColumn("created") { InputFormat = "MM/dd/yyyy", OutputFormat = "MM/dd/yyyy" }) .AddColumn(new DecimalColumn("avg")); SeparatedValueOptions options = new SeparatedValueOptions() { IsFirstRecordSchema = true }; StringWriter stringWriter = new StringWriter(); SeparatedValueWriter builder = new SeparatedValueWriter(stringWriter, schema, options); builder.Write(new object[] { 123, "Bob", new DateTime(2012, 12, 31), 3.14159m }); StringReader stringReader = new StringReader(stringWriter.ToString()); DataTable table = new DataTable(); IReader parser = new SeparatedValueReader(stringReader, options); table.ReadFlatFile(parser); Assert.Equal(4, table.Columns.Count); Assert.True(table.Columns.Contains("id"), "The ID column was not extracted."); Assert.True(table.Columns.Contains("name"), "The name column was not extracted."); Assert.True(table.Columns.Contains("created"), "The created column was not extracted."); Assert.True(table.Columns.Contains("avg"), "The AVG column was not extracted."); Assert.Equal(1, table.Rows.Count); DataRow row = table.Rows[0]; object[] expected = new object[] { "123", "Bob", "12/31/2012", "3.14159" }; object[] values = row.ItemArray; Assert.Equal(expected, values); }
public void TestReadFlatFile_SchemaProvided_TypesUsed() { const string text = @"123,Bob,12/31/2012,3.14159"; DataTable table = new DataTable(); SeparatedValueSchema schema = new SeparatedValueSchema(); schema.AddColumn(new Int32Column("id")) .AddColumn(new StringColumn("name")) .AddColumn(new DateTimeColumn("created")) .AddColumn(new DoubleColumn("avg")); StringReader stringReader = new StringReader(text); IReader parser = new SeparatedValueReader(stringReader, schema); table.ReadFlatFile(parser); Assert.Equal(4, table.Columns.Count); Assert.True(table.Columns.Contains("id"), "The ID column was not extracted."); Assert.True(table.Columns.Contains("name"), "The name column was not extracted."); Assert.True(table.Columns.Contains("created"), "The created column was not extracted."); Assert.True(table.Columns.Contains("avg"), "The AVG column was not extracted."); Assert.Equal(1, table.Rows.Count); DataRow row = table.Rows[0]; object[] expected = new object[] { 123, "Bob", new DateTime(2012, 12, 31), 3.14159 }; object[] values = row.ItemArray; Assert.Equal(expected, values); }
public void TestReadFlatFile_ParserNull_Throws() { DataTable table = new DataTable(); IReader parser = null; Assert.Throws<ArgumentNullException>(() => table.ReadFlatFile(parser)); }