public void ParseLine(PrismCustomerInfoContext context, string line) { if (string.IsNullOrWhiteSpace(line)) { return; } var fields = line.Split('|'); var indicator = fields.AtIndex(0); switch (indicator) { case "HDR": context.ResolveToFile(); ParseHeader(context, fields); break; case "ER1": case "ER2": ParseError(context, fields); break; case "SUM": context.ResolveToFile(); break; } }
public void When_Parsing_Customer_Info_Error_With_Field_Zero_Equal_To_ER1_Then_Record_Type_Id_Is_Set_To_One() { // arrange const int expected = 1; var context = new PrismCustomerInfoContext(); var fileModel = new TypeCustomerInfoFile(); context.PushModel(fileModel); var fields = new[] { "ER1", "", "PREMNO", "" }; // act concern.ParseError(context, fields); context.ResolveToFile(); // assert var results = context.Results; var collection = results.TypeHeaders; var model = collection.First(); var errors = model.ErrorRecords; Assert.AreEqual(1, errors.Length); var error = errors[0]; Assert.AreEqual(expected, error.RecordTypeId); Assert.IsNull(error.FieldName); }
public IMarketFileParseResult Parse(Stream stream) { var context = new PrismCustomerInfoContext(); using (var reader = new StreamReader(stream)) { string customerInfoFileLine; while ((customerInfoFileLine = reader.ReadLine()) != null) { ParseLine(context, customerInfoFileLine); } context.ResolveToFile(); } return(context.Results); }
public void When_Parsing_Customer_Info_Header_With_Field_One_Indicating_Response_Then_File_Type_Id_Is_Set_To_Two() { // arrange const int expected = 2; var context = new PrismCustomerInfoContext(); var fields = new[] { "", "MTCRCUSTOMERINFORMATIONERCOTRESPONSE", "", "" }; // act concern.ParseHeader(context, fields); context.ResolveToFile(); // assert var results = context.Results; var collection = results.TypeHeaders; Assert.AreEqual(1, collection.Length); var model = collection.First(); Assert.AreEqual(expected, model.FileTypeId); }