public void Test_CanRead_ConnStringOnly()
        {
            ReasonableStakhanoviseDefaultsProvider reasonableDefaultsProvider =
                new ReasonableStakhanoviseDefaultsProvider();

            NetCoreConfigurationStakhanoviseDefaultsProvider provider =
                new NetCoreConfigurationStakhanoviseDefaultsProvider(TestDataDirectory,
                                                                     SampleSettingsFileConnStringOnly,
                                                                     "Lvd.Stakhanovise.Net.Config");

            StakhanoviseSetupDefaults defaults =
                provider.GetDefaults();

            StakhanoviseSetupDefaults reasonableDefaults =
                reasonableDefaultsProvider.GetDefaults();

            Assert.NotNull(defaults);

            AssertDefaultsFromConfigMatchReasonableDefaults(defaults,
                                                            reasonableDefaults);

            AssertExecutorAssembliesMatchReasonableDefaultsAssemblies(defaults,
                                                                      reasonableDefaults);

            AssertConnectionStringCorrect(defaults);

            AssertMappingMatchesReasonableDefaultsMapping(defaults,
                                                          reasonableDefaults);
        }
        public void Test_CanRead_FullConfig()
        {
            NetCoreConfigurationStakhanoviseDefaultsProvider provider =
                new NetCoreConfigurationStakhanoviseDefaultsProvider(TestDataDirectory,
                                                                     SampleSettingsFileFull,
                                                                     "Lvd.Stakhanovise.Net.Config");

            StakhanoviseSetupDefaults defaults =
                provider.GetDefaults();

            Assert.NotNull(defaults);

            Assert.AreEqual(12, defaults.WorkerCount);
            Assert.AreEqual(13, defaults.FaultErrorThresholdCount);
            Assert.AreEqual(1234, defaults.AppMetricsCollectionIntervalMilliseconds);
            Assert.AreEqual(true, defaults.AppMetricsMonitoringEnabled);
            Assert.AreEqual(true, defaults.SetupBuiltInDbAsssets);

            AssertExecutorAssembliesMatchTestAssemblies(defaults);

            Assert.NotNull(defaults.CalculateDelayMillisecondsTaskAfterFailure);
            AssertCalculateDelayTicksTaskAfterFailureFnCorrect(defaults,
                                                               expected: (token) => ( long )Math.Ceiling(Math.Exp(token.LastQueuedTaskResult.ErrorCount + 1)),
                                                               numberOfRuns: 100);

            Assert.NotNull(defaults.IsTaskErrorRecoverable);
            AssertIsTaskErrorRecoverableFnCorrect(defaults,
                                                  expected: (task, exc) => !(exc is NullReferenceException) &&
                                                  !(exc is ArgumentException) &&
                                                  !(exc is ApplicationException),
                                                  numberOfRuns: 100);

            AssertConnectionStringCorrect(defaults);
            AssertMappingMatchesNonDefaultTestMapping(defaults);
        }