/// <summary> /// This method returns the entity items from the CSV data file collection. /// </summary> /// <typeparam name="T">The transit entity type.</typeparam> /// <param name="tType">The transit file type.</param> /// <param name="headersRequired">The required headers.</param> /// <param name="conv">The conversion function.</param> /// <returns>Returns an amalgamated collection of entities.</returns> private IEnumerable <T> TransitEntityEnum <T>( TransitFileType tType, IEnumerable <KeyValuePair <string, bool> > headers, Func <CSVRowItem, T> conv) { if (!HasTransitData(tType)) { yield break; } using (Stream data = mData.GetStream(tType)) { if (data == null) { throw new ArgumentNullException(); } CSVStreamOptions opts = new CSVStreamOptions(Encoding.UTF8, ',', true, false, null, null); CSVStreamEnumerator <T> item = new CSVStreamEnumerator <T>(data, conv, opts); foreach (var entity in item) { yield return(entity); } } }
/// <summary> /// This is a generic test method that processes a stream through the CSV enumerator. /// </summary> /// <param name="resource">The resource name.</param> /// <param name="totalItems">The number of items to check against, or null if not required.</param> /// <param name="totalHeaders">The total number of headers to confirm, or null if not needed.</param> /// <returns>Returns the number of records in the CSV file.</returns> private double TestCSVFile(string resource, int? totalItems, int? totalHeaders) { int items = 0; DateTime start = DateTime.Now; try { using (Stream data = GetType().ResourceAsStream(resource)) { CSVStreamEnumerator enumCSV = new CSVStreamEnumerator(data); if (totalHeaders.HasValue) { Assert.AreEqual(totalHeaders.Value, enumCSV.Headers.Count); } foreach (CSVRowItem item in enumCSV) { string line = item.ToString(); items++; } } } catch (CSVStreamEnumeratorException csvex) { } catch (Exception ex) { } TimeSpan length = DateTime.Now - start; if (totalItems.HasValue) Assert.AreEqual(items, totalItems.Value); return length.TotalSeconds/(double)(items+1); }
public void TestCSV_RFC4180() { using (Stream data = GetType().ResourceAsStream("Ximura.UnitTest.Messaging.CSV.Examples.TestRFC4180.csv")) { CSVStreamEnumerator enumCSV = new CSVStreamEnumerator(data); int items = 0; foreach (CSVRowItem item in enumCSV) { string line = item.ToString(); items++; } } }