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); }
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")); }
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); }
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" })); }
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); }
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); }
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" })); }