Exemple #1
0
        public async Task GetDataTableAsync3()
        {
            using (var processDisplay = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
            {
                var test3 = new CsvFile(UnitTestInitializeCsv.GetTestPath("WithEoFChar.txt"))
                {
                    FileFormat = { FieldDelimiter = "Tab" }
                };
                test3.ColumnCollection.Add(new Column("Memo")
                {
                    Ignore = true
                });
                using (var test = new CsvFileReader(test3, processDisplay))
                {
                    await test.OpenAsync(processDisplay.CancellationToken);

                    var dt = await test.GetDataTableAsync(-1, true, true, true, true, true, null,
                                                          processDisplay.CancellationToken);

                    // 10 columns 1 ignored one added for Start line one for Error Field one for Record No one
                    // for Line end
                    Assert.AreEqual((10 - 1) + 4, dt.Columns.Count);
                    Assert.AreEqual(19, dt.Rows.Count);
                }
            }
        }
Exemple #2
0
        public async Task FileCopy()
        {
            var dest = UnitTestInitializeCsv.GetTestPath("xyz.txt");

            try
            {
                using (var processDisplay = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
                {
                    processDisplay.Maximum = -100;

                    Assert.IsFalse(FileSystemUtils.FileExists(dest));
                    await FileSystemUtils.FileCopy(UnitTestInitializeCsv.GetTestPath("AllFormats.txt"), dest, false,
                                                   processDisplay);

                    Assert.IsTrue(FileSystemUtils.FileExists(dest));
                    Assert.AreEqual(-100, processDisplay.Maximum);

                    // Copy again, the old file should be overwritten
                    await FileSystemUtils.FileCopy(UnitTestInitializeCsv.GetTestPath("AlternateTextQualifiers.txt"), dest, true,
                                                   processDisplay);

                    Assert.IsTrue(FileSystemUtils.FileExists(dest));
                    Assert.AreEqual(new FileInfo(UnitTestInitializeCsv.GetTestPath("AlternateTextQualifiers.txt")).Length,
                                    new FileInfo(dest).Length);
                }
            }
            finally
            {
                FileSystemUtils.FileDelete(dest);
            }
        }
        public async Task WriteDataTableAsync()
        {
            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"] = i.ToString(CultureInfo.CurrentCulture);
                    dataTable.Rows.Add(row);
                }

                var writeFile = new CsvFile {
                    ID = "Test.txt", FileName = UnitTestInitializeCsv.GetTestPath("Test.txt"), SqlStatement = "Hello"
                };
                using (var processDisplay = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
                {
                    var writer = new CsvFileWriter(writeFile, processDisplay);
                    using (var reader = new DataTableWrapper(dataTable))
                    {
                        // await reader.OpenAsync(processDisplay.CancellationToken);
                        Assert.AreEqual(100, await writer.WriteAsync(reader, processDisplay.CancellationToken));
                    }
                }

                Assert.IsTrue(File.Exists(writeFile.FileName));
            }
        }
Exemple #4
0
        public async Task ReadJSon1TypedAsync()
        {
            var setting =
                new CsvFile(UnitTestInitializeCsv.GetTestPath("Larger.json"))
            {
                JsonFormat = true
            };

            using (var processDisplay = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
            {
                using (var jfr = new JsonFileReader(setting, processDisplay))
                {
                    await jfr.OpenAsync(processDisplay.CancellationToken);

                    await jfr.ReadAsync(processDisplay.CancellationToken);

                    Assert.AreEqual(new Guid("ef21069c-3d93-4e07-878d-00e820727f65"), jfr.GetGuid(0));
                    Assert.IsTrue((new DateTime(2020, 04, 03, 18, 45, 29, 573, DateTimeKind.Utc) -
                                   jfr.GetDateTime(1).ToUniversalTime()).TotalSeconds < 2);
                    Assert.AreEqual((short)0, jfr.GetInt16(5));
                    Assert.AreEqual((int)0, jfr.GetInt32(5));
                    Assert.AreEqual((long)0, jfr.GetInt64(5));
                    var val = new object[jfr.FieldCount];
                    jfr.GetValues(val);
                    Assert.IsNull(val[2]);
                }
            }
        }
        public async Task GetSampleValuesAsyncTest()
        {
            using (var dt = UnitTestStatic.GetDataTable(1000))
            {
                using (var dummy = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
                {
                    var reader = new DataTableWrapper(dt);
                    foreach (DataColumn col in dt.Columns)
                    {
                        var res = await DetermineColumnFormat.GetSampleValuesAsync(reader, 10,
                                                                                   new[] { col.Ordinal }, 10, "null",
                                                                                   dummy.CancellationToken);

                        if (col.ColumnName != "AllEmpty")
                        {
                            Assert.AreNotEqual(0, res[col.Ordinal].Values.Count, col.ColumnName);
                        }
                        else
                        {
                            Assert.AreEqual(0, res[col.Ordinal].Values.Count, col.ColumnName);
                        }
                    }
                }
            }
        }
        public async Task DetermineColumnFormatGetSampleValuesAsync2Async()
        {
            using (var dt = new DataTable())
            {
                dt.Columns.Add(new DataColumn {
                    ColumnName = "ID", DataType = typeof(string)
                });
                for (var i = 0; i < 150; i++)
                {
                    var row = dt.NewRow();
                    if (i == 10 || i == 47)
                    {
                        row[0] = "NULL";
                    }
                    row[0] = (i / 3).ToString(CultureInfo.InvariantCulture);
                    dt.Rows.Add(row);
                }

                using (var processDisplay = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
                {
                    using (var reader = new DataTableWrapper(dt))
                    {
                        string treatAsNull = string.Empty;
                        var    res         = await DetermineColumnFormat.GetSampleValuesAsync(reader, 0, new[] { 0 }, 20,
                                                                                              treatAsNull, processDisplay.CancellationToken);

                        Assert.IsTrue(res[0].RecordsRead >= 20);
                        Assert.AreEqual(20, res[0].Values.Count());
                    }
                }
            }
        }
 public void SetProcessTest()
 {
     using (var processDisplay = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
     {
         processDisplay.SetProcess("Test", -1, true);
     }
 }
        public async Task ColumnErrorDictionaryTest1Async()
        {
            var setting = new CsvFile
            {
                FileName       = UnitTestInitializeCsv.GetTestPath("Sessions.txt"),
                HasFieldHeader = true,
                ByteOrderMark  = true,
                FileFormat     = { FieldDelimiter = "\t" }
            };

            setting.ColumnCollection.AddIfNew(new Column("Start Date")
            {
                Ignore = true
            });

            using (var processDisplay = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
                using (var reader = new CsvFileReader(setting, processDisplay))
                {
                    await reader.OpenAsync(processDisplay.CancellationToken);

                    var test1 = new ColumnErrorDictionary(reader);
                    Assert.IsNotNull(test1);

                    // Message in ignored column
                    reader.HandleWarning(0, "Msg1");
                    reader.HandleError(1, "Msg2");

                    Assert.AreEqual("Msg2", test1.Display);
                }
        }
        public async Task GetSourceColumnInformationTestAsync()
        {
            var setting = new CsvFile
            {
                ID                 = "ID122",
                FileName           = UnitTestInitializeCsv.GetTestPath("BasicCSV.txt"),
                HasFieldHeader     = true,
                DisplayStartLineNo = false,
                SqlStatement       = "ID122",
                FileFormat         = { FieldDelimiter = "," }
            };

            using (var reader = new CsvFileReader(setting, null))
            {
                UnitTestInitializeCsv.MimicSQLReader.AddSetting(setting.ID,
                                                                await reader.GetDataTableAsync(0, false, setting.DisplayStartLineNo, setting.DisplayRecordNo,
                                                                                               setting.DisplayEndLineNo, false, null, UnitTestInitializeCsv.Token));
            }

            using (var processDisplay = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
            {
                var res1 = await DetermineColumnFormat.GetWriterColumnInformationAsync(setting.SqlStatement, setting.Timeout,
                                                                                       setting.FileFormat.ValueFormatMutable, setting.ColumnCollection.ReadonlyCopy(),
                                                                                       processDisplay.CancellationToken);

                Assert.AreEqual(6, res1.Count());
                setting.SqlStatement = null;

                var res2 = await DetermineColumnFormat.GetSqlColumnNamesAsync(setting.SqlStatement, setting.Timeout,
                                                                              processDisplay.CancellationToken);

                Assert.AreEqual(0, res2.Count());
            }
        }
        public async Task StartAsyncTestAsync()
        {
            var  myDataTable    = new DataTable();
            bool beginCalled    = false;
            bool finishedCalled = false;
            bool warningCalled  = false;
            bool refeshCalled   = false;

            Task refeshFunc(FilterType FilterType, CancellationToken CancellationToken) => Task.Run(() => refeshCalled = true);

            using (var tsde = new TwoStepDataTableLoader(dt => myDataTable = dt, () => myDataTable, refeshFunc, null, () => beginCalled = true, (x) => finishedCalled = true))
            {
                var csv = new CsvFile
                {
                    FileName   = UnitTestInitializeCsv.GetTestPath("BasicCSV.txt"),
                    FileFormat = { FieldDelimiter = ",", CommentLine = "#" }
                };

                using (var proc = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
                {
                    await tsde.StartAsync(csv, true, TimeSpan.FromMilliseconds(20), proc, (sender, args) => { warningCalled = true; });

                    Assert.IsTrue(refeshCalled);
                    Assert.IsFalse(warningCalled);
                    Assert.IsTrue(beginCalled);
                    Assert.IsTrue(finishedCalled);

                    Assert.AreEqual(8, myDataTable.Columns.Count());
                }
            }
        }
Exemple #11
0
        public async Task MiscTest()
        {
            using (var process = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
                using (var reader = new CsvFileReader(UnitTestHelper.ReaderGetAllFormats(), process))
                {
                    await reader.OpenAsync(process.CancellationToken);

                    var wrapper = new DataReaderWrapper(reader);
                    Assert.IsTrue(wrapper.HasRows);
                    try
                    {
                        var test = wrapper.GetEnumerator();
                    }
                    catch (NotImplementedException)
                    {
                        // ignore
                    }

                    try
                    {
                        wrapper.GetValues(new object[10]);
                    }
                    catch (NotImplementedException)
                    {
                        // ignore
                    }
                }
        }
Exemple #12
0
        public async Task OpenLogAsync()
        {
            var setting = new CsvFile(UnitTestInitializeCsv.GetTestPath("LogFile.json"))
            {
                JsonFormat = true
            };

            using (var dpd = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
                using (var jfr = new JsonFileReader(setting, dpd))
                {
                    await jfr.OpenAsync(dpd.CancellationToken);

                    await jfr.ReadAsync(dpd.CancellationToken);

                    Assert.AreEqual("level", jfr.GetColumn(1).Name);
                    Assert.AreEqual("Error", jfr.GetValue(1));

                    await jfr.ReadAsync(dpd.CancellationToken);

                    Assert.AreEqual("Reading EdgeAPI vw_rpt_transcript", jfr.GetValue(2));

                    await jfr.ReadAsync(dpd.CancellationToken);

                    Assert.AreEqual("System.Data.DataException", jfr.GetValue(4));
                }
        }
Exemple #13
0
        public async Task ReadJSon3Async()
        {
            var setting = new CsvFile(UnitTestInitializeCsv.GetTestPath("Jason3.json"))
            {
                JsonFormat = true
            };

            using (var dpd = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
                using (var jfr = new JsonFileReader(setting, dpd))
                {
                    await jfr.OpenAsync(dpd.CancellationToken);

                    Assert.AreEqual(2, jfr.FieldCount);
                    await jfr.ReadAsync(dpd.CancellationToken);

                    Assert.AreEqual(28L, jfr.GetValue(0));
                    await jfr.ReadAsync(dpd.CancellationToken);

                    Assert.AreEqual(56L, jfr.GetValue(0));
                    while (await jfr.ReadAsync(dpd.CancellationToken))
                    {
                    }

                    Assert.AreEqual(5, jfr.RecordNumber);
                }
        }
Exemple #14
0
        public async Task ReadJSon2Async()
        {
            var setting = new CsvFile(UnitTestInitializeCsv.GetTestPath("Jason2.json"))
            {
                JsonFormat = true
            };

            using (var dpd = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
                using (var jfr = new JsonFileReader(setting, dpd))
                {
                    await jfr.OpenAsync(dpd.CancellationToken);

                    Assert.AreEqual(7, jfr.FieldCount);
                    await jfr.ReadAsync(dpd.CancellationToken);

                    await jfr.ReadAsync(dpd.CancellationToken);

                    Assert.AreEqual("Loading defaults C:\\Users\\rnoldner\\AppData\\Roaming\\CSVFileValidator\\Setting.xml",
                                    jfr.GetValue(6));
                    while (await jfr.ReadAsync(dpd.CancellationToken))
                    {
                    }

                    Assert.AreEqual(29, jfr.RecordNumber);
                }
        }
        public async Task DetermineColumnFormatFillGuessColumnFormatWriterAsync()
        {
            var setting = new CsvFile
            {
                ID                 = "DetermineColumnFormatFillGuessColumnFormatWriter",
                FileName           = UnitTestInitializeCsv.GetTestPath("BasicCSV.txt"),
                DisplayStartLineNo = false,
                HasFieldHeader     = true,
                FileFormat         = { FieldDelimiter = "," }
            };

            using (var processDisplay = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
                using (var reader = new CsvFileReader(setting, null))
                {
                    await reader.OpenAsync(processDisplay.CancellationToken);

                    UnitTestInitializeCsv.MimicSQLReader.AddSetting(setting.ID,
                                                                    await reader.GetDataTableAsync(0, false, setting.DisplayStartLineNo, setting.DisplayRecordNo,
                                                                                                   setting.DisplayEndLineNo, false, null, UnitTestInitializeCsv.Token));
                }

            var writer = new CsvFile {
                SqlStatement = setting.ID
            };

            using (var processDisplay = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
            {
                await writer.FillGuessColumnFormatWriterAsync(true, processDisplay);

                Assert.AreEqual(6, writer.ColumnCollection.Count);
            }
        }
        public async Task GetSqlColumnNamesAsyncParameter()
        {
            using (var dummy = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
            {
                var backup = FunctionalDI.SQLDataReader;
                try
                {
                    FunctionalDI.SQLDataReader = null;
                    await DetermineColumnFormat.GetSqlColumnNamesAsync("Nonsense SQL", 60, dummy.CancellationToken);

                    Assert.Fail("Expected Exception not thrown");
                }
                catch (FileWriterException)
                {
                    // add good
                }
                catch (Exception ex)
                {
                    Assert.Fail("Wrong Exception Type: " + ex.GetType());
                }
                finally
                {
                    FunctionalDI.SQLDataReader = backup;
                }
            }
        }
 public void SetProcessTest1()
 {
     using (var processDisplay = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
     {
         processDisplay.Maximum = 5;
         processDisplay.SetProcess("Test", 100, true);
     }
 }
 public void SetProcessTest2()
 {
     using (var processDisplay = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
     {
         processDisplay.Maximum = 5;
         processDisplay.SetProcess(null, new ProgressEventArgs("Hallo", 2, false));
     }
 }
Exemple #19
0
 public void GetFileWriter()
 {
     using (var processDisplay = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
     {
         var res = FunctionalDI.GetFileWriter(m_CsvFile, processDisplay);
         Assert.IsInstanceOfType(res, typeof(IFileWriter));
     }
 }
        public async Task AllFormatsPipeReaderAsync()
        {
            var setting = new CsvFile(UnitTestInitializeCsv.GetTestPath("RealignColumn.txt"))
            {
                HasFieldHeader        = true,
                FileFormat            = { FieldDelimiter = "\t" },
                TryToSolveMoreColumns = true,
                AllowRowCombining     = true,
                SkipEmptyLines        = false
            };

            using (var processDisplay = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
                using (var test = new CsvFileReader(setting, processDisplay))
                {
                    await test.OpenAsync(processDisplay.CancellationToken);

                    // first five rows are good.
                    await test.ReadAsync(processDisplay.CancellationToken); // Line 2

                    await test.ReadAsync(processDisplay.CancellationToken); // Line 3

                    await test.ReadAsync(processDisplay.CancellationToken); // Line 4

                    await test.ReadAsync(processDisplay.CancellationToken); // Line 5

                    await test.ReadAsync(processDisplay.CancellationToken); // Line 6

                    // Issue row Column 3 = Text|6
                    await test.ReadAsync(processDisplay.CancellationToken); // Line 6

                    Assert.AreEqual("Text\tF", test.GetValue(3));

                    await test.ReadAsync(processDisplay.CancellationToken); // Line 7

                    await test.ReadAsync(processDisplay.CancellationToken); // Line 8

                    await test.ReadAsync(processDisplay.CancellationToken); // Line 9

                    await test.ReadAsync(processDisplay.CancellationToken); // Line 10

                    await test.ReadAsync(processDisplay.CancellationToken); // Line 11

                    Assert.AreEqual("Memo: A long text, \t multiple words 11", test.GetValue(5));
                    await test.ReadAsync(processDisplay.CancellationToken); // Line 12

                    await test.ReadAsync(processDisplay.CancellationToken); // Line 13

                    await test.ReadAsync(processDisplay.CancellationToken); // Line 14

                    await test.ReadAsync(processDisplay.CancellationToken); // Line 15

                    await test.ReadAsync(processDisplay.CancellationToken); // Line 16

                    await test.ReadAsync(processDisplay.CancellationToken); // Line 17

                    Assert.AreEqual("Memo: A long text\nmultiple words 17", test.GetValue(5));
                }
        }
Exemple #21
0
 public void GetFileWriter()
 {
     using (var processDisplay = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
     {
         m_StructuredFile.SqlStatement = "dummy";
         var res = FunctionalDI.GetFileWriter(m_StructuredFile, processDisplay);
         Assert.IsInstanceOfType(res, typeof(IFileWriter));
     }
 }
Exemple #22
0
        public async Task NewCsvFileGuessAllTestEmptyAsync()
        {
            using (var display = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
            {
                var det = await CsvHelper.GetDetectionResultFromFile(UnitTestInitializeCsv.GetTestPath("CSVTestEmpty.txt"), display);

                Assert.AreEqual(0, det.SkipRows);
            }
        }
Exemple #23
0
        public async Task NewCsvFileGuessAllSmallFile()
        {
            using (var display = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
            {
                var det = await CsvHelper.GetDetectionResultFromFile(UnitTestInitializeCsv.GetTestPath("employee.txt"), display, true);

                Assert.AreEqual(RecordDelimiterType.CRLF, det.NewLine);
            }
        }
Exemple #24
0
 public void GetFileReader()
 {
     m_CsvFile.FileName = UnitTestInitializeCsv.GetTestPath("BasicCSV.txt");
     using (var processDisplay = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
         using (var res = FunctionalDI.GetFileReader(m_CsvFile, TimeZoneInfo.Local.Id, processDisplay))
         {
             Assert.IsInstanceOfType(res, typeof(IFileReader));
         }
 }
Exemple #25
0
        public async Task GetCsvFileSettingFromExtensionAsync()
        {
            using (var processDisplay = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
            {
                var tuple = await CsvHelper.AnalyseFileAsync(UnitTestInitializeCsv.GetTestPath("BasicCSV.txt" + CsvFile.cCsvSettingExtension), true, true, true,
                                                             true, true, true, true, new FillGuessSettings(), processDisplay);

                Assert.AreEqual(1200, tuple.CodePageId);
            }
        }
Exemple #26
0
        public async Task NewCsvFileGuessAllHeadingsAsync()
        {
            using (var display = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
            {
                var det = await CsvHelper.GetDetectionResultFromFile(UnitTestInitializeCsv.GetTestPath("BasicCSV.txt"), display);

                Assert.AreEqual(0, det.SkipRows);
                Assert.AreEqual(",".WrittenPunctuationToChar(), det.FieldDelimiter.WrittenPunctuationToChar());
                Assert.AreEqual(1200, det.CodePageId); // UTF16_LE
            }
        }
Exemple #27
0
        public async System.Threading.Tasks.Task GetCsvFileSetting()
        {
            using (IProcessDisplay process = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
            {
                var result = await CsvHelper.AnalyseFileAsync(UnitTestInitializeCsv.GetTestPath("BasicCSV.txt"), true, true, true, true, true, true, false,
                                                              new FillGuessSettings(), process);

                Assert.IsTrue(result.HasFieldHeader);
                Assert.AreEqual(1200, result.CodePageId);
            }
        }
Exemple #28
0
        public async Task DepthTest()
        {
            using (var process = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
                using (var reader = new CsvFileReader(UnitTestHelper.ReaderGetAllFormats(), process))
                {
                    await reader.OpenAsync(process.CancellationToken);

                    var wrapper = new DataReaderWrapper(reader);
                    Assert.AreEqual(9, wrapper.Depth);
                }
        }
        public void CustomProcessDisplayTest()
        {
            var called = false;

            using (var processDisplay = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
            {
                processDisplay.Progress += (sender, args) => { called = true; };
                processDisplay.SetProcess("Test", -1, true);
                Assert.IsTrue(called);
            }
        }
        public void SetMaximum()
        {
            using (var processDisplay = new CustomProcessDisplay(UnitTestInitializeCsv.Token))
            {
                processDisplay.Maximum = 666;
                Assert.AreEqual(666, processDisplay.Maximum);

                processDisplay.Maximum = -1;
                Assert.AreEqual(-1, processDisplay.Maximum);
            }
        }