コード例 #1
0
        public void LoadSettings()
        {
            if (!File.Exists(_settingsFileFullPath))
            {
                _theSettings = new KataraiSettings {
                    ShowHint = true, IsAlwaysOnTop = true, NotificationVisibility = 60
                };
                SetDefaultReminders(_theSettings);
                return;
            }

            var jsonSettings = File.ReadAllText(_settingsFileFullPath);
            var settings     = JsonConvert.DeserializeObject <KataraiSettings>(jsonSettings);

            settings.KataHash   = null;
            settings.KataPath   = null;
            settings.PlayerHash = null;
            settings.PlayerPath = null;
            if (settings.NotificationVisibility <= 0)
            {
                settings.NotificationVisibility = 60;
            }
            SetDefaultReminders(settings);
            _theSettings = settings;
        }
コード例 #2
0
        private bool AreTherePlayerFileChanges(KataraiSettings settings)
        {
            var fileHashes = _fileHashesManager.GetFileHashes(settings);

            _settingsManager.UpdateSettings(fileHashes);
            return(fileHashes.AreThereChanges());
        }
コード例 #3
0
ファイル: SandboxDelegate.cs プロジェクト: fluffynuts/katarai
        public Result ExecuteInDelegate(KataraiSettings settings, string shadowLocation)
        {
            var newPlayerAssemblyPath = ShadowCopyPlayerAssembly(shadowLocation, settings.PlayerPath);
            var runner = new Runner.Runner(settings.KataPath, newPlayerAssemblyPath, newPlayerAssemblyPath);

            return(runner.Run());
        }
コード例 #4
0
        private static IFileHashesManager CreateFileHashes(KataraiSettings kataraiSettings)
        {
            var fileHashes = Substitute.For <IFileHashesManager>();

            fileHashes.GetFileHashes(kataraiSettings).Returns(CreateFileMonitorInformation());
            return(fileHashes);
        }
コード例 #5
0
        public Result Execute(KataraiSettings settings)
        {
            AppDomain domain = null;

            try
            {
                var domainId = Guid.NewGuid();
                ExecuteShadowLocation = GenerateShadowPath(domainId);
                domain = AppDomain.CreateDomain("New App Domain: " + domainId);

                var sandboxDelegate = (SandboxDelegate)domain.CreateInstanceAndUnwrap(
                    typeof(SandboxDelegate).Assembly.FullName,
                    typeof(SandboxDelegate).FullName);

                var result = sandboxDelegate.ExecuteInDelegate(settings, ExecuteShadowLocation);

                return(result);
            }
            finally
            {
                if (domain != null)
                {
                    AppDomain.Unload(domain);
                }
                CleanupShadowStaging(ExecuteShadowLocation);
            }
        }
コード例 #6
0
        private void SetDefaultReminders(KataraiSettings settings)
        {
            if (settings.Reminders != null)
            {
                return;
            }
            var todaysDate        = DateTime.Today;
            var dailyReminderTime = new DateTime(todaysDate.Year, todaysDate.Month, todaysDate.Day, 9, 0, 0);

            settings.Reminders = new List <KataReminder>
            {
                new KataReminder {
                    Day = DayOfWeek.Sunday.ToString(), ShowReminder = false
                },
                new KataReminder {
                    Day = DayOfWeek.Monday.ToString(), ShowReminder = true, Time = dailyReminderTime
                },
                new KataReminder {
                    Day = DayOfWeek.Tuesday.ToString(), ShowReminder = true, Time = dailyReminderTime
                },
                new KataReminder {
                    Day = DayOfWeek.Wednesday.ToString(), ShowReminder = true, Time = dailyReminderTime
                },
                new KataReminder {
                    Day = DayOfWeek.Thursday.ToString(), ShowReminder = true, Time = dailyReminderTime
                },
                new KataReminder {
                    Day = DayOfWeek.Friday.ToString(), ShowReminder = true, Time = dailyReminderTime
                },
                new KataReminder {
                    Day = DayOfWeek.Saturday.ToString(), ShowReminder = false
                },
            };
        }
コード例 #7
0
 private void SaveSettings(KataraiSettings settings)
 {
     if (_settingsManager.PersistSettings(settings))
     {
         return;
     }
     RaiseErrorNotification("Your Assembly Paths Where Not Saved");
 }
コード例 #8
0
 private Result ExecuteAnalysis(KataraiSettings settings)
 {
     if (!AreTherePlayerFileChanges(settings))
     {
         return(null);
     }
     return(_analysisContainer.Execute(settings));
 }
コード例 #9
0
 private static string GetKataFileErrors(KataraiSettings settings)
 {
     if (string.IsNullOrEmpty(settings.KataPath) || string.IsNullOrEmpty(settings.PlayerPath) ||
         !File.Exists(settings.KataPath) || !File.Exists(settings.PlayerPath))
     {
         return("Could not locate Player or Kata Assembly");
     }
     return(string.Empty);
 }
コード例 #10
0
        private static AnalysisRunner CreateAnalysisRunner(KataraiSettings kataraiSettings)
        {
            var settingsManager = Substitute.For <ISettingsManager>();

            settingsManager.FetchCurrentSettings().Returns(kataraiSettings);
            var analysisContainer = Substitute.For <IAnalysisContainer>();

            return(new AnalysisRunner(settingsManager, analysisContainer, new FileHashesManager()));
        }
