Beispiel #1
0
        public void CanReadFiles()
        {
            var csvData = File.ReadAllText(@"TestFiles\sentences.csv");
            var result  = CsvAnalyzer.Analyze(csvData);

            Assert.AreEqual(',', result.Separator);
        }
Beispiel #2
0
        public void CanFindColonInQuotedFile()
        {
            var data   = File.ReadAllText(@"TestFiles\QuotedWithSeparator.csv");
            var result = CsvAnalyzer.Analyze(data);

            Assert.AreEqual(',', result.Separator);
        }
        public void CanHandleQuotesInText()
        {
            var data   = File.ReadAllText(@"TestFiles\TabsWithQuotesInText.csv");
            var result = CsvAnalyzer.Analyze(data);

            Assert.AreEqual('\t', result.Separator);
        }
Beispiel #4
0
        private void Analyze(bool silent)
        {
            var watch    = new DiagnosticTimer();
            var bufferId = NotepadPPGateway.GetCurrentBufferId();

            var textLength = PluginBase.CurrentScintillaGateway.GetTextLength();
            var text       = PluginBase.CurrentScintillaGateway.GetTextRange(0, Math.Min(100000, textLength));

            watch.Checkpoint("GetText");

            var csvSettings = CsvAnalyzer.Analyze(text);

            if (csvSettings.Separator == '\0' && csvSettings.FieldWidths == null)
            {
                if (silent)
                {
                    return;
                }

                var askUserDialog = new ParseSettings(csvSettings);
                this.UiThread(() => askUserDialog.ShowDialog());
                if (askUserDialog.DialogResult != DialogResult.OK)
                {
                    return;
                }
                csvSettings = askUserDialog.Settings;
            }
            watch.Checkpoint("Analyze");

            using (var sr = ScintillaStreams.StreamAllText())
            {
                this.Parse(csvSettings, watch, sr, bufferId);
            }
        }
Beispiel #5
0
        public void CanFindSemicolonInBigFile()
        {
            var csvData = Helpers.GetResource("semicolon.csv");
            var result  = CsvAnalyzer.Analyze(csvData);

            Assert.AreEqual(';', result.Separator);
        }
Beispiel #6
0
        public void CanDetectTabW3C()
        {
            var csvData = File.ReadAllText(@"TestFiles\w3c.log").Replace(' ', '\t');
            var result  = CsvAnalyzer.Analyze(csvData);

            Assert.AreEqual('\t', result.Separator);
            Assert.AreEqual('#', result.CommentCharacter);
        }
Beispiel #7
0
        public void Can_detect_xml_file()
        {
            Main.Settings.ParseXmlFiles = true;
            var data = File.ReadAllText("TestFiles\\simple.xml");

            var result = CsvAnalyzer.Analyze(data);

            Assert.IsTrue(result is XmlSettings);
        }
Beispiel #8
0
        public void CanParseW3c()
        {
            var csvData  = File.ReadAllText(@"TestFiles\w3c.log");
            var settings = CsvAnalyzer.Analyze(csvData);

            var data = settings.Parse(csvData);

            Assert.AreEqual(6, data.Count, "Number of rows incorrect");
        }
Beispiel #9
0
        public void CanParseXml()
        {
            Main.Settings.ParseXmlFiles = true;
            var csvData  = File.ReadAllText(@"TestFiles\simple.xml");
            var settings = CsvAnalyzer.Analyze(csvData);

            var data = settings.Parse(csvData);

            Assert.AreEqual(3, data.Count, "Number of rows incorrect");
        }
Beispiel #10
0
        public void Issue10QuotedCommas()
        {
            var data =
                "\"ControlID\",\"Status\",\"FeatureName\",\"ResourceGroupName\",\"ResourceName\",\"ChildResourceName\",\"ControlSeverity\",\"IsBaselineControl\",\"SupportsAutoFix\",\"Description\",\"Recommendation\",\"DetailedLogFile\"\r\n\"test123\",\"test123\",\"test123\",\"test123\",\"test123\",\"test123\",\"test123\",\"test123\",\"test123\",\"test123\",\"comma goes here, \",\"test123\"";

            var result = CsvAnalyzer.Analyze(data);

            Assert.AreEqual(',', result.Separator);
            Assert.AreEqual('"', result.TextQualifier);
        }
