public void TestExpectingValidFilepathAssignmentToClassMemberWhenCalledWithValidFilepath()
        {
            string   filepath = @"EmptySample.csv";
            CsvInput csvInput = new CsvInput(filepath);

            Assert.Equal("EmptySample.csv", csvInput.Filepath);
        }
Esempio n. 2
0
        public void CheckParserRuleSetException()
        {
            var parser = new CsvInput <Output>
            {
                Converter = elements => new Output
                {
                    Id          = int.Parse(elements[0]),
                    Description = elements[1],
                    Factor      = double.Parse(elements[2])
                }
            };

            parser.ParserRuleSet.AddRange(new[] { CsvHelper.IsValidInt, CsvHelper.NoRule, CsvHelper.NoRule });

            var input = new[] {
                "1;Test;0",
                "2;Test;0.4",
                "3;Test;0,5",
                "4;;7",
                "5;Test;x"
            };

            var results = parser.Parse(input);

            results.Parsed.Should().BeEmpty();
            results.Warnings.Should().HaveCount(1);
            results.Warnings[0].Explanation.Should().StartWith("An exception occurred while parsing data.");
        }
        public void TestExpectingExceptionWhenFileCouldNotBeFoundOrOpened()
        {
            string   filepath = @"D:\a\DummyReviews\DummyReviews\SenderTests\TestSample2.csv";
            CsvInput csvInput = new CsvInput(filepath);

            Assert.Throws <FileNotFoundException>(() => csvInput.InputExceptionHandler());
        }
Esempio n. 4
0
        public void CheckParserRuleSetMissingElements()
        {
            var parser = new CsvInput <Output>
            {
                Converter = elements => new Output
                {
                    Id          = int.Parse(elements[0]),
                    Description = elements[1]
                }
            };

            parser.ParserRuleSet.AddRange(new[] { CsvHelper.IsValidInt, CsvHelper.NoRule, CsvHelper.NoRule });

            var input = new[] {
                "1;Test;0",
                "2;0.4",
                "3;Test;0,5",
                "4;;7",
                "5;Test"
            };

            var results = parser.Parse(input);

            results.Parsed.Should().HaveCount(3);
            results.Warnings.Should().HaveCount(2);
        }
Esempio n. 5
0
        public void CheckParserRuleSetTrailingSeparator()
        {
            var parser = new CsvInput <Output>
            {
                Converter = elements => new Output
                {
                    Id          = int.Parse(elements[0]),
                    Description = elements[1]
                }
            };

            parser.ParserRuleSet.AddRange(new[] { CsvHelper.IsValidInt, CsvHelper.NoRule, CsvHelper.NoRule });

            var input = new[] {
                "1;Test;0;",
                "2;Test;0.4;",
                "3;Test;0,5;",
                "4;;7;",
                "5;Test;x;"
            };

            var results = parser.Parse(input);

            results.Parsed.Should().BeEmpty();
            results.Warnings.Should().HaveCount(5);

            parser.HasTrailingSeparator = true;
            results = parser.Parse(input);
            results.Parsed.Should().HaveCount(5);
            results.Warnings.Should().BeEmpty();
        }
Esempio n. 6
0
        public void CheckLineRuleSet()
        {
            var parser = new CsvInput <Output>
            {
                Converter = elements => new Output
                {
                    Id          = int.Parse(elements[0]),
                    Description = elements[1],
                    Factor      = double.Parse(elements[2])
                }
            };

            parser.ParserRuleSet.AddRange(new[] { CsvHelper.IsValidInt, CsvHelper.NoRule, CsvHelper.IsValidDouble });

            Predicate <string[]> linePredicate =
                elements => int.TryParse(elements[0], out var id) &&
                (
                    (id % 2 == 0 && double.TryParse(elements[2], out var factor) && factor == 2 * id) ||
                    id % 2 == 1);

            parser.LineRuleSet.Add(new Rule <string[]>(linePredicate, "Even ids should have a factor = 2 * id"));

            var input = new[] {
                "1;Test;0",
                "2;Test;4",
                "3;Test;0,5",
                "4;;8",
                "6;Test;6"
            };

            var results = parser.Parse(input);

            results.Parsed.Should().HaveCount(4);
            results.Warnings.Should().HaveCount(1);
        }
