public void CanUpdatePartReferences() { // given var obj = new KspObject("OBJ") .AddChild(new KspPartObject().AddProperty(new KspStringProperty("name", "part1"))) .AddChild(new KspPartObject().AddProperty(new KspStringProperty("name", "part2"))) .AddChild(new KspPartObject().AddProperty(new KspStringProperty("name", "part3"))); var parts = obj.Children <KspPartObject> ().ToArray(); var part = obj.Children [0] .AddProperty(new KspStringProperty("not-a-link", "not-a-link")) .AddProperty(new KspPartLinkProperty(KspPartLinkProperty.Types.Link, "top", parts [0], false)) .AddProperty(new KspPartLinkProperty(KspPartLinkProperty.Types.Parent, "top", parts [0], false)) .AddProperty(new KspPartLinkProperty(KspPartLinkProperty.Types.Parent, "top", parts [1], false)) as KspPartObject; var newParentLink = new KspPartLinkProperty(KspPartLinkProperty.Types.Parent, "bottom", parts [1], false); var expectedProperties = new [] { part.Properties [0], part.Properties [1], part.Properties [2], newParentLink }; // when part.UpdatePartLinks(KspPartLinkProperty.Types.Parent, new[] { newParentLink }); // then Assert.That(part.Properties, Is.EqualTo(expectedProperties)); }
public static String PartLinkPropertyToString(KspCraftObject craft, KspPartLinkProperty property) { var sb = new StringBuilder(); sb.Append($"{PartObjectToString (craft, property.Part)}"); sb.Append($"[{property.Name}"); if (property.Prefix != null) { sb.Append($"({property.Prefix})"); } sb.Append("]"); return(sb.ToString()); }
private static String ResolvePartLinkString(KspObject obj, KspPartLinkProperty property) { var craft = obj.Parent as KspCraftObject; var sb = new StringBuilder(); if (property.Prefix != null) { sb.Append(property.Prefix); sb.Append(", "); } if (property.IsIdReference) { sb.Append(craft.IdOfChild(property.Part)); } else { sb.Append(property.Part.Name); } return(sb.ToString()); }