Exemple #1
0
        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.Version());
                var mod2     = new GUIMod(TestData.kOS_014_module(), registry, tidy.KSP.Version());
                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.Version());

                await UtilStatic.Throws <InconsistentKraken>(() => computeTask);
            }
        }
Exemple #2
0
        public void 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);
                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 mod_list = main_mod_list.ConstructModList(new List <GUIMod>
                {
                    mod,
                    mod2
                });
                Assert.Throws <InconsistentKraken>(() => MainModList.ComputeChangeSetFromModList(registry, main_mod_list.ComputeUserChangeSet(), null, tidy.KSP.Version()));
            }
        }
Exemple #3
0
 public void ComputeChangeSetFromModList_WithEmptyList_HasEmptyChangeSet()
 {
     using (var tidy = new DisposableKSP())
     {
         KSPManager manager = new KSPManager(new NullUser(), new FakeWin32Registry(tidy.KSP))
         {
             CurrentInstance = tidy.KSP
         };
         var item = new MainModList(delegate { });
         Assert.That(item.ComputeChangeSetFromModList(Registry.Empty(), manager.CurrentInstance), Is.Empty);
     }
 }
Exemple #4
0
        public async Task TooManyProvidesCallsHandlers()
        {
            using (var tidy = new DisposableKSP())
            {
                var manager       = new KSPManager(new NullUser());
                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 ModuleRelationshipDescriptor {
                        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, manager.Cache, 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, new KspVersionCriteria(ksp_version)), GUIModChangeType.Install, null)
                };

                var mod_list = await main_mod_list.ComputeChangeSetFromModList(registry, a, installer, new KspVersionCriteria (ksp_version));

                CollectionAssert.AreEquivalent(
                    new[] {
                    new ModChange(new GUIMod(mod, registry, new KspVersionCriteria(ksp_version)), GUIModChangeType.Install, null),
                    new ModChange(new GUIMod(modb, registry, new KspVersionCriteria(ksp_version)), GUIModChangeType.Install, null)
                }, mod_list);

                manager.Dispose();
            }
        }