Ejemplo n.º 1
0
        public int Execute(String inputFilePath, String outputFilePath, RegexFilter craftFilter, RegexFilter partFilter)
        {
            ui.DisplayUserMessage($"Searching for crafts matching '{craftFilter}'...");

            var kspObjTree = CraftLoader.LoadFromFile(inputFilePath);
            var crafts     = new CraftLookup(kspObjTree).LookupCrafts(craftFilter).ToList();

            if (crafts.Count <= 0)
            {
                ui.DisplayErrorMessage($"No craft matching '{craftFilter}' found, aborting");
                return(-1);
            }

            ui.DisplayUserMessage($"Searching for parts matching '{partFilter}'...");

            var partsRemoved = crafts.Aggregate(false, (removed, craft) => removed | RemoveMatchingParts(craft, partFilter));

            if (!partsRemoved)
            {
                ui.DisplayErrorMessage($"No parts removed");
                return(-1);
            }

            CraftLoader.SaveToFile(outputFilePath, kspObjTree);

            return(0);
        }
Ejemplo n.º 2
0
        public void CanLoadCraftFromCraftFileString()
        {
            // given
            var textIn = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("KSPPartRemover.Tests.Resources.Mün Mk I.in.craft")).ReadToEnd();

            // when
            var craft = CraftLoader.LoadFromText(textIn);

            // then
            Assert.That((craft as KspCraftObject).Name, Is.EqualTo("Mün Mk I"));
        }
Ejemplo n.º 3
0
        public void ReturnsEmptyObjectTreeForEmptyFile()
        {
            // given
            var textIn = "";

            // when
            var kspObjTree = CraftLoader.LoadFromText(textIn);

            // then
            Assert.That(kspObjTree.Type, Is.Empty);
            Assert.That(kspObjTree.Children, Is.Empty);
        }
Ejemplo n.º 4
0
        public void CanLoadAndSaveFromFiles()
        {
            // given / when
            CraftLoader.SaveToFile("test.sfs", new KspObject("GAME")
                                   .AddChild(new KspCraftObject().AddProperty(new KspStringProperty("name", "craft1")))
                                   .AddChild(new KspCraftObject().AddProperty(new KspStringProperty("name", "craft2")))
                                   .AddChild(new KspCraftObject().AddProperty(new KspStringProperty("name", "craft3"))));

            // and when
            var kspObjTree = CraftLoader.LoadFromFile("test.sfs");

            // then
            Assert.That(kspObjTree.Children <KspCraftObject> (recursive: true).Select(craft => craft.Name), Is.EqualTo(new[] { "craft1", "craft2", "craft3" }));
        }
Ejemplo n.º 5
0
        public int Execute(String inputFilePath, RegexFilter craftFilter)
        {
            ui.DisplayUserMessage($"Searching for crafts matching '{craftFilter}'...");

            var kspObjTree = CraftLoader.LoadFromFile(inputFilePath);
            var crafts     = new CraftLookup(kspObjTree).LookupCrafts(craftFilter).ToList();

            if (crafts.Count > 0)
            {
                ui.DisplayCraftList(crafts);
            }

            return(0);
        }
Ejemplo n.º 6
0
        public int Execute(String inputFilePath, RegexFilter craftFilter, RegexFilter partFilter)
        {
            ui.DisplayUserMessage($"Searching for crafts matching '{craftFilter}'...");

            var kspObjTree = CraftLoader.LoadFromFile(inputFilePath);
            var crafts     = new CraftLookup(kspObjTree).LookupCrafts(craftFilter);

            ui.DisplayUserMessage($"Searching for parts matching '{partFilter}'...");

            var filteredParts = crafts.ToDictionary(craft => craft, craft => FindParts(craft, partFilter));

            if (filteredParts.Any(entry => entry.Value.Count > 0))
            {
                ui.DisplayPartList(filteredParts);
            }

            return(0);
        }
Ejemplo n.º 7
0
        public void CanLoadCraftsFromSaveFileString()
        {
            // given
            var textIn = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("KSPPartRemover.Tests.Resources.Refuel at Minmus.in.sfs")).ReadToEnd();

            // when
            var kspObjTree = CraftLoader.LoadFromText(textIn);

            // then
            Assert.That(kspObjTree.Children <KspCraftObject> (recursive: true).Select(craft => craft.Name), Is.EqualTo(new[] {
                "Ast. HSJ-227",
                "Ast. LHV-865",
                "Ast. IQY-452",
                "Aeris 4B \"Maybe the Sky\"",
                "Ast. JCK-736",
                "Ast. JIH-531",
                "Ast. AYF-000",
                "Bowser 1",
                "Bowser 1 Debris",
                "Ast. JMV-788",
                "Bowser 1 Debris"
            }));
        }