public void ParseFileTest() { // Arrange var ordersFilePath = Path.Combine(TestContext.DeploymentDirectory, "Orders.csv"); using(var reader = new StreamReader(ordersFilePath)) { var fileParser = new DelimiterSeparatedValuesFileParser<Order>(); // Act var parseResults = fileParser.Read(reader, delimiter: ',', includeHeaders: false); // Assert Assert.IsTrue(_orders.SequenceEqual(parseResults.Select(parseResult => parseResult.Instance))); } }
public static List <LineasFile> ObtieneDatosArchivo(string path) { try { List <LineasFile> lineas = new List <LineasFile>(); using (var reader = new StreamReader(path, Encoding.GetEncoding("iso8859-1"))) { var fileParser = new DelimiterSeparatedValuesFileParser <LineasFile>(); var parseResults = fileParser.Read(reader, delimiter: '|', includeHeaders: true); List <IEnumerable <string> > errores = null; foreach (var parseResult in parseResults) { if (parseResult.Errors != null && parseResult.Errors.Any()) { errores.Add(parseResult.Errors); } if (parseResult.Instance != null) { lineas.Add(parseResult.Instance); } } if (errores != null && errores.Any()) { List <string> mensajes = new List <string>(); errores.ForEach(l => mensajes.Add(l.FirstOrDefault())); // _logger.Error(mensajes); } } // _logger.Info("Se encontraron - " + lineas.Count + " - registros en el archivo de Líneas Vencidas y por Vencer."); if (MoverArchivo(path)) { Console.WriteLine($"Se proceso el archivo y el total de elementos el {lineas.Count}"); } else { Console.WriteLine($"No se proceso el archivo y el total de elementos el {lineas.Count}"); } return(lineas); } catch (Exception ex) { throw new Exception("La ruta del archivo " + path + " es incorrecta." + ex); } }
public void ParseFileWithErrorsTest() { // Arrange var ordersWithErrorsFilePath = Path.Combine(TestContext.DeploymentDirectory, "OrdersWithErrors.csv"); using(var reader = new StreamReader(ordersWithErrorsFilePath)) { var fileParser = new DelimiterSeparatedValuesFileParser<Order>(); // Act var parseResults = fileParser.Read(reader, delimiter: ',', includeHeaders: false); // Assert var actualLinesWithError = default(int); var actualFieldsWithError = default(int); foreach(var parseResult in parseResults) { Assert.IsNull(parseResult.Instance); if(parseResult.Errors.Any()) { actualLinesWithError++; actualFieldsWithError += parseResult.Errors.Count(); } } // In the OrdersWithErrors.csv file created when the test class is initialized // There are three lines with errors so the logger must be called three times var expectedLinesWithErrors = 3; Assert.AreEqual<int>(expectedLinesWithErrors, actualLinesWithError); // And there must be eight errors in the fields being parsed var expectedErrorsInFields = 8; Assert.AreEqual<int>(expectedErrorsInFields, actualFieldsWithError); } }