Beispiel #11
0
        public void Routine()
        {
            var analyzer = new CsvAnalyzer();

            analyzer.Path      = @"myfile.csv";
            analyzer.Separator = ',';

            var result = analyzer.SelectByColummData(2, "Alberto");

            Assert.AreEqual("3,Verdi,Alberto,03/08/1987;", result);
        }
Beispiel #12
0
        public void NoResult()
        {
            var analyzer = new CsvAnalyzer();

            analyzer.Path      = @"myfile.csv";
            analyzer.Separator = ',';

            var result = analyzer.SelectByColummData(2, "Enzo");

            Assert.AreEqual(string.Empty, result);
        }
Beispiel #13
0
        public void Issue10UnquotedStringsWithQuotes()
        {
            var data = "artnr, description, cost\n"
                       + "B12332, a 9\" nail, 123.32\n"
                       + "C12322, Screw, 22.1\n";

            var result = CsvAnalyzer.Analyze(data);

            Assert.AreEqual(',', result.Separator);
            Assert.AreEqual('\0', result.TextQualifier);
        }
        public void AnalyzeTest4()
        {
            var analyzer = new CsvAnalyzer();

            analyzer.Analyze(TestFiles.GoogleCsv);

            Assert.IsTrue(analyzer.HasHeaderRow);
            Assert.AreEqual(',', analyzer.FieldSeparator);

            Assert.AreEqual(analyzer.Options, CsvOptions.Default);
        }
Beispiel #15
0
        public void CanDetectFixedWidth()
        {
            var csvData = "header1  header2  header2  and4\n"
                          + "data1    123      12.34    qwfw\n"
                          + "more 00  23       2.34     frfrsd\n"
                          + "data3    111      11.34    vrvvv fvf\n";
            var result = CsvAnalyzer.Analyze(csvData);

            Assert.IsNotNull(result.FieldWidths);
            Assert.AreEqual(4, result.FieldWidths.Count);
        }
Beispiel #16
0
        public void CanParseTabSeparatedWithQuotesInText()
        {
            Main.Settings.ParseXmlFiles = true;
            var csvData  = File.ReadAllText(@"TestFiles\TabsWithQuotesInText.csv");
            var settings = CsvAnalyzer.Analyze(csvData);

            settings.UseQuotes = false;
            var data = settings.Parse(csvData);

            Assert.AreEqual(6, data.Count, "Number of rows incorrect");
            Assert.AreEqual("\"A4\" 210x325mm utskick, v24, h04poo, nära,7st butiker", data[5][3]);
        }
Beispiel #17
0
        public void CanFindCommaAsSeparator()
        {
            var csvData = "header1,header2,header2\n"
                          + "data1,123,12.34\n"
                          + "data1,123,12.34\n"
                          + "data1,123,12.34\n"
                          + "data1,123,12.34\n"
                          + "data1,123,12.34\n";
            var result = CsvAnalyzer.Analyze(csvData);

            Assert.AreEqual(',', result.Separator);
        }
Beispiel #18
0
        public void UnquotedStringsWithQuotesOnEveryRow()
        {
            var data = "artnr, description, cost\n"
                       + "B12332, a 9\" nail, 123.32\n"
                       + "C12322, TV 30\", 123.32\n"
                       + "C1222, Samsung 7\", 4000.32\n"
                       + "C3P0, Cyborg 90\", 5.33\n";

            var result = CsvAnalyzer.Analyze(data);

            Assert.AreEqual(',', result.Separator);
            Assert.AreEqual('\0', result.TextQualifier);
        }
        public void AnalyzeTest3()
        {
            var analyzer = new CsvAnalyzer();

            analyzer.Analyze(TestFiles.AnalyzerTestCsv);

            Assert.IsTrue(analyzer.HasHeaderRow);
            Assert.AreEqual(';', analyzer.FieldSeparator);
            CollectionAssert.AreEqual(analyzer.ColumnNames, new string[] { "Eins", "eins", "zwei", "drei" });

            Assert.IsTrue(analyzer.Options.IsSet(CsvOptions.CaseSensitiveKeys));
            Assert.IsTrue(analyzer.Options.IsSet(CsvOptions.TrimColumns));
            Assert.IsFalse(analyzer.Options.IsSet(CsvOptions.ThrowOnTooFewFields));
            Assert.IsFalse(analyzer.Options.IsSet(CsvOptions.ThrowOnTooMuchFields));
            Assert.IsFalse(analyzer.Options.IsSet(CsvOptions.DisableCaching));
            Assert.IsFalse(analyzer.Options.IsSet(CsvOptions.ThrowOnEmptyLines));
        }
