public void TestDataTableLoadsReader() { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write(headerLine); writer.Write(dataLine1); writer.Write(dataLine1.Replace("Son of a beach!", "Son of a gun!")); writer.Write(dataLine1.Replace("Son of a beach!", "Monkey's Uncle!")); writer.Flush(); stream.Position = 0; using (var dataReader = new DelimitedTextDataReader(dtReader)) { Assert.NotNull(dataReader); Assert.False(dataReader.IsClosed); DataTable dt = new DataTable(); dt.Load(dataReader); Assert.Equal(3, dt.Rows.Count); Assert.Equal("Son of a beach!", dt.Rows[0]["StringField"]); Assert.Equal("Son of a gun!", dt.Rows[1]["StringField"]); Assert.Equal("Monkey's Uncle!", dt.Rows[2]["StringField"]); } } }
public void TestReaderRead() { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write(headerLine); writer.Write(dataLine1); writer.Write(dataLine1.Replace("Son of a beach!", "Son of a gun!")); writer.Write(dataLine1.Replace("Son of a beach!", "Monkey's Uncle!")); writer.Flush(); stream.Position = 0; using (var dataReader = new DelimitedTextDataReader(dtReader)) { Assert.NotNull(dataReader); Assert.False(dataReader.IsClosed); Assert.True(dataReader.Read(), "1st read failed"); Assert.Equal("Son of a beach!", dataReader["StringField"]); Assert.True(dataReader.Read(), "2nd read failed"); Assert.Equal("Son of a gun!", dataReader["StringField"]); Assert.True(dataReader.Read(), "3rd read failed"); Assert.Equal("Monkey's Uncle!", dataReader["StringField"]); Assert.False(dataReader.Read(), "last read failed"); } } }
public void TestReaderGetRecordShouldSkipRecord() { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write("HDR,AAAA11111XXX000-FFF\r]n"); writer.Write("Field1,Field2,Field3,Field4,Field5\r\n"); writer.Write("value1,100,true,\"12/31/2016\", 25.76\r\n"); writer.Flush(); stream.Position = 0; dtReader.FirstRowIsHeader = true; dtReader.ShouldSkipRecord = (row => row[0] == "HDR" || row[0] == "TRL"); dtReader.Read(); TestRecord trecord = dtReader.GetRecord <TestRecord>(); Assert.NotNull(trecord); Assert.Equal("value1", trecord.Field1); Assert.Equal(100, trecord.Field2); Assert.True(trecord.Field3); Assert.Equal(DateTime.Parse("12/31/2016").ToShortDateString(), trecord.Field4.ToShortDateString()); Assert.Equal(25.76M, trecord.Field5); } }
public void TestGetRecordsGeneric() { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write("Field1,Field2,Field3,Field4,Field5\r\n"); writer.Write("value1,100,true,\"12/31/2016\", 25.76\r\n"); writer.Write("value2,200,false,\"1/1/2016\", 67.52\r\n"); writer.Flush(); stream.Position = 0; dtReader.FirstRowIsHeader = true; var records = dtReader.GetAllRecords <TestRecord>().ToList(); Assert.Equal(2, records.Count); TestRecord trecord = records[0]; Assert.NotNull(trecord); Assert.Equal("value1", trecord.Field1); Assert.Equal(100, trecord.Field2); Assert.True(trecord.Field3); Assert.Equal(DateTime.Parse("12/31/2016").ToShortDateString(), trecord.Field4.ToShortDateString()); Assert.Equal(25.76M, trecord.Field5); trecord = records[1]; Assert.NotNull(trecord); Assert.Equal("value2", trecord.Field1); Assert.Equal(200, trecord.Field2); Assert.False(trecord.Field3); Assert.Equal(DateTime.Parse("1/1/2016").ToShortDateString(), trecord.Field4.ToShortDateString()); Assert.Equal(67.52M, trecord.Field5); } }
public void TestReaderMapPropertiesWithFunkyDate() { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write("Field1,Field2,Field3,Field4,Field5\r\n"); writer.Write("value1,100,true,\"20161231\", 25.76\r\n"); writer.Flush(); stream.Position = 0; dtReader.FirstRowIsHeader = true; dtReader.MapProperty <TestRecord>(m => m.Field1).ColumnIndex(0); dtReader.MapProperty <TestRecord>(m => m.Field2).ColumnIndex(1); dtReader.MapProperty <TestRecord>(m => m.Field3).ColumnIndex(2); dtReader.MapProperty <TestRecord>(m => m.Field4).ColumnIndex(3).TypeConverter(new DateTimeConverter() { Format = "yyyyMMdd" }); dtReader.MapProperty <TestRecord>(m => m.Field5).ColumnIndex(4); dtReader.Read(); TestRecord trecord = dtReader.GetRecord <TestRecord>(); Assert.NotNull(trecord); Assert.Equal("value1", trecord.Field1); Assert.Equal(100, trecord.Field2); Assert.True(trecord.Field3); Assert.Equal(DateTime.Parse("12/31/2016").ToShortDateString(), trecord.Field4.ToShortDateString()); Assert.Equal(25.76M, trecord.Field5); } }
public void TestReaderMapPropertiesByName() { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader, '|')) { writer.Write("X1|X2|X3|X4|X5\r\n"); writer.Write("value1|100|true|\"12/31/2016\"| 25.76\r\n"); writer.Flush(); stream.Position = 0; dtReader.FirstRowIsHeader = true; dtReader.MapProperty <TestRecord>(m => m.Field1).ColumnName("X1"); dtReader.MapProperty <TestRecord>(m => m.Field4).ColumnName("X4"); dtReader.MapProperty <TestRecord>(m => m.Field2).ColumnName("X2"); dtReader.MapProperty <TestRecord>(m => m.Field5).ColumnName("X5"); dtReader.MapProperty <TestRecord>(m => m.Field3).ColumnName("X3"); dtReader.Read(); TestRecord trecord = dtReader.GetRecord <TestRecord>(); Assert.NotNull(trecord); Assert.Equal("value1", trecord.Field1); Assert.Equal(100, trecord.Field2); Assert.True(trecord.Field3); Assert.Equal(DateTime.Parse("12/31/2016").ToShortDateString(), trecord.Field4.ToShortDateString()); Assert.Equal(25.76M, trecord.Field5); } }
public void TestReaderGetRecordCustomFieldsDefaultValues() { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write("Field1,Field2,Field3,Field4,Field5\r\n"); writer.Write("value1,100,true,\"12/31/2016\", 25.76\r\n"); writer.Flush(); stream.Position = 0; dtReader.FirstRowIsHeader = false; dtReader.ShouldSkipRecord = (row => row[0] == "Field1"); dtReader.AddColumn("F1"); dtReader.AddColumn("F2"); dtReader.AddColumn("F3"); dtReader.AddColumn("F4"); dtReader.AddColumn("F5"); dtReader.AddColumn("F6"); dtReader.AddColumn("F7", "defaultVal"); dtReader.Read(); TestRecord trecord = dtReader.GetRecord <TestRecord>(); Assert.NotNull(trecord); Assert.Equal("value1", trecord.Field1); Assert.Equal(100, trecord.Field2); Assert.True(trecord.Field3); Assert.Equal(DateTime.Parse("12/31/2016").ToShortDateString(), trecord.Field4.ToShortDateString()); Assert.Equal(25.76M, trecord.Field5); Assert.Equal("", trecord.Field6); Assert.Equal("defaultVal", trecord.Field7); Assert.Equal("F1", dtReader.FieldHeaders[0]); } }
public void TestReaderMapPropertiesWitoutHeaderRow() { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader, '|')) { writer.Write("value1|100|true|\"12/31/2016\"| 25.76\r\n"); writer.Flush(); stream.Position = 0; dtReader.FirstRowIsHeader = false; dtReader.MapProperty <TestRecord>(m => m.Field1).MappedColumnIndex = 0; dtReader.MapProperty <TestRecord>(m => m.Field4).MappedColumnIndex = 3; dtReader.MapProperty <TestRecord>(m => m.Field2).MappedColumnIndex = 1; dtReader.MapProperty <TestRecord>(m => m.Field5).MappedColumnIndex = 4; dtReader.MapProperty <TestRecord>(m => m.Field3).MappedColumnIndex = 2; dtReader.Read(); TestRecord trecord = dtReader.GetRecord <TestRecord>(); Assert.NotNull(trecord); Assert.Equal("value1", trecord.Field1); Assert.Equal(100, trecord.Field2); Assert.True(trecord.Field3); Assert.Equal(DateTime.Parse("12/31/2016").ToShortDateString(), trecord.Field4.ToShortDateString()); Assert.Equal(25.76M, trecord.Field5); } }
protected override object CoreGetAlternativeValueFromId(DictionaryConfiguration dictionaryConfiguration, IMetaColumn metaColumn, object surrogateId) { object value; int index; HeaderSpec[] headerSpecs; IEnumerable <IDictionary <string, object> > records; if ((object)dictionaryConfiguration == null) { throw new ArgumentNullException("dictionaryConfiguration"); } if ((object)metaColumn == null) { throw new ArgumentNullException("metaColumn"); } if ((object)surrogateId == null) { throw new ArgumentNullException("surrogateId"); } if ((object)this.AdapterConfiguration.AdapterSpecificConfiguration.DelimitedTextSpec == null) { throw new InvalidOperationException(string.Format("Configuration missing: '{0}'.", "DelimitedTextSpec")); } if (DataTypeFascade.Instance.IsNullOrWhiteSpace(this.AdapterConfiguration.AdapterSpecificConfiguration.DelimitedTextFilePath)) { throw new InvalidOperationException(string.Format("Configuration missing: '{0}'.", "DelimitedTextFilePath")); } using (RecordTextReader delimitedTextReader = new DelimitedTextReader(new StreamReader(File.Open(this.AdapterConfiguration.AdapterSpecificConfiguration.DelimitedTextFilePath, FileMode.Open, FileAccess.Read, FileShare.None)), this.AdapterConfiguration.AdapterSpecificConfiguration.DelimitedTextSpec)) { index = surrogateId.ChangeType <int>() - 1; headerSpecs = delimitedTextReader.ReadHeaderSpecs().ToArray(); records = delimitedTextReader.ReadRecords(); var record = records.ElementAtOrDefault(index); if ((object)record == null) { value = null; } else { value = record[headerSpecs[index].HeaderName]; } } return(value); }
protected override void CorePreloadCache(DictionaryConfiguration dictionaryConfiguration, IDictionary <string, IDictionary <long, object> > substitutionCacheRoot) { HeaderSpec[] headerSpecs; IEnumerable <IDictionary <string, object> > records; IDictionary <long, object> dictionaryCache; if ((object)dictionaryConfiguration == null) { throw new ArgumentNullException("dictionaryConfiguration"); } if ((object)substitutionCacheRoot == null) { throw new ArgumentNullException("substitutionCacheRoot"); } if ((object)this.AdapterConfiguration.AdapterSpecificConfiguration.DelimitedTextSpec == null) { throw new InvalidOperationException(string.Format("Configuration missing: '{0}'.", "DelimitedTextSpec")); } if (DataTypeFascade.Instance.IsNullOrWhiteSpace(this.AdapterConfiguration.AdapterSpecificConfiguration.DelimitedTextFilePath)) { throw new InvalidOperationException(string.Format("Configuration missing: '{0}'.", "DelimitedTextFilePath")); } using (RecordTextReader delimitedTextReader = new DelimitedTextReader(new StreamReader(File.Open(this.AdapterConfiguration.AdapterSpecificConfiguration.DelimitedTextFilePath, FileMode.Open, FileAccess.Read, FileShare.None)), this.AdapterConfiguration.AdapterSpecificConfiguration.DelimitedTextSpec)) { dictionaryCache = new Dictionary <long, object>(); headerSpecs = delimitedTextReader.ReadHeaderSpecs().ToArray(); records = delimitedTextReader.ReadRecords(); foreach (IDictionary <string, object> record in records) { object[] values = record.Values.ToArray(); long id = values[0].ChangeType <long>(); object value = values[1].ChangeType <string>(); dictionaryCache.Add(id, value); } substitutionCacheRoot.Add(dictionaryConfiguration.DictionaryId, dictionaryCache); } }
public void TestFieldCount() { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write(headerLine); writer.Write(dataLine1); writer.Flush(); stream.Position = 0; using (var dataReader = new DelimitedTextDataReader(dtReader)) { dataReader.Read(); Assert.Equal(15, dataReader.FieldCount); } } }
public void TestReaderCreation() { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write(headerLine); writer.Write(dataLine1); writer.Flush(); stream.Position = 0; using (var dataReader = new DelimitedTextDataReader(dtReader)) { Assert.NotNull(dataReader); Assert.False(dataReader.IsClosed); } } }
public void TestGetBoolean() { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write(headerLine); writer.Write(dataLine1); writer.Flush(); stream.Position = 0; using (var dataReader = new DelimitedTextDataReader(dtReader)) { dataReader.Read(); Assert.True(dataReader.GetBoolean(0), "Boolean value should be true."); } } }
public void TestGetString() { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write(headerLine); writer.Write(dataLine1); writer.Flush(); stream.Position = 0; using (var dataReader = new DelimitedTextDataReader(dtReader)) { dataReader.Read(); Assert.Equal("Son of a beach!", dataReader.GetString(11)); } } }
public void TestIsDbNull() { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write(headerLine); writer.Write(dataLine1); writer.Flush(); stream.Position = 0; using (var dataReader = new DelimitedTextDataReader(dtReader)) { dataReader.Read(); Assert.True(dataReader.IsDBNull(12)); Assert.True(dataReader.IsDBNull(13)); } } }
public void TestReaderGetRecordPropertiesOutnumberFields() { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write("Field1,Field2\r\n"); writer.Write("value1,100\r\n"); writer.Flush(); stream.Position = 0; dtReader.FirstRowIsHeader = true; dtReader.Read(); TestRecord trecord = dtReader.GetRecord <TestRecord>(); Assert.NotNull(trecord); Assert.Equal("value1", trecord.Field1); Assert.Equal(100, trecord.Field2); } }
public void TestReaderGetRecordWithoutFieldHeadersOrPropertyMappingsNestedObject() { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write("value1,100,true,\"12/31/2016\", 25.76\r\n"); writer.Flush(); stream.Position = 0; dtReader.FirstRowIsHeader = false; dtReader.Read(); TestRecordData trecord = dtReader.GetRecord <TestRecordData>(); Assert.NotNull(trecord); Assert.Equal("value1", trecord.Data1); Assert.Equal(100, trecord.Data2); Assert.True(trecord.Data4); } }
public void TestIsClosed() { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write(headerLine); writer.Write(dataLine1); writer.Flush(); stream.Position = 0; using (var dataReader = new DelimitedTextDataReader(dtReader)) { dataReader.Read(); Assert.False(dataReader.IsClosed, "data reader should not be closed yet."); dataReader.Read(); Assert.True(dataReader.IsClosed, "data reader should be closed but is not."); } } }
public void TestGetByte() { byte b = Byte.Parse("255"); using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write(headerLine); writer.Write(dataLine1); writer.Flush(); stream.Position = 0; using (var dataReader = new DelimitedTextDataReader(dtReader)) { dataReader.Read(); Assert.Equal(b, dataReader.GetByte(1)); } } }
public void TestGetDateTime() { var datetime = DateTime.Parse("01/01/2016"); using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write(headerLine); writer.Write(dataLine1); writer.Flush(); stream.Position = 0; using (var dataReader = new DelimitedTextDataReader(dtReader)) { dataReader.Read(); Assert.Equal(datetime, dataReader.GetDateTime(3)); } } }
public void TestGetDecimal() { decimal dec = 123.4567M; using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write(headerLine); writer.Write(dataLine1); writer.Flush(); stream.Position = 0; using (var dataReader = new DelimitedTextDataReader(dtReader)) { dataReader.Read(); Assert.Equal(dec, dataReader.GetDecimal(4)); } } }
public void TestGetDouble() { double dbl = 890.12D; using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write(headerLine); writer.Write(dataLine1); writer.Flush(); stream.Position = 0; using (var dataReader = new DelimitedTextDataReader(dtReader)) { dataReader.Read(); Assert.Equal(dbl, dataReader.GetDouble(5)); } } }
public void TestGetFloat() { float flt = 34.56F; using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write(headerLine); writer.Write(dataLine1); writer.Flush(); stream.Position = 0; using (var dataReader = new DelimitedTextDataReader(dtReader)) { dataReader.Read(); Assert.Equal(flt, dataReader.GetFloat(6)); } } }
public void TestReaderGetField() { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write("Field1,Field2,Field3,Field4,Field5\r\n"); writer.Write("value1,100,true,\"12/31/2016\", 25.76\r\n"); writer.Flush(); stream.Position = 0; dtReader.FirstRowIsHeader = true; dtReader.Read(); Assert.Equal("value1", dtReader.GetField <string>(0)); Assert.Equal(100, dtReader.GetField <int>(1)); Assert.True(dtReader.GetField <bool>(2)); Assert.Equal(DateTime.Parse("12/31/2016").ToShortDateString(), dtReader.GetField <DateTime>(3).ToShortDateString()); Assert.Equal(25.76M, dtReader.GetField <decimal>(4)); } }
public void TestGetGuid() { Guid guid = Guid.Parse("3E11803C-AB25-454C-953E-D940E4FCF655"); using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write(headerLine); writer.Write(dataLine1); writer.Flush(); stream.Position = 0; using (var dataReader = new DelimitedTextDataReader(dtReader)) { dataReader.Read(); Assert.Equal(guid, dataReader.GetGuid(7)); } } }
public void TestGetInt64() { Int64 integer64 = Int64.MaxValue; using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write(headerLine); writer.Write(dataLine1); writer.Flush(); stream.Position = 0; using (var dataReader = new DelimitedTextDataReader(dtReader)) { dataReader.Read(); Assert.Equal(integer64, dataReader.GetInt64(10)); } } }
public void TestGetSchemaTableNotRead() { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write(headerLine); writer.Write(dataLine1); writer.Flush(); stream.Position = 0; using (var dataReader = new DelimitedTextDataReader(dtReader)) { DataTable dt = dataReader.GetSchemaTable(); Assert.NotNull(dt); Assert.Equal(15, dt.Rows.Count); Assert.Equal("StringField", dt.Rows[11][0].ToString()); } } }
public void TestReaderDispose() { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) { var dtReader = new DelimitedTextReader(reader); writer.Write(headerLine); writer.Write(dataLine1); writer.Flush(); stream.Position = 0; using (var dataReader = new DelimitedTextDataReader(dtReader)) { dataReader.Read(); Assert.Equal("Son of a beach!", dataReader["StringField"]); } dtReader.Dispose(); Assert.Null(dtReader.Parser); } }
public void TestReaderGetRecordWithoutFieldHeadersOrPropertyMappings() { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write("value1,100,true,\"12/31/2016\", 25.76\r\n"); writer.Flush(); stream.Position = 0; dtReader.FirstRowIsHeader = false; dtReader.Read(); TestRecord trecord = dtReader.GetRecord <TestRecord>(); Assert.NotNull(trecord); Assert.Equal("value1", trecord.Field1); Assert.Equal(100, trecord.Field2); Assert.True(trecord.Field3); Assert.Equal(DateTime.Parse("12/31/2016").ToShortDateString(), trecord.Field4.ToShortDateString()); Assert.Equal(25.76M, trecord.Field5); } }
public void GetRecordCaseInsensitiveTest() { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) using (var reader = new StreamReader(stream)) using (var dtReader = new DelimitedTextReader(reader)) { writer.Write("field1,field2,Field3,Field4,Field5\r\n"); writer.Write("value1,100,true,\"12/31/2016\", 25.76\r\n"); writer.Flush(); stream.Position = 0; dtReader.FirstRowIsHeader = true; dtReader.Read(); TestRecord trecord = dtReader.GetRecord <TestRecord>(); Assert.NotNull(trecord); Assert.Equal("value1", trecord.Field1); Assert.Equal(100, trecord.Field2); Assert.True(trecord.Field3); Assert.Equal(DateTime.Parse("12/31/2016").ToShortDateString(), trecord.Field4.ToShortDateString()); Assert.Equal(25.76M, trecord.Field5); } }