示例#1
0
 public static void AssertColumnDataInt(CsvDoc doc, string columnName, int startingRowIndex, int startingValue, int increment)
 {
     // Iterate over each cell in column.
     doc.ForEach <int>(columnName, 0, (row, col, val) =>
     {
         Assert.AreEqual(startingValue, val);
         startingValue += increment;
     });
 }
示例#2
0
        /// <summary>
        /// Map the objects.
        /// </summary>
        /// <param name="source"></param>
        /// <param name="errors"></param>
        /// <returns></returns>
        public IList <T> Map(object source, IErrors errors)
        {
            if (source == null || source.GetType() != typeof(CsvDoc))
            {
                return(new List <T>());
            }

            _doc = source as CsvDoc;
            return(Map(errors));
        }
示例#3
0
        public void CanParseCsvNoHeader(string filePath, string delimeter, string nonAlphaNumericTextExpected)
        {
            string text = ContentLoader.GetTextFileContent(filePath);
            CsvDoc csv  = Csv.LoadText(text, false, false, delimeter);

            // Check the csv data.
            CsvCheck.AssertColumnDataInt(csv, "0", 0, 1, 1);
            CsvCheck.AssertColumnData(csv, "1", 0, nonAlphaNumericTextExpected);
            CsvCheck.AssertColumnData(csv, "2", 0, @"C:\pictures\100_01.JPG");
            CsvCheck.AssertColumnDataDate(csv, "3", 0, DateTime.Parse("4/10/2009"), 1);
        }
示例#4
0
        public void CanParseCsv_WithNewLines()
        {
            string expected = "Testing" + Environment.NewLine + "new line";
            string text     = ContentLoader.GetTextFileContent("Csv.Csv_MultiLine.csv");
            CsvDoc csv      = Csv.LoadText(text, true);

            // Check the csv data.
            CsvCheck.AssertColumnDataInt(csv, "Id", 0, 1, 1);
            CsvCheck.AssertColumnData(csv, "NonAlphaNumeric", 0, @"(`~!@#$%^&*()_+-=[]\{}|<>?./;:)");
            CsvCheck.AssertColumnData(csv, "Description", 0, expected);
            CsvCheck.AssertColumnDataDate(csv, "Date", 0, DateTime.Parse("4/10/2009"), 1);
        }
示例#5
0
        public void CanParseFailed1()
        {
            string text = "Id,Name" + Environment.NewLine
                          + "0,Art";

            CsvDoc doc = Csv.LoadText(text, true);

            Assert.IsTrue(doc.Columns.Contains("Id"));
            Assert.IsTrue(doc.Columns.Contains("Name"));
            Assert.AreEqual(doc.Get <string>(0, "Id"), "0");
            Assert.AreEqual(doc.Get <string>(0, "Name"), "Art");
        }
示例#6
0
        /// <summary>
        /// Run the application.
        /// </summary>
        public override BoolMessageItem Execute()
        {
            //<doc:example>
            // See CommonLibrary.UnitTests Source code for actual csv files.
            string text = GetSampleCsv();
            CsvDoc csv  = Csv.LoadText(text, true);

            // 1. Get cell at row 0, column 1
            string cell0 = csv.Get <string>(0, 1);

            // 2. Get cell at row 0, column called "FilePath"
            string cell2 = csv.Get <string>(0, "FilePath");

            // 3. Number of columns
            var colCount = csv.Columns.Count;

            // 4. Number of rows
            var rowCount = csv.Data.Count;

            // 5. Column name at index 2
            var col2 = csv.Columns[1];

            // 6. Get int id at row 2
            var id = csv.Get <int>(2, 0);

            // 7. Iterate over all the cells in column named "Date" starting at row 0.
            csv.ForEach <DateTime>("Date", 0, (row, col, val) =>
            {
                Console.WriteLine(string.Format("Row[{0}]Col[{1}] : {2}", row, col, val.ToString()));
            });

            // 8. Get the csv data as a datatable.
            DataTable table = csv.ToDataTable("My_Sample_Data");

            // 9. Iterate over rows / columns
            for (int row = 0; row < csv.Data.Count; row++)
            {
                for (int col = 0; col < csv.Columns.Count; col++)
                {
                    string cellVal = csv.Data[row][col] as string;
                }
            }
            //</doc:example>
            return(BoolMessageItem.True);
        }
