Ejemplo n.º 1
0
        public void CanLookupPartsUsingTheProvidedFilter ()
        {
            // given
            var craft = createTestCraft ();
            var parts = craft.Children<KspPartObject> ().ToArray ();
            var target = new PartLookup (craft);

            // when / then
            Assert.That (target.LookupParts (new RegexFilter ("2")), Is.EqualTo (new[] { parts [2] }));
            Assert.That (target.LookupParts (new RegexFilter ("part[5-7]")), Is.EqualTo (new[] { parts [4], parts [5], parts [6] }));
        }
Ejemplo n.º 2
0
        private List<KspPartObject> FindParts (KspCraftObject craft, RegexFilter filter)
        {
            ui.DisplayUserMessage ($"Entering craft '{craft.Name}'...");

            var partLookup = new PartLookup (craft);
            var parts = partLookup.LookupParts (filter).ToList ();

            ui.DisplayUserMessage ($"Found {parts.Count} matching parts");

            return parts;
        }
Ejemplo n.º 3
0
        private Dictionary<KspPartObject, List<KspPartLinkProperty>> FindPartDependencies (KspCraftObject craft, RegexFilter filter)
        {
            ui.DisplayUserMessage ($"Entering craft '{craft.Name}'...");

            var partLookup = new PartLookup (craft);
            var dependencies = partLookup.LookupParts (filter).ToList ();

            var dependentParts = new HashSet<KspPartObject> ();
            Parallel.ForEach (dependencies, dependency => {
                foreach (var part in partLookup.LookupSoftDependencies (dependency)) {
                    lock (dependentParts) {
                        dependentParts.Add (part);
                    }
                }
            });

            ui.DisplayUserMessage ($"Found {dependentParts.Count} dependent parts");

            return dependentParts.ToDictionary (part => part, part => FindPartLinks (part, dependencies));
        }
Ejemplo n.º 4
0
        private List<KspPartObject> FindRemovedAndDependentParts (KspCraftObject craft, RegexFilter filter)
        {
            ui.DisplayUserMessage ($"Entering craft '{craft.Name}'...");

            var partLookup = new PartLookup (craft);

            var removedParts = partLookup.LookupParts (filter).ToList ();

            ui.DisplayUserMessage ($"Found {removedParts.Count} parts to be removed");

            var dependentParts = new HashSet<KspPartObject> ();

            Parallel.ForEach (removedParts, removedPart => {
                foreach (var part in partLookup.LookupHardDependencies (removedPart).Except (removedParts)) {
                    lock (dependentParts) {
                        dependentParts.Add (part);
                    }
                }
            });

            ui.DisplayUserMessage ($"Found {dependentParts.Count} dependent parts");

            return removedParts.Concat (dependentParts).ToList ();
        }