Esempio n. 7
0
        public void CheckGlobalRuleSet()
        {
            var parser = new CsvInput <Output>
            {
                Converter = elements => new Output
                {
                    Id          = int.Parse(elements[0]),
                    Description = elements[1]
                }
            };

            parser.ParserRuleSet.AddRange(new[] { CsvHelper.IsValidInt, CsvHelper.NoRule, CsvHelper.NoRule });
            Predicate <IEnumerable <Output> > globalPredicate = outputs => outputs.GroupBy(o => o.Id).All(x => x.Count() == 1);

            parser.GlobalRuleSet.Add(new Rule <IEnumerable <Output> >(globalPredicate, "Ids should be unique"));

            var input = new[] {
                "1;Test;0",
                "2;Test;4",
                "3;Test;0,5",
                "4;;8",
                "3;Test;6"
            };

            var results = parser.Parse(input);

            results.Parsed.Should().HaveCount(5);
            results.Warnings.Should().HaveCount(1);
        }
        public void TestExpectingNoExceptionWhenFileExists()
        {
            string   filepath = @"D:\a\DummyReviews\DummyReviews\SenderTests\TestSample.csv";
            CsvInput csvInput = new CsvInput(filepath);

            Assert.True(csvInput.InputExceptionHandler());
        }
Esempio n. 9
0
        public void CheckParserRuleSetValuesCustom()
        {
            var parser = new CsvInput <Output>
            {
                Converter = elements => new Output
                {
                    Id          = int.Parse(elements[0]),
                    Description = elements[1]
                }
            };

            parser.ParserRuleSet.AddRange(new[]
            {
                CsvHelper.IsValidInt,
                new Rule(s => s.StartsWith("Abc"), "Element should start with Abc"),
                CsvHelper.NoRule
            });

            var input = new[] {
                "1;XyZ;0",
                "2;Abc XyZ;4",
                "3;Abc Test;0,5",
                "4;;8",
                "3;Test Abc;6"
            };

            var results = parser.Parse(input);

            results.Parsed.Should().HaveCount(2);
            results.Warnings.Should().HaveCount(3);
        }
Esempio n. 10
0
        public void CheckParserRuleSetValuesIn()
        {
            var parser = new CsvInput <Output>
            {
                Converter = elements => new Output
                {
                    Id          = int.Parse(elements[0]),
                    Description = elements[1],
                    Factor      = double.Parse(elements[2])
                }
            };

            parser.ParserRuleSet.AddRange(new[] { CsvHelper.HasValue(1, 2, 3, 4), CsvHelper.HasValue("Test"), CsvHelper.NoRule });

            var input = new[] {
                "1;Test;0",
                "2;Test;0.4",
                "3;Test;0,5",
                "4;;7",
                "5;Test;x"
            };

            var results = parser.Parse(input);

            results.Parsed.Should().HaveCount(3);
            results.Warnings.Should().HaveCount(2);
        }
        public void TestExpectingOutputToBeEmptyWhenCalledWithFilePathWhereFileIsEmpty()
        {
            string   filepath = @"D:\a\DummyReviews\DummyReviews\SenderTests\EmptySample.csv";
            CsvInput csvInput = new CsvInput(filepath);
            List <List <string> > testOutput = (List <List <string> >)csvInput.ReadInput();

            Assert.True(testOutput.Count == 0);
        }
        public void TestExpectingCsvFileToBeReadWhenCalledWithFilePath()
        {
            string   filepath = @"D:\a\DummyReviews\DummyReviews\SenderTests\TestSample.csv";
            CsvInput csvInput = new CsvInput(filepath);
            List <List <string> > testOutput = (List <List <string> >)csvInput.ReadInput();

            Debug.Assert(testOutput[0][0] == "sampledata");
        }
        public void TestExpectingEmptyLineToBeIgnoredFromInputWhenCalled()
        {
            string   filepath = @"D:\a\DummyReviews\DummyReviews\SenderTests\EmptyLineSample.csv";
            CsvInput csvInput = new CsvInput(filepath);
            var      output   = csvInput.ReadInput();

            Assert.True(output.Count() == 4);
        }
        public void TestExpectingEveryEntryInOutputToBeEmptyWhenCalledWithFilePathWhereFileContainsOnlyCommas()
        {
            string   filepath = @"D:\a\review-case-s21b4\review-case-s21b4\SenderTests\OnlyCommasSample.csv";
            CsvInput csvInput = new CsvInput(filepath);
            List <List <string> > testOutput = (List <List <string> >)csvInput.ReadInput();

            Assert.True(string.IsNullOrEmpty(testOutput[0][0]));
            Assert.True(string.IsNullOrEmpty(testOutput[0][1]));
        }
Esempio n. 15
0
        public void TestNoConverter()
        {
            var parser = new CsvInput <string>();

            var results = parser.Parse(new[] { "Lorem" });

            results.Parsed.Should().BeEmpty();
            results.Warnings.Should().HaveCount(1);
            results.Warnings[0].Explanation.Should().Be("No converter has been defined!");
        }
