Пример #1
0
        /// <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++;
                }
            }
        }