public void Add_Columns_Manually_Test() { Type type = typeof (Measurement); DocumentFormatDefinitionBuilder<Measurement> builder = new DocumentFormatDefinitionBuilder<Measurement>("\t", true) .SetCommentString("'") .SetExportHeaderLine(true, "' "); builder.AddColumn(type.GetProperty("Name")); builder.AddColumn(type.GetProperty("X"), "0.000"); builder.AddColumn(type.GetProperty("Y"), "0.000"); builder.AddColumn(type.GetProperty("Z"), "0.000"); builder.AddColumn(type.GetProperty("DateTime"), "dd.MM.yyyy HH:mm:ss"); builder.AddColumn(type.GetProperty("IsActive")); IDocumentFormatDefinition<Measurement> definition = builder.Build(); string exportResult = definition.Export(new[] {_measurement}); Assert.AreEqual(@"' Name X Y Z DateTime IsActive Point01 10.000 20.000 30.000 03.03.2013 14:48:00 T", exportResult); List<Measurement> importList = definition.Import(exportResult); AssertAreEqual(importList); }
public void Add_Columns_Manually_Test() { Type type = typeof(Measurement); DocumentFormatDefinitionBuilder <Measurement> builder = new DocumentFormatDefinitionBuilder <Measurement>("\t", true) .SetCommentString("'") .SetExportHeaderLine(true, "' "); builder.AddColumn(type.GetProperty("Name")); builder.AddColumn(type.GetProperty("X"), "0.000"); builder.AddColumn(type.GetProperty("Y"), "0.000"); builder.AddColumn(type.GetProperty("Z"), "0.000"); builder.AddColumn(type.GetProperty("DateTime"), "dd.MM.yyyy HH:mm:ss"); builder.AddColumn(type.GetProperty("IsActive")); IDocumentFormatDefinition <Measurement> definition = builder.Build(); string exportResult = definition.Export(new[] { _measurement }); Assert.AreEqual(@"' Name X Y Z DateTime IsActive Point01 10.000 20.000 30.000 03.03.2013 14:48:00 T" , exportResult); List <Measurement> importList = definition.Import(exportResult); AssertAreEqual(importList); }
public void AutoBuild_Test() { IDocumentFormatDefinition <Measurement> definition = DocumentFormatDefinitionBuilder <Measurement> .AutoBuild("\t", true, "'", true, "' "); string exportResult = definition.Export(new[] { _measurement }); List <Measurement> importList = definition.Import(exportResult); AssertAreEqual(importList); }
public void DataOverflowInColumn_ThrowsExportException() { DocumentFormatDefinitionBuilder <ChequeRow> definition = GetDefinition(); var record = new ChequeRow() { AccountNo = 1234567890123 // Overflowed }; IDocumentFormatDefinition <ChequeRow> document = definition.Build(); Assert.Throws <ExportException>(() => document.Export(new ChequeRow[] { record })); }
private IDocumentFormatDefinition <State> GetDefinition() { // Possible Values are: // Empty the state is not a member of the EU, leave property EU_MEMBER null // 'N' the state is not a member of the EU, so leave the property Year empty // 'J, seit yyyy' the state is a member of the EU, so set property Year accordingly IDocumentFormatDefinition <State.MemberOfEU> memberOfEuColumnDefinition = new DocumentFormatDefinitionBuilder <State.MemberOfEU>(",", false) .SetLineEndsWithColumnSeparator(false) .AddColumn(x => x.IsMember, "J", "N") .AddColumn(x => x.Year, builder => builder .SetImportFunc(s => { string year = s.Substring(5); return(Int32.Parse(year)); }) .SetExportFunc((x, i) => i.HasValue ? " seit " + i.Value : "")) .Build(); IDocumentFormatDefinition <State> definition = new DocumentFormatDefinitionBuilder <State>(";", false) .SetInstantiator(() => new State()) .SetExportHeaderLine(true) .AddColumn(x => x.ISO_NUM) .AddColumn(x => x.ISO_2) .AddColumn(x => x.ISO_3) .AddColumn(x => x.NAME_GER) .AddColumn(x => x.NAME_GER_OFF) .AddColumn(x => x.NAME_ENG) .AddColumn(x => x.NAME_ENG_OFF) .AddColumn(x => x.STATUS) .AddColumn(x => x.ASSOCIATED) .AddColumn(x => x.DOCUMENT) .AddColumn(x => x.EU_MEMBER, builder => builder .SetImportFunc(s => memberOfEuColumnDefinition.Import(new StringReader(s)).Single()) .SetExportFunc((item, m) => memberOfEuColumnDefinition.Export(new [] { m }).TrimEnd(','))) .AddColumn(x => x.PART_OF_EU, "J", "N") .AddColumn(x => x.CONTINENT) .AddColumn(x => x.PREFIX) .AddColumn(x => x.TLD) .AddColumn(x => x.CAR_PLATE) .AddColumn(x => x.DATE_OF_FORMATION) .AddColumn(x => x.DATE_OF_RESOLUTION) .AddColumn(x => x.EXIST_ADD) .Build(); return(definition); }
private IDocumentFormatDefinition<State> GetDefinition() { // Possible Values are: // Empty the state is not a member of the EU, leave property EU_MEMBER null // 'N' the state is not a member of the EU, so leave the property Year empty // 'J, seit yyyy' the state is a member of the EU, so set property Year accordingly IDocumentFormatDefinition<State.MemberOfEU> memberOfEuColumnDefinition = new DocumentFormatDefinitionBuilder<State.MemberOfEU>(",", false) .SetLineEndsWithColumnSeparator(false) .AddColumn(x => x.IsMember, "J", "N") .AddColumn(x => x.Year, builder => builder .SetImportFunc(s => { string year = s.Substring(5); return Int32.Parse(year); }) .SetExportFunc((x,i) => i.HasValue ? " seit " + i.Value : "")) .Build(); IDocumentFormatDefinition<State> definition = new DocumentFormatDefinitionBuilder<State>(";", false) .SetInstantiator(() => new State()) .SetExportHeaderLine(true) .AddColumn(x => x.ISO_NUM) .AddColumn(x => x.ISO_2) .AddColumn(x => x.ISO_3) .AddColumn(x => x.NAME_GER) .AddColumn(x => x.NAME_GER_OFF) .AddColumn(x => x.NAME_ENG) .AddColumn(x => x.NAME_ENG_OFF) .AddColumn(x => x.STATUS) .AddColumn(x => x.ASSOCIATED) .AddColumn(x => x.DOCUMENT) .AddColumn(x => x.EU_MEMBER, builder => builder .SetImportFunc(s => memberOfEuColumnDefinition.Import(new StringReader(s)).Single()) .SetExportFunc((item, m) => memberOfEuColumnDefinition.Export(new [] { m }).TrimEnd(','))) .AddColumn(x => x.PART_OF_EU, "J", "N") .AddColumn(x => x.CONTINENT) .AddColumn(x => x.PREFIX) .AddColumn(x => x.TLD) .AddColumn(x => x.CAR_PLATE) .AddColumn(x => x.DATE_OF_FORMATION) .AddColumn(x => x.DATE_OF_RESOLUTION) .AddColumn(x => x.EXIST_ADD) .Build(); return definition; }
public void ValuesWithFullWidth_ExportedByFillingOutFullSpace() { DocumentFormatDefinitionBuilder <ChequeRow> definition = GetDefinition(); var record = new ChequeRow() { AccountNo = 123456789012, RecordType = ChequeRow.RecordTypeEnum.Outstanding, AmountCents = 210987654321, SerialNumber = 9876543210, Date = new DateTime(2013, 12, 31) }; string resultString = definition.Build().Export(new ChequeRow[] { record }); Assert.That(resultString, Is.EqualTo("123456789012O987654321021098765432120131231" + new string(' ', 1 + 50 + 16 + 256 + 16))); }
public void RightJustifiedValues_AreFilledUpWithFillChar() { DocumentFormatDefinitionBuilder <ChequeRow> definition = GetDefinition(); var record = new ChequeRow() { AccountNo = 123456789, RecordType = ChequeRow.RecordTypeEnum.Outstanding, AmountCents = 152, SerialNumber = 123, Date = new DateTime(2013, 12, 31) }; string resultString = definition.Build().Export(new ChequeRow[] { record }); Assert.That(resultString, Is.EqualTo("000123456789O000000012300000000015220131231" + new string(' ', 1 + 50 + 16 + 256 + 16))); }
public void PropertyList_Test() { var propertyList = new List <PropertyInfo> { typeof(Measurement).GetProperty("Name"), typeof(Measurement).GetProperty("X"), typeof(Measurement).GetProperty("Y"), typeof(Measurement).GetProperty("Z"), typeof(Measurement).GetProperty("DateTime"), typeof(Measurement).GetProperty("IsActive"), }; IDocumentFormatDefinition <Measurement> definition = DocumentFormatDefinitionBuilder <Measurement> .Build(propertyList, "\t", true, "'", true, "' "); string exportResult = definition.Export(new[] { _measurement }); List <Measurement> importList = definition.Import(exportResult); AssertAreEqual(importList); }
private DocumentFormatDefinitionBuilder<ChequeRow> GetDefinition() { var definition = new DocumentFormatDefinitionBuilder<ChequeRow>(string.Empty, false); definition.AddColumn(q => q.AccountNo, c => c.SetColumnWidth(12).SetAlignment(ColumnAlignment.Right).SetFillChar('0').ThrowOnOverflow()); definition.AddColumn(q => q.RecordType, c => c.SetExportFunc(EnumConvertFunc)); definition.AddColumn(q => q.SerialNumber, c => c.SetColumnWidth(10).SetAlignment(ColumnAlignment.Right).SetFillChar('0').ThrowOnOverflow()); definition.AddColumn(q => q.AmountCents, c => c.SetColumnWidth(12).SetAlignment(ColumnAlignment.Right).SetFillChar('0').ThrowOnOverflow()); definition.AddColumn(q => q.Date, c => c.SetColumnWidth(8).SetStringFormat("yyyyMMdd")); definition.AddDummyColumn(1); definition.AddDummyColumn(50); definition.AddDummyColumn(16); definition.AddDummyColumn(256); definition.AddDummyColumn(16); definition.SetExportHeaderLine(false); definition.SetTrimLineEnds(false); return definition; }
private DocumentFormatDefinitionBuilder <ChequeRow> GetDefinition() { var definition = new DocumentFormatDefinitionBuilder <ChequeRow>(string.Empty, false); definition.AddColumn(q => q.AccountNo, c => c.SetColumnWidth(12).SetAlignment(ColumnAlignment.Right).SetFillChar('0').ThrowOnOverflow()); definition.AddColumn(q => q.RecordType, c => c.SetExportFunc(EnumConvertFunc)); definition.AddColumn(q => q.SerialNumber, c => c.SetColumnWidth(10).SetAlignment(ColumnAlignment.Right).SetFillChar('0').ThrowOnOverflow()); definition.AddColumn(q => q.AmountCents, c => c.SetColumnWidth(12).SetAlignment(ColumnAlignment.Right).SetFillChar('0').ThrowOnOverflow()); definition.AddColumn(q => q.Date, c => c.SetColumnWidth(8).SetStringFormat("yyyyMMdd")); definition.AddDummyColumn(1); definition.AddDummyColumn(50); definition.AddDummyColumn(16); definition.AddDummyColumn(256); definition.AddDummyColumn(16); definition.SetExportHeaderLine(false); definition.SetTrimLineEnds(false); return(definition); }