예제 #1
0
        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;
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }