示例#1
0
        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);
        }