コード例 #11
0
 private void SetReminders(KataraiSettings currentSettings)
 {
     if (currentSettings == null || currentSettings.Reminders == null)
     {
         Reminders = new List <KataReminder>();
     }
     else
     {
         Reminders = currentSettings.Reminders;
     }
 }
コード例 #12
0
        private static KataraiSettings CreateKataraiSettings(string kataPath, string playerPath)
        {
            var kataraiSettings = new KataraiSettings
            {
                KataPath   = kataPath,
                PlayerPath = playerPath,
                KataHash   = CreateFileHash(kataPath),
                PlayerHash = CreateFileHash(playerPath)
            };

            return(kataraiSettings);
        }
コード例 #13
0
        private static AnalysisRunner CreateAnalysisRunner(string kataPath, string playerPath)
        {
            var settingsManager = Substitute.For <ISettingsManager>();
            var kataraiSettings = new KataraiSettings {
                KataPath = kataPath, PlayerPath = playerPath
            };

            settingsManager.FetchCurrentSettings().Returns(kataraiSettings);
            var analysisContainer = Substitute.For <IAnalysisContainer>();

            return(new AnalysisRunner(settingsManager, analysisContainer, new FileHashesManager()));
        }
コード例 #14
0
        public FileMonitorInformation GetFileHashes(KataraiSettings settings)
        {
            var result = new FileMonitorInformation
            {
                OldKataHash   = settings.KataHash,
                OldPlayerHash = settings.PlayerHash,
                KataHash      = FetchFileLastModifedTime(settings.KataPath),
                PlayerHash    = FetchFileLastModifedTime(settings.PlayerPath)
            };

            return(result);
        }
コード例 #15
0
        private static AnalysisRunner CreateAnalysisRunner(KataraiSettings kataraiSettings, IFileHashesManager fileHashesManager)
        {
            var settingsManager = Substitute.For <ISettingsManager>();

            settingsManager.FetchCurrentSettings().Returns(kataraiSettings);
            var analysisContainer = Substitute.For <IAnalysisContainer>();
            IEnumerable <PlayerFeedback> messages = new List <PlayerFeedback>
            {
                Capacity = 1
            };

            analysisContainer.Execute(kataraiSettings).Returns(new Result(1, 1, messages.FirstOrDefault()));
            return(new AnalysisRunner(settingsManager, analysisContainer, fileHashesManager));
        }
コード例 #16
0
        public void Execute_WithNullPlayerPath_ShouldNotRunAnalysis()
        {
            //---------------Set up test pack-------------------
            var kataraiSettings = new KataraiSettings {
                PlayerPath = null
            };
            var analysisRunnerFactory  = Substitute.For <IAnalysisRunnerFactory>();
            var runKataAnalysisCommand = CreateRunKataAnalysisCommand(kataraiSettings: kataraiSettings, analysisRunnerFactory: analysisRunnerFactory);

            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            runKataAnalysisCommand.Execute();
            //---------------Test Result -----------------------
            analysisRunnerFactory.CreateAnalysisRunner(null, null).DidNotReceiveWithAnyArgs();
        }
コード例 #17
0
        public void IsAlwaysOnTop_WhenSet_ShouldPersistSettings()
        {
            //---------------Set up test pack-------------------
            var settingsManager = Substitute.For <ISettingsManager>();
            var kataraiSettings = new KataraiSettings();

            settingsManager.FetchCurrentSettings().Returns(kataraiSettings);
            var viewModel = Create(attemptRepository: Substitute.For <IKataAttemptRepository>(), settingsManager: settingsManager);

            settingsManager.ClearReceivedCalls();
            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            viewModel.IsAlwaysOnTop = true;
            //---------------Test Result -----------------------
            settingsManager.Received().FetchCurrentSettings();
            settingsManager.Received().PersistSettings(kataraiSettings);
        }
コード例 #18
0
        private static RunKataAnalysisCommand CreateRunKataAnalysisCommand(IPlayerNotifier playerNotifier = null, ISettingsManager settingsManager = null, IAnalysisContainer analysisContainer = null, IAnalysisRunnerFactory analysisRunnerFactory = null, IAnalysisResultProcessor analysisResultProcessor = null, KataraiSettings kataraiSettings = null, IKataraiApp kataraiApp = null)
        {
            playerNotifier  = playerNotifier ?? Substitute.For <IPlayerNotifier>();
            kataraiSettings = kataraiSettings ?? new KataraiSettings();
            if (settingsManager == null)
            {
                settingsManager = Substitute.For <ISettingsManager>();
                settingsManager.FetchCurrentSettings().Returns(kataraiSettings);
            }
            analysisContainer       = analysisContainer ?? Substitute.For <IAnalysisContainer>();
            analysisResultProcessor = analysisResultProcessor ?? Substitute.For <IAnalysisResultProcessor>();
            analysisRunnerFactory   = analysisRunnerFactory ?? Substitute.For <IAnalysisRunnerFactory>();
            kataraiApp = kataraiApp ?? Substitute.For <IKataraiApp>();
            var runKataAnalysisCommand = new RunKataAnalysisCommand(playerNotifier, settingsManager, analysisContainer, analysisRunnerFactory, analysisResultProcessor, kataraiApp);

            return(runKataAnalysisCommand);
        }
コード例 #19
0
 public bool PersistSettings(KataraiSettings settings)
 {
     SetSettings(settings);
     return(PersistSettings());
 }
コード例 #20
0
 public void SetSettings(KataraiSettings settings)
 {
     _theSettings = settings;
 }