public async Task Write()
        {
            var pd = new MockProcessDisplay();

            var writeFile = (CsvFile)m_WriteFile.Clone();

            writeFile.FileName = UnitTestInitializeCsv.GetTestPath("BasicCSVOut.txt");
            FileSystemUtils.FileDelete(writeFile.FileName);
            writeFile.FileFormat.FieldDelimiter = "|";

            var writer = new CsvFileWriter(writeFile, pd);

            var res = await writer.WriteAsync(writeFile.SqlStatement, 360, null, pd.CancellationToken);

            Assert.IsTrue(FileSystemUtils.FileExists(writeFile.FileName));
            Assert.AreEqual(7, res);
        }
        public async Task WriteDataTableHandleIssuesAsync()
        {
            using (var dataTable = new DataTable {
                TableName = "DataTable", Locale = CultureInfo.InvariantCulture
            })
            {
                dataTable.Columns.Add("ID", typeof(int));
                dataTable.Columns.Add("Text", typeof(string));
                for (var i = 0; i < 100; i++)
                {
                    var row = dataTable.NewRow();
                    row["ID"]   = i;
                    row["Text"] = "Text" + i.ToString(CultureInfo.CurrentCulture);
                    dataTable.Rows.Add(row);
                }

                var writeFile = new CsvFile {
                    ID = "Test.txt", FileName = UnitTestInitializeCsv.GetTestPath("Test.txt"), SqlStatement = "Hello"
                };
                writeFile.ColumnCollection.Add(new Column("Text", DataType.Integer));
                writeFile.Header = "##This is a header for {FileName}";
                writeFile.Footer = "##This is a Footer\r\n{Records} in file";
                var count = 0;
                using (var processDisplay = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
                {
                    var writer = new CsvFileWriter(writeFile, processDisplay);
                    writer.Warning += (sender, e) => { count++; };
                    using (var reader = new DataTableWrapper(dataTable))
                    {
                        // await reader.OpenAsync(processDisplay.CancellationToken);
                        Assert.AreEqual(100, await writer.WriteAsync(reader, processDisplay.CancellationToken), "Records");
                    }

                    Assert.AreEqual(100, count, "Warnings");
                }

                Assert.IsTrue(File.Exists(writeFile.FileName));
            }
        }