Beispiel #20
0
        public void CanParseXml()
        {
            Main.Settings.ParseXmlFiles = true;
            var csvData  = File.ReadAllText(@"TestFiles\simple.xml");
            var settings = CsvAnalyzer.Analyze(csvData);

            var data = settings.Parse(csvData);

            Assert.AreEqual(3, data.Count, "Number of rows incorrect");
            CollectionAssert.AreEquivalent(new[] { "name", "age", "foo" }, settings.FieldNames);
            var expectedData = new List <string[]>
            {
                new[] { "first", "45", "bar" },
                new[] { "second", "46", "bar" },
                new[] { "third", "47", "bar" },
            };

            this.AssertDataEqual(expectedData, data);
        }
        public void CsvAnalyzerTest()
        {
            var analyzer = new CsvAnalyzer();

            Assert.IsInstanceOfType(analyzer, typeof(CsvAnalyzer));
        }
Beispiel #22
0
        public void FileNotPresent()
        {
            var analyzer = new CsvAnalyzer();

            analyzer.Path = @"myfileXX.csv";
        }
        public void AnalyzeTest1()
        {
            var analyzer = new CsvAnalyzer();

            analyzer.Analyze(null !);
        }
        public void AnalyzeTest2()
        {
            var analyzer = new CsvAnalyzer();

            analyzer.Analyze("  ");
        }
Beispiel #25
0
    public static void TestDeserializingClassesFromCsv()
    {
        const string csvFileName = "Objects.csv";

        // Create a nonstandard CSV-File
        File.WriteAllText(csvFileName, new StringBuilder()
                          .AppendLine(
                              "Unterrichtstag;Unterrichtsbeginn;Vollständiger Name;Unterrichtsfach;")
                          .AppendLine(
                              "Wednesday;14:30;Susi Meyer;Piano")
                          .AppendLine(
                              "Thursday;15:15;Carl Czerny;Piano;")
                          .AppendLine(
                              ";;Frederic Chopin")
                          .ToString());

        // Initialize a CsvRecordWrapper which retrieves the data from
        // the CSV-Columns and converts it to the right data type.
        // Aliases with wildcards can be used to match the column-headers
        // of the CSV file.
        var wrapper = new CsvRecordWrapper();

        // Reuse a converter for more than one property:
        ICsvTypeConverter stringConverter =
            CsvConverterFactory.CreateConverter(CsvTypeCode.String, nullable: true);

        wrapper.AddProperty
        (
            new CsvProperty("Name",
                            new string[] { "*name" },
                            stringConverter)
        );
        wrapper.AddProperty
        (
            new CsvProperty("Subject",
                            new string[] { "*subject", "*fach" },
                            stringConverter)
        );
        wrapper.AddProperty
        (
            new CsvProperty("LessonDay",
                            new string[] { "*day", "*tag" },
                            CsvConverterFactory
                            .CreateEnumConverter <DayOfWeek>(nullable: true))
        );
        wrapper.AddProperty
        (
            new CsvProperty("LessonBegin",
                            new string[] { "*begin?" },
                            CsvConverterFactory
                            .CreateConverter(CsvTypeCode.TimeSpan, nullable: true))
        );

        // Analyze the CSV file to determine the right parameters
        // for proper reading:
        var analyzer = new CsvAnalyzer();

        analyzer.Analyze(csvFileName);

        // Read the CSV file:
        using var reader =
                  new CsvReader(csvFileName,
                                analyzer.HasHeaderRow,
                                analyzer.Options,
                                analyzer.FieldSeparator);

        var pupilsList = new List <Pupil>();

        foreach (CsvRecord record in reader.Read())
        {
            wrapper.Record = record;

            // Using a dynamic variable enables you to assign
            // the properties without having to explicitely cast them
            // to the target data type:
            dynamic dynWrapper = wrapper;

            pupilsList.Add(new Pupil
            {
                Name        = dynWrapper.Name,
                LessonBegin = dynWrapper.LessonBegin,
                LessonDay   = dynWrapper.LessonDay,
                Subject     = dynWrapper.Subject
            });
        }

        // Write the results to Console:
        foreach (Pupil pupil in pupilsList)
        {
            Console.WriteLine(pupil);
            Console.WriteLine();
        }
    }