public void TestExpectingValidFilepathAssignmentToClassMemberWhenCalledWithValidFilepath() { string filepath = @"EmptySample.csv"; CsvInput csvInput = new CsvInput(filepath); Assert.Equal("EmptySample.csv", csvInput.Filepath); }
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()); }
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); }
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(); }
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); }
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()); }
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); }
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])); }
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!"); }
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); }); }
//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); }
/// <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 } }