public void Setup()
        {
            _invoker        = Substitute.For <IInteractionInvoker>();
            _settingsHelper = Substitute.For <ISettingsProvider>();
            _settingsHelper.Settings.Returns(new PdfCreatorSettings(Substitute.For <IStorage>()));

            _settingsManager = Substitute.For <ISettingsManager>();
            _settingsManager.GetSettingsProvider().Returns(_settingsHelper);

            _dataStorageFactory = Substitute.For <IDataStorageFactory>();
            _storage            = Substitute.For <IStorage>();
            _dataStorageFactory.BuildIniStorage().Returns(_storage);

            _iniSettingsLoader    = Substitute.For <IIniSettingsLoader>();
            _iniSettingsAssistant = new IniSettingsAssistant(_invoker, new TranslationUpdater(new TranslationFactory(), new ThreadManager()), _settingsManager, _dataStorageFactory, _iniSettingsLoader);
        }
        public void SaveAndLoad_ResultsInExactlyEqualSettings()
        {
            var tempFolder = TempFileHelper.CreateTempFolder("IniSettingsTest");
            var fileName   = Path.Combine(tempFolder, "savedSettings.ini");

            var settings = CreateSettings();
            var invoker  = BuildInvoker(fileName);

            var settingsHelper = Substitute.For <ISettingsProvider>();

            settingsHelper.Settings.Returns(settings);
            settingsHelper.CheckValidSettings(Arg.Any <PdfCreatorSettings>()).Returns(x => x.Arg <PdfCreatorSettings>().ConversionProfiles.Count > 0);

            PdfCreatorSettings loadedSettings = null;

            var settingsMananger = Substitute.For <ISettingsManager>();

            settingsMananger.GetSettingsProvider().Returns(settingsHelper);
            settingsMananger.When(x => x.ApplyAndSaveSettings(Arg.Any <PdfCreatorSettings>())).Do(x => loadedSettings = x.Arg <PdfCreatorSettings>());

            var iniSettingsLoader    = new IniSettingsLoader(settingsMananger, new DataStorageFactory());
            var iniSettingsAssistant = new IniSettingsAssistant(invoker, new TranslationProxy(), settingsMananger, new DataStorageFactory(), iniSettingsLoader);

            iniSettingsAssistant.SaveIniSettings(settings.ApplicationSettings);
            iniSettingsAssistant.LoadIniSettings();

            var titles       = settings.ApplicationSettings.TitleReplacement;
            var loadedTitles = loadedSettings.ApplicationSettings.TitleReplacement;

            for (var i = 0; i < titles.Count; i++)
            {
                Assert.AreEqual(titles[i], loadedTitles[i]);
            }
            Assert.AreEqual(settings.ApplicationSettings.TitleReplacement, loadedSettings.ApplicationSettings.TitleReplacement);
            Assert.AreEqual(settings.ApplicationSettings, loadedSettings.ApplicationSettings);
            Assert.AreEqual(settings.ConversionProfiles, loadedSettings.ConversionProfiles);

            Assert.AreEqual(settings.ToString(), loadedSettings.ToString());

            TempFileHelper.CleanUp();
        }