From af2a4710d9220958a2c7751898f9392d4e94fa46 Mon Sep 17 00:00:00 2001 From: Justin Boyer Date: Mon, 10 Aug 2015 22:54:52 -0400 Subject: [PATCH] Added Extension method for array to DT Added FileHelpers namespace and updated relevant tests for ReadFileAsDT. All tests pass. --- .../Tests/Common/ReadersAsDataTable.cs | 22 ++++++---- FileHelpers/Core/FileHelperExtensions.cs | 41 +++++++++++++++++++ FileHelpers/FileHelpers.csproj | 1 + 3 files changed, 56 insertions(+), 8 deletions(-) create mode 100644 FileHelpers/Core/FileHelperExtensions.cs diff --git a/FileHelpers.Tests/Tests/Common/ReadersAsDataTable.cs b/FileHelpers.Tests/Tests/Common/ReadersAsDataTable.cs index e6244bffe..7caa7cded 100644 --- a/FileHelpers.Tests/Tests/Common/ReadersAsDataTable.cs +++ b/FileHelpers.Tests/Tests/Common/ReadersAsDataTable.cs @@ -2,6 +2,8 @@ using System.Collections; using System.Collections.Generic; using NUnit.Framework; +using System.Data; + namespace FileHelpers.Tests.CommonTests { @@ -12,26 +14,30 @@ public class ReadersAsDataTable public void ReadFile() { var engine = new FileHelperEngine(); - var dt = engine.ReadFileAsDT(FileTest.Good.Test1.Path); + var records = engine.ReadFile(FileTest.Good.Test1.Path); + + var dt = records.ToDataTable(); Assert.AreEqual(4, dt.Rows.Count); Assert.AreEqual(4, engine.TotalRecords); Assert.AreEqual(0, engine.ErrorManager.ErrorCount); - Assert.AreEqual(new DateTime(1314, 12, 11), (DateTime) dt.Rows[0]["Field1"]); - Assert.AreEqual("901", (string) dt.Rows[0]["Field2"]); - Assert.AreEqual(234, (int) dt.Rows[0]["Field3"]); + Assert.AreEqual(new DateTime(1314, 12, 11), (DateTime)dt.Rows[0]["Field1"]); + Assert.AreEqual("901", (string)dt.Rows[0]["Field2"]); + Assert.AreEqual(234, (int)dt.Rows[0]["Field3"]); - Assert.AreEqual(new DateTime(1314, 11, 10), (DateTime) dt.Rows[1]["Field1"]); - Assert.AreEqual("012", (string) dt.Rows[1]["Field2"]); - Assert.AreEqual(345, (int) dt.Rows[1]["Field3"]); + Assert.AreEqual(new DateTime(1314, 11, 10), (DateTime)dt.Rows[1]["Field1"]); + Assert.AreEqual("012", (string)dt.Rows[1]["Field2"]); + Assert.AreEqual(345, dt.Rows[1]["Field3"]); } [Test] public void ReadNullableTypes() { var engine = new FileHelperEngine(); - var res = engine.ReadFileAsDT(FileTest.Good.NullableTypes1.Path); + var records = engine.ReadFile(FileTest.Good.NullableTypes1.Path); + + var res = records.ToDataTable(); Assert.AreEqual(4, res.Rows.Count); Assert.AreEqual(4, engine.TotalRecords); diff --git a/FileHelpers/Core/FileHelperExtensions.cs b/FileHelpers/Core/FileHelperExtensions.cs new file mode 100644 index 000000000..1483afe41 --- /dev/null +++ b/FileHelpers/Core/FileHelperExtensions.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Text; + +namespace FileHelpers +{ + /// + /// Set of Extension methods to be exposed to end users + /// of the FileHelper API. + /// + public static class FileHelperExtensions + { + /// + /// Generic extension method for arrays that returns the array records + /// in a DataTable. + /// + /// + /// The array to transform into a DataTable + /// The array records in a DataTable. + public static DataTable ToDataTable(this T[] records) + { + var ri = RecordInfo.Resolve(typeof(T)); + + return ri.Operations.RecordsToDataTable(records); + } + } +} + + +namespace System.Runtime.CompilerServices +{ + /// + /// This is needed per http://stackoverflow.com/questions/1522605/using-extension-methods-in-net-2-0 + /// This is needed because of the target framework of the project being .NET 2.0. + /// Remove this is the target framework is changed to a higher .NET version. + /// + [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)] + public sealed class ExtensionAttribute : Attribute { } +} + diff --git a/FileHelpers/FileHelpers.csproj b/FileHelpers/FileHelpers.csproj index dcc6b9594..63fd09cfe 100644 --- a/FileHelpers/FileHelpers.csproj +++ b/FileHelpers/FileHelpers.csproj @@ -172,6 +172,7 @@ Code + Code