private PscCsv ProcessCsv <T>(PscCsv pscCsv, ICsvLineSplitter CsvLineplitter /*Ilogger ?*/) { if (pscCsv.Data != null && pscCsv.Data.Lines != null) { //Set CSvHeader items from the first line - Add errors if (pscCsv.HasHeader) { pscCsv.Headers.CsvHeaderLine = pscCsv.Data.Lines.First().Line ?? ""; //run method/s to calcualte header properties from T } else /*TODO: ? */ } { //Set footer items from last line items, remove last line - add errors if (pscCsv.HasFooter) { /* Remove last line*/ if (pscCsv.Data.Lines.Last().Line == pscCsv.Data.Lines.First().Line) { //TODO : can this be set to represent no data? } else { //Anti-pattern warning - footer needs an interface, be extensible for future requirements var lastLine = pscCsv.Data.Lines.Last().Line; var footerElements = CsvLineplitter.CsvSplit( lastLine, pscCsv.IsQuoted, true, pscCsv.Separator, pscCsv.Quote); //Run footer get and set } } }
public void CsvSplit_CorrectCsvString_IsSplitIntoStringList() { //Arrange string source = "\"AccountOfficeReference\",\"Address1\",\"Address2\",\"Address3\",\"Address4\",\"Address5\",\"BacsReferenceNo\",\"BankAccountName\",\"BankAccountNo\",\"BankBranch\",\"BankName\",\"BankSortCode\",\"CompanyName\",\"CompanyNo\",\"CompanyWeeks\",\"FourWeeklyDivisor\",\"HourlyDivisor\",\"MonthlyDivisor\",\"PayFrequency\",\"PeriodsPerYear\",\"QuarterlyDivisor\",\"TaxDistrict\",\"TaxOfficeNo\",\"TaxReference\",\"TwoWeeklyDivisor\",\"WeeklyDivisor\",\"WebSystemType\",\"AdditionalReports\",\"EmailPayslips\",\"EmailReports\",\"OutputMethod\",\"P11D\",\"PaidByBacs\",\"PayByDirectDebit\",\"PayDay\",\"PensionByWeb\",\"PostMethod\",\"SecondaryBacs\",\"PrintReports\",\"PrintEEsPayslip\",\"PrintERsPayslip\",\"NormalPayDay\",\"OrganisationName\",\"EmployeeNoFormat\",\"PayslipERsPension1\",\"PayslipERsPension2\",\"PrintPaymentDate\",\"OmniSlip\""; List <string> expectedList = new List <string>() { "AccountOfficeReference", "Address1", "Address2", "Address3", "Address4", "Address5", "BacsReferenceNo", "BankAccountName", "BankAccountNo", "BankBranch", "BankName", "BankSortCode", "CompanyName", "CompanyNo", "CompanyWeeks", "FourWeeklyDivisor", "HourlyDivisor", "MonthlyDivisor", "PayFrequency", "PeriodsPerYear", "QuarterlyDivisor", "TaxDistrict", "TaxOfficeNo", "TaxReference", "TwoWeeklyDivisor", "WeeklyDivisor", "WebSystemType", "AdditionalReports", "EmailPayslips", "EmailReports", "OutputMethod", "P11D", "PaidByBacs", "PayByDirectDebit", "PayDay", "PensionByWeb", "PostMethod", "SecondaryBacs", "PrintReports", "PrintEEsPayslip", "PrintERsPayslip", "NormalPayDay", "OrganisationName", "EmployeeNoFormat", "PayslipERsPension1", "PayslipERsPension2", "PrintPaymentDate", "OmniSlip" }; //Act var result = _CsvLinesplitter.CsvSplit(source, true, true, ',', '"'); //Assert result.Should().BeEquivalentTo(expectedList); }