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));
        }
示例#2
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());
        }
        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());
        }