/// <summary>Creates a new DelimitedClassBuilder.</summary>
        /// <param name="options">The specifications for the CSV file.</param>
        public CsvClassBuilder(CsvOptions options)
            : base(options.RecordClassName, options.Delimiter.ToString())
        {
            IgnoreFirstLines = options.HeaderLines;

            if (options.SampleFileName != string.Empty)
            {
                string firstLine = CommonEngine.RawReadFirstLines(options.SampleFileName, 1);

                if (options.HeaderLines > 0)
                {
                    foreach (string header in firstLine.Split(options.HeaderDelimiter == char.MinValue ? options.Delimiter : options.HeaderDelimiter))
                    {
                        AddField(StringHelper.ToValidIdentifier(header));
                    }
                }
                else
                {
                    int fieldsNbr = firstLine.Split(options.Delimiter).Length;
                    for(int i = 0; i < fieldsNbr; i++)
                        AddField(options.FieldsPrefix + i.ToString());
                }

            }
            else if (options.NumberOfFields > 0)
            {
                AddFields(options.NumberOfFields, options.FieldsPrefix);
            }
            else
                throw new BadUsageException("You must provide a SampleFileName or a NumberOfFields to parse a genric CSV file.");
        }
        public void ReadFileHeader2()
        {
            string file = TestCommon.GetPath("Good", "RealCsvComma1.txt");
            string classname = "CustomerComma";
            char delimiter = ',';

            var options = new CsvOptions(classname, delimiter, file);
            options.HeaderLines = 2;

            var engine = new CsvEngine(options);

            Assert.AreEqual(classname, engine.RecordType.Name);

            DataTable dt = engine.ReadFileAsDT(file);

            Assert.AreEqual(19, dt.Rows.Count);
            Assert.AreEqual(19, engine.TotalRecords);
            Assert.AreEqual(0, engine.ErrorManager.ErrorCount);

            Assert.AreEqual("CustomerID", dt.Columns[0].ColumnName);
        }
        private void RunTest(string file, char delimiter, char delimiterHdr, string classname)
        {
            var options = new CsvOptions(classname, delimiter, file);
            options.HeaderDelimiter = delimiterHdr;
            var engine = new CsvEngine(options);

            Assert.AreEqual(classname, engine.RecordType.Name);

            DataTable dt = engine.ReadFileAsDT(file);

            Assert.AreEqual(20, dt.Rows.Count);
            Assert.AreEqual(20, engine.TotalRecords);
            Assert.AreEqual(0, engine.ErrorManager.ErrorCount);

            Assert.AreEqual("CustomerID", dt.Columns[0].ColumnName);
        }