Esempio n. 16
0
        public void NoLineRuleSet()
        {
            var parser = new CsvInput <string>
            {
                Converter = _ => string.Empty
            };

            var results = parser.Parse(new[] { "Lorem" });

            results.Parsed.Should().BeEmpty();
            results.Warnings.Should().HaveCount(1);
            results.Warnings[0].Explanation.Should().Be("Parser ruleset lacks definitions!");
        }
        public CsvImporterViewModel()
        {
            Activator = new ViewModelActivator();
            Parser    = new CsvInput <T>();

            PickFileInteraction.RegisterHandler(ctx => ctx.SetOutput(string.Empty));
            InitializeCommands(this);

            this.WhenActivated(disposables =>
            {
                this.WhenAnyValue(x => x.Warnings)
                .Select(o => o?.Count > 0)
                .ObserveOn(RxApp.MainThreadScheduler)
                .ToPropertyEx(this, x => x.HasWarnings)
                .DisposeWith(disposables);
            });
        }
Esempio n. 18
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: public void doImport() throws java.io.IOException
        public override void DoImport()
        {
            FileSystemAbstraction fs = _outsideWorld.fileSystem();
            File storeDir            = _databaseConfig.get(GraphDatabaseSettings.database_path);
            File reportFile          = new File(_reportFileName);

            Stream    badOutput    = new BufferedOutputStream(fs.OpenAsOutputStream(reportFile, false));
            Collector badCollector = badCollector(badOutput, IgnoringSomething ? BadCollector.UNLIMITED_TOLERANCE : 0, collect(_ignoreBadRelationships, _ignoreDuplicateNodes, _ignoreExtraColumns));

            Configuration configuration = new WrappedBatchImporterConfigurationForNeo4jAdmin(importConfiguration(null, false, _databaseConfig, storeDir, _highIO));

            // Extract the default time zone from the database configuration
            ZoneId dbTimeZone = _databaseConfig.get(GraphDatabaseSettings.db_temporal_timezone);

            System.Func <ZoneId> defaultTimeZone = () => dbTimeZone;

            CsvInput input = new CsvInput(nodeData(_inputEncoding, _nodesFiles), defaultFormatNodeFileHeader(defaultTimeZone), relationshipData(_inputEncoding, _relationshipsFiles), defaultFormatRelationshipFileHeader(defaultTimeZone), _idType, new WrappedCsvInputConfigurationForNeo4jAdmin(csvConfiguration(_args, false)), badCollector, new CsvInput.PrintingMonitor(_outsideWorld.outStream()));

            ImportTool.doImport(_outsideWorld.errorStream(), _outsideWorld.errorStream(), _outsideWorld.inStream(), DatabaseLayout.of(storeDir), reportFile, fs, _nodesFiles, _relationshipsFiles, false, input, this._databaseConfig, badOutput, configuration, false);
        }
Esempio n. 19
0
        /// <summary>
        /// There was this problem where some steps and in particular parallel CSV input parsing that
        /// paniced would hang the import entirely.
        /// </summary>
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldExitAndThrowExceptionOnPanic() throws Exception
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void ShouldExitAndThrowExceptionOnPanic()
        {
            try
            {
                using (JobScheduler jobScheduler = new ThreadPoolJobScheduler())
                {
                    BatchImporter             importer = new ParallelBatchImporter(_directory.databaseLayout(), _fs, null, Configuration.DEFAULT, NullLogService.Instance, ExecutionMonitors.invisible(), AdditionalInitialIds.EMPTY, Config.defaults(), StandardV3_0.RECORD_FORMATS, NO_MONITOR, jobScheduler);
                    IEnumerable <DataFactory> nodeData = datas(data(NO_DECORATOR, FileAsCharReadable(NodeCsvFileWithBrokenEntries())));
                    Input brokenCsvInput = new CsvInput(nodeData, defaultFormatNodeFileHeader(), datas(), defaultFormatRelationshipFileHeader(), IdType.ACTUAL, CsvConfigurationWithLowBufferSize(), new BadCollector(NullOutputStream.NULL_OUTPUT_STREAM, 0, 0), CsvInput.NO_MONITOR);
                    importer.DoImport(brokenCsvInput);
                    fail("Should have failed properly");
                }
            }
            catch (InputException e)
            {
                // THEN
                assertTrue(e.InnerException is DataAfterQuoteException);
                // and we managed to shut down properly
            }
        }