示例#7
0
        public void CanParseCsvAndGetTypedVal()
        {
            string text = "'Id', 'Name',   'Desc'" + Environment.NewLine
                          + "'0',  'Art',    'Art class'" + Environment.NewLine
                          + "'1',  'Sports', 'all sports'";

            CsvDoc doc = Csv.LoadText(text, true);

            Assert.IsTrue(doc.Columns.Contains("Id"));
            Assert.IsTrue(doc.Columns.Contains("Name"));
            Assert.IsTrue(doc.Columns.Contains("Desc"));
            Assert.AreEqual(doc.Get <string>(0, "Id"), "0");
            Assert.AreEqual(doc.Get <string>(0, "Name"), "Art");
            Assert.AreEqual(doc.Get <string>(0, "Desc"), "Art class");
            Assert.AreEqual(doc.Get <string>(1, "Id"), "1");
            Assert.AreEqual(doc.Get <string>(1, "Name"), "Sports");
            Assert.AreEqual(doc.Get <string>(1, "Desc"), "all sports");
        }
示例#8
0
        public void CanParseCsv()
        {
            string text = "'Id', 'Name',   'Desc'" + Environment.NewLine
                          + "'0',  'Art',    'Art class'" + Environment.NewLine
                          + "'1',  'Sports', 'all sports'";

            CsvDoc doc = Csv.LoadText(text, true);

            Assert.IsTrue(doc.Columns.Contains("Id"));
            Assert.IsTrue(doc.Columns.Contains("Name"));
            Assert.IsTrue(doc.Columns.Contains("Desc"));
            Assert.IsTrue(string.Compare((string)doc.Data[0]["Id"], "0") == 0);
            Assert.IsTrue(string.Compare((string)doc.Data[0]["Name"], "Art") == 0);
            Assert.IsTrue(string.Compare((string)doc.Data[0]["Desc"], "Art class") == 0);
            Assert.IsTrue(string.Compare((string)doc.Data[1]["Id"], "1") == 0);
            Assert.IsTrue(string.Compare((string)doc.Data[1]["Name"], "Sports") == 0);
            Assert.IsTrue(string.Compare((string)doc.Data[1]["Desc"], "all sports") == 0);
        }
示例#9
0
        public void DoCsvLoad()
        {
            // This is a LEXICAL parser.
            // So this can handle quoted and non-quoted values
            // where the separator "," can be inside the quotes such as in 'Art, Classes'
            string csv = "Id, Name,      'Desc'" + Environment.NewLine
                         + "0,  Art,       'Art classes'" + Environment.NewLine
                         + "1,  Painting,  'Any type of painting' " + Environment.NewLine
                         + "2,  Sports,    'Sports classes'" + Environment.NewLine
                         + "3,  Boxing,	 'Boxing classes'";
            CsvDoc doc = new CsvDoc(csv, false);

            Logger.Info("====================================================");
            Logger.Info("CSV FILES ");
            Logger.Info("Columns : " + doc.Columns.ToString());
            Logger.Info("Row 1 - Col 1 : " + doc.Data[0][0]);
            Logger.Info("Row 2 - Col 2: " + doc.Data[1][1]);
            Logger.Info("Row 3['Name'] : " + doc.Data[2]["name"].ToString());
            Logger.Info(Environment.NewLine);
        }
