protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { switch (keyData) { case (Keys.Control | Keys.F): ActiveControl = FilterByNameTextBox; return(true); case (Keys.Control | Keys.S): var registry = RegistryManager.Instance(CurrentInstance).registry; if (mainModList.ComputeChangeSetFromModList(registry, CurrentInstance).Any()) { ApplyToolButton_Click(null, null); } return(true); } return(base.ProcessCmdKey(ref msg, keyData)); }
public async Task ComputeChangeSetFromModList_WithConflictingMods_ThrowsInconsistentKraken() { using (var tidy = new DisposableKSP()) { KSPManager manager = new KSPManager(new NullUser(), new FakeWin32Registry(tidy.KSP)) { CurrentInstance = tidy.KSP }; var registry = Registry.Empty(); var module = TestData.FireSpitterModule(); module.conflicts = new List<RelationshipDescriptor> { new RelationshipDescriptor { name = "kOS" } }; registry.AddAvailable(TestData.FireSpitterModule()); registry.AddAvailable(TestData.kOS_014_module()); registry.RegisterModule(module, Enumerable.Empty<string>(), tidy.KSP); var main_mod_list = new MainModList(null, null); var mod = new GUIMod(TestData.FireSpitterModule(), registry, manager.CurrentInstance.Version()); var mod2 = new GUIMod(TestData.kOS_014_module(), registry, manager.CurrentInstance.Version()); mod.IsInstallChecked = true; mod2.IsInstallChecked = true; var compute_change_set_from_mod_list = main_mod_list.ComputeChangeSetFromModList(registry, main_mod_list.ComputeUserChangeSet(), null, tidy.KSP.Version()); await UtilStatic.Throws<InconsistentKraken>(async ()=> { await compute_change_set_from_mod_list; }); } }
private void UpdateChangeSetAndConflicts(Registry registry) { IEnumerable <KeyValuePair <CkanModule, GUIModChangeType> > full_change_set; Dictionary <Module, string> conflicts; var user_change_set = mainModList.ComputeUserChangeSet(); try { var module_installer = ModuleInstaller.GetInstance(CurrentInstance, GUI.user); full_change_set = MainModList.ComputeChangeSetFromModList(registry, user_change_set, module_installer, CurrentInstance.Version()); conflicts = null; } catch (InconsistentKraken) { conflicts = MainModList.ComputeConflictsFromModList(registry, user_change_set, CurrentInstance.Version()); full_change_set = null; } Conflicts = conflicts; ChangeSet = full_change_set; }
public async Task ComputeChangeSetFromModList_WithConflictingMods_ThrowsInconsistentKraken() { using (var tidy = new DisposableKSP()) { var registry = Registry.Empty(); var module = TestData.FireSpitterModule(); module.conflicts = new List<RelationshipDescriptor> { new RelationshipDescriptor { name = "kOS" } }; registry.AddAvailable(module); registry.AddAvailable(TestData.kOS_014_module()); registry.RegisterModule(module, Enumerable.Empty<string>(), tidy.KSP); var mainList = new MainModList(null, null, new GUIUser()); var mod = new GUIMod(module, registry, tidy.KSP.VersionCriteria()); var mod2 = new GUIMod(TestData.kOS_014_module(), registry, tidy.KSP.VersionCriteria()); var mods = new List<GUIMod>() { mod, mod2 }; mainList.ConstructModList(mods, true); mainList.Modules = new ReadOnlyCollection<GUIMod>(mods); mod2.IsInstallChecked = true; var computeTask = mainList.ComputeChangeSetFromModList(registry, mainList.ComputeUserChangeSet(), null, tidy.KSP.VersionCriteria()); await UtilStatic.Throws<InconsistentKraken>(() => computeTask); } }
public async Task TooManyProvidesCallsHandlers() { using (var tidy = new DisposableKSP()) { var registry = Registry.Empty(); var generator = new RandomModuleGenerator(new Random(0451)); var provide_ident = "provide"; var ksp_version = tidy.KSP.Version(); var mod = generator.GeneratorRandomModule(depends: new List<RelationshipDescriptor> { new RelationshipDescriptor {name = provide_ident} },ksp_version:ksp_version); var moda = generator.GeneratorRandomModule(provides: new List<string> { provide_ident } , ksp_version: ksp_version); var modb = generator.GeneratorRandomModule(provides: new List<string> { provide_ident } , ksp_version: ksp_version); var choice_of_provide = modb; registry.AddAvailable(mod); registry.AddAvailable(moda); registry.AddAvailable(modb); var installer = ModuleInstaller.GetInstance(tidy.KSP, null); var main_mod_list = new MainModList(null, async kraken => await Task.FromResult(choice_of_provide)); var a = new HashSet<ModChange> { new ModChange(new GUIMod(mod,registry,ksp_version), GUIModChangeType.Install, null) }; var mod_list = await main_mod_list.ComputeChangeSetFromModList(registry, a, installer, ksp_version); CollectionAssert.AreEquivalent( new[] { new ModChange(new GUIMod(mod,registry,ksp_version), GUIModChangeType.Install, null), new ModChange(new GUIMod(modb,registry,ksp_version),GUIModChangeType.Install, null) }, mod_list); } }