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 ();
        }
Пример #3
0
 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 ();
 }