示例#10
0
        public void CanParseCsv(string filePath, char delimeter, string nonAlphaNumericTextExpected, bool expectEscapedQuote)
        {
            string text = ContentLoader.GetTextFileContent(filePath);

            text = CultureInfoHelper.FixDates(text);
            CsvDoc csv = Csv.LoadText(text, true, false, delimeter);

            // Check the csv data.
            CsvCheck.AssertColumnDataInt(csv, "Id", 0, 1, 1);
            CsvCheck.AssertColumnData(csv, "NonAlphaNumeric", 0, nonAlphaNumericTextExpected);
            if (!expectEscapedQuote)
            {
                CsvCheck.AssertColumnData(csv, "FilePath", 0, @"C:\pictures\100_01.JPG");
            }
            else
            {
                CsvCheck.AssertColumnData(csv, "FilePath", 0, @"C"":\pictures\100_01.JPG");
            }
            CsvCheck.AssertColumnDataDate(csv, "Date", 0, DateTime.Parse(CultureInfoHelper.FixDates("4/10/2009")), 1);
        }
        public void CanMapFromCsv()
        {
            var    csv        = LoadDataCsv();
            var    io         = new ImportExportService <Conference>();
            CsvDoc data       = new CsvDoc(csv, false);
            var    boolresult = io.LoadText(csv, "csv");
            var    result     = boolresult.Item;

            Assert.AreEqual(result[0].Title, data.Get <string>(0, "Title"));
            Assert.AreEqual(result[0].StartDate.Date, DateTime.Today.Date);
            Assert.AreEqual(result[0].StartTime, new TimeSpan(21, 30, 0));
            Assert.AreEqual(result[0].IsFree, true);
            Assert.AreEqual(result[0].MaxSeats, data.Get <int>(0, "MaxSeats"));
            Assert.AreEqual(result[0].Cost, 250);
            Assert.AreEqual(result[0].Url, data.Get <string>(0, "Url"));

            Assert.AreEqual(result[1].Title, data.Get <string>(1, "Title"));
            Assert.AreEqual(result[1].StartDate.Date, DateTime.Today.AddDays(4).Date);
            Assert.AreEqual(result[1].StartTime, new TimeSpan(11, 30, 0));
            Assert.AreEqual(result[1].IsFree, false);
            Assert.AreEqual(result[1].MaxSeats, data.Get <int>(1, "MaxSeats"));
            Assert.AreEqual(result[1].Cost, 251);
            Assert.AreEqual(result[1].Url, data.Get <string>(1, "Url"));
        }
示例#12
0
        /// <summary>
        /// Map items from the dictionary data to items of Type T.
        /// Each key in the data corresponds to a nested IDictionary which contains key/value
        /// pairs representing the properties/values of the type T.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="path"></param>
        /// <returns></returns>
        public static IList <T> MapCsvFile <T>(string path) where T : class, new()
        {
            var doc = new CsvDoc(path, true);

            return(MapCsv <T>(doc));
        }
示例#13
0
 /// <summary>
 /// Map items from the dictionary data to items of Type T.
 /// Each key in the data corresponds to a nested IDictionary which contains key/value
 /// pairs representing the properties/values of the type T.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="data">The data.</param>
 /// <returns></returns>
 public static IList <T> MapCsv <T>(CsvDoc data) where T : class, new()
 {
     return(MapCsv <T>(data, null));
 }
示例#14
0
        /// <summary>
        /// Map items from the dictionary data to items of Type T.
        /// Each key in the data corresponds to a nested IDictionary which contains key/value
        /// pairs representing the properties/values of the type T.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="data">The data.</param>
        /// <returns></returns>
        public static IList <T> MapCsv <T>(string data) where T : class, new()
        {
            CsvDoc doc = new CsvDoc(data, false);

            return(MapCsv <T>(doc, null));
        }
示例#15
0
 /// <summary>
 /// Initialize with csv doc.
 /// </summary>
 /// <param name="doc"></param>
 public MapperCsv(CsvDoc doc)
 {
     _doc = doc;
 }