public void Ctor_SomeExplicitSettings_SettingsAccepted() { //arrange var config = new OrchestratorConfig(LoggerCreator.CreateLogger(LoggerType.LogFile, "Test", LogEntrySeverity.Error)); //act // note that this is not a sensible set of settings (!) config.ExplicitTypeDefinitions = "DOB|D,Amount|M,Name|S"; config.TypeDefiner = fn => new ItemDef(ItemType.Int, "000"); //everything int, except for 3 exceptions above config.MarkerStartsCluster = false; config.BufferSize = 7; config.InputDataKind = KindOfTextData.Arbitrary; config.AsyncIntake = true; config.RetainQuotes = true; config.ActionOnDuplicateKey = ActionOnDuplicateKey.AssignDefaultKey; config.DefaultInputFieldWidth = 6; config.TransformerType = TransformerType.ClusterFilter; config.ClusterFilterPredicate = c => false; config.RecordFilterPredicate = r => false; //makes no sense in the orchestrator, but good to test config.ConcurrencyLevel = 19; config.OutputDataKind = KindOfTextData.Flat; config.OutputFileNames = "blahblah"; config.QuotationMode = QuotationMode.StringsAndDates; config.TrimOutputValues = true; config.OutputKeyPrefix = "pfx_"; //assert //Logger: config.Logger.LoggerType.Should().Be(LoggerType.LogFile); config.Logger.LoggingThreshold.Should().Be(LogEntrySeverity.Error); // Environmental settings: config.ConfigName.Should().BeNull(); config.DataConveyerInfo.Should().BeOfType(typeof(ProductInfo)); config.DataConveyerInfo.Name.Should().Be("DataConveyer"); var ver = Assembly.GetAssembly(typeof(EtlOrchestrator)).GetName().Version; config.DataConveyerInfo.Version.Should().Be($"{ver.Major}.{ver.Minor}"); //General settings: config.ExplicitTypeDefinitions.Should().Be("DOB|D,Amount|M,Name|S"); config.TypeDefiner.Should().BeOfType(typeof(Func <string, ItemDef>)); config.TypeDefiner.Should().NotBe(OrchestratorConfig.DefaultTypeDefiner); config.TypeDefiner("anyKey").Type.Should().Be(ItemType.Int); config.EagerInitialization.Should().BeFalse(); config.BufferSize.Should().Be(7); config.ReportProgress.Should().BeFalse(); config.ProgressInterval.Should().Be(0); config.PhaseStartingHandler.Should().BeNull(); config.ProgressChangedHandler.Should().BeNull(); config.PhaseFinishedHandler.Should().BeNull(); //Intake specific settings: config.InputDataKind.Should().Be(KindOfTextData.Arbitrary); config.InputFileNames.Should().BeNull(); config.AsyncIntake.Should().BeTrue(); config.IntakeSupplier.Should().Be(OrchestratorConfig.DefaultIntakeSupplier); config.AsyncIntakeSupplier.Should().Be(OrchestratorConfig.DefaultAsyncIntakeSupplier); config.IntakeBufferFactor.Should().Be(1.5); config.HeadersInFirstInputRow.Should().BeFalse(); config.RetainQuotes.Should().BeTrue(); config.TrimInputValues.Should().BeFalse(); config.InputKeyPrefix.Should().BeNull(); config.ExcludeItemsMissingPrefix.Should().BeFalse(); config.ActionOnDuplicateKey.Should().Be(ActionOnDuplicateKey.AssignDefaultKey); config.ClusterMarker.Should().Be(OrchestratorConfig.DefaultClusterMarker); config.MarkerStartsCluster.Should().BeFalse(); config.InputFields.Should().BeNull(); config.ArbitraryInputDefs.Should().BeNull(); config.DefaultInputFieldWidth.Should().Be(6); config.AllowOnTheFlyInputFields.Should().BeFalse(); //Transformer specific settings: config.TransformerType.Should().Be(TransformerType.ClusterFilter); config.ClusterboundTransformer.Should().Be(OrchestratorConfig.DefaultClusterboundTransformer); config.RecordboundTransformer.Should().Be(OrchestratorConfig.DefaultRecordboundTransformer); config.ClusterFilterPredicate.Should().BeOfType(typeof(Func <ICluster, bool>)); config.ClusterFilterPredicate.Should().NotBe(OrchestratorConfig.DefaultClusterFilterPredicate); config.ClusterFilterPredicate(null).Should().BeFalse(); config.RecordFilterPredicate.Should().NotBe(OrchestratorConfig.DefaultRecordFilterPredicate); config.RecordFilterPredicate(null).Should().BeFalse(); // this predicate would never be called (due to TransformerType setting) config.UniversalTransformer.Should().Be(OrchestratorConfig.DefaultUniversalTransformer); config.ConcurrencyLevel.Should().Be(19); config.TransformBufferFactor.Should().Be(1); config.AllowTransformToAlterFields.Should().BeFalse(); //Output specific settings: config.OutputDataKind.Should().Be(KindOfTextData.Flat); config.OutputFileNames.Should().Be("blahblah"); config.AsyncOutput.Should().BeFalse(); config.OutputConsumer.Should().Be(OrchestratorConfig.DefaultOutputConsumer); config.AsyncOutputConsumer.Should().Be(OrchestratorConfig.DefaultAsyncOutputConsumer); config.OutputBufferFactor.Should().Be(1.5); config.HeadersInFirstOutputRow.Should().BeFalse(); config.QuotationMode.Should().Be(QuotationMode.StringsAndDates); config.TrimOutputValues.Should().BeTrue(); config.OutputKeyPrefix.Should().Be("pfx_"); config.OutputFields.Should().BeNull(); config.ArbitraryOutputDefs.Should().BeNull(); config.DefaultOutputFieldWidth.Should().Be(10); config.LeaderContents.Should().BeNull(); config.TrailerContents.Should().BeNull(); config.ExcludeExtraneousFields.Should().BeFalse(); }