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; }
private bool AreTherePlayerFileChanges(KataraiSettings settings) { var fileHashes = _fileHashesManager.GetFileHashes(settings); _settingsManager.UpdateSettings(fileHashes); return(fileHashes.AreThereChanges()); }
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()); }
private static IFileHashesManager CreateFileHashes(KataraiSettings kataraiSettings) { var fileHashes = Substitute.For <IFileHashesManager>(); fileHashes.GetFileHashes(kataraiSettings).Returns(CreateFileMonitorInformation()); return(fileHashes); }
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); } }
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 }, }; }
private void SaveSettings(KataraiSettings settings) { if (_settingsManager.PersistSettings(settings)) { return; } RaiseErrorNotification("Your Assembly Paths Where Not Saved"); }
private Result ExecuteAnalysis(KataraiSettings settings) { if (!AreTherePlayerFileChanges(settings)) { return(null); } return(_analysisContainer.Execute(settings)); }
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); }
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())); }
private void SetReminders(KataraiSettings currentSettings) { if (currentSettings == null || currentSettings.Reminders == null) { Reminders = new List <KataReminder>(); } else { Reminders = currentSettings.Reminders; } }
private static KataraiSettings CreateKataraiSettings(string kataPath, string playerPath) { var kataraiSettings = new KataraiSettings { KataPath = kataPath, PlayerPath = playerPath, KataHash = CreateFileHash(kataPath), PlayerHash = CreateFileHash(playerPath) }; return(kataraiSettings); }
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())); }
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); }
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)); }
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(); }
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); }
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); }
public bool PersistSettings(KataraiSettings settings) { SetSettings(settings); return(PersistSettings()); }
public void SetSettings(KataraiSettings settings) { _theSettings = settings; }