コード例 #1
0
        /// <summary>
        /// если пришло время сохранить настройки автоматически - сделать это
        /// </summary>
        private void CheckAutosave()
        {
            if (!terminalIsLoaded)
            {
                return;
            }
            if (!workspaceIsLoadedOk)
            {
                return;
            }

            var timeSaved = timeLastAutosave.GetLastHit();
            var deltaMils = (DateTime.Now - timeSaved).TotalMilliseconds;

            if (deltaMils < autosaveIntervalMils)
            {
                return;
            }
            // если нет изменений
            if (!SettingsAutosaver.AreSettingsUpdated(timeSaved))
            {
                return;
            }
            // выполнить автосохранение
            var fileName = string.Format(AutosaveFileFormat, timeStarted, DateTime.Now);

            // почистить старые файлы автосохранения
            if (PerformAutosave(fileName))
            {
                SettingsAutosaver.CleanupAutosaves(autosaveFolder, maxAutosaveSessions);
            }
            // обновить время последнего сохранения
            timeLastAutosave.Touch();
        }
コード例 #2
0
        public void PackAndSaveSettingsFiles()
        {
            const string zipName = "1111111111_1111111111.zip";

            // Временные файлы не генерируются на лету, а копируются
            File.Copy(Path.Combine(testFileFolderPath, "indicator.xml"), Path.Combine(autosaveFolderPath, "indicator.xml"));
            File.Copy(Path.Combine(testFileFolderPath, "objects.xml"), Path.Combine(autosaveFolderPath, "objects.xml"));
            File.Copy(Path.Combine(testFileFolderPath, "settings.xml"), Path.Combine(autosaveFolderPath, "settings.xml"));


            SettingsAutosaver.PackAndSaveSettingsFiles(autosaveFolderPath, Path.Combine(autosaveFolderPath, zipName), false);

            var residualFilesXml = Directory.GetFiles(autosaveFolderPath, "*.xml");

            Assert.AreEqual(3, residualFilesXml.Length);
            var residualFilesZip = Directory.GetFiles(autosaveFolderPath, "*.zip");

            Assert.AreEqual(1, residualFilesZip.Length);

            // Удаляем временные файлы
            SettingsAutosaver.DeleteTempSettingsFileInAutosaveFolder(autosaveFolderPath);

            // после всей процедуры в папке "autosave" должен появиться на 1 архив больше и не должно остаться xml файлов
            residualFilesXml = Directory.GetFiles(autosaveFolderPath, "*.xml");
            Assert.AreEqual(0, residualFilesXml.Length);
            residualFilesZip = Directory.GetFiles(autosaveFolderPath, "*.zip");
            Assert.AreEqual(1, residualFilesZip.Length);
        }
コード例 #3
0
        public bool PerformAutosave(string fileName)
        {
            if (!EnsureAutosavePath(autosaveFolder))
            {
                return(false);
            }
            var targetFilePath = autosaveFolder + '\\' + fileName;

            // сохранить настройки во временную папку
            SaveCurrentSettings(autosaveFolder, true);
            // упаковать настройки в файл
            var result = SettingsAutosaver.PackAndSaveSettingsFiles(autosaveFolder, targetFilePath, false);

            // удалить временные файлы
            SettingsAutosaver.DeleteTempSettingsFileInAutosaveFolder(autosaveFolder);
            return(result);
        }
コード例 #4
0
        public void AreSettingsUpdated()
        {
            var timeLastSaved = UserSettings.Instance.lastTimeModified.GetLastHitIfHitted() ?? DateTime.Now.AddDays(-1);
            var areUpdated    = SettingsAutosaver.AreSettingsUpdated(timeLastSaved);

            Assert.IsFalse(areUpdated, "AreSettingsUpdated - обновления еще не было");

            UserSettings.Instance.WindowSize = new Size(10, 10);
            areUpdated = SettingsAutosaver.AreSettingsUpdated(timeLastSaved);
            Assert.IsTrue(areUpdated, "AreSettingsUpdated - обновление таки имело место");
            timeLastSaved = UserSettings.Instance.lastTimeModified.GetLastHit();

            var chart = new CandleChartControl();

            chart.ActivateIndiAddEvent(new FiboForkIndicator());
            areUpdated = SettingsAutosaver.AreSettingsUpdated(timeLastSaved);
            Assert.IsTrue(areUpdated, "AreSettingsUpdated - обновление имело место - были обновлены индюки");
        }
コード例 #5
0
        public void CleanupAutosaves()
        {
            var zipFileNames = new[] { "2703165731_2703170058.zip", "2703165731_2703170118.zip", "2703165731_2703170408.zip", "2703165731_2703170434.zip", "2703165731_2703170633.zip" };

            foreach (var zipFileName in zipFileNames)
            {
                File.Copy(Path.Combine(testFileFolderPath, zipFileName), Path.Combine(autosaveFolderPath, zipFileName));
            }

            SettingsAutosaver.CleanupAutosaves(autosaveFolderPath, 4);

            var residualFiles = Directory.GetFiles(autosaveFolderPath);

            Assert.AreEqual(4, residualFiles.Length);

            foreach (var residualFile in residualFiles)
            {
                if (!zipFileNames.Skip(1).Contains(residualFile.Split('\\').Last()))
                {
                    Assert.Fail("файл с именем {0} не должен был быть удалён", residualFile);
                }
            }
        }