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