/// <summary> /// Convert a list of Obganism object into a Nap container. /// If the first object type is blank-named, its modifiers will be used to configure the container itself: /// /// <list type="bullet"> /// <item> The optional <c>name</c> modifier will define the name of the container. </item> /// </list> /// </summary> public static PartialContainer ObjectsToContainer(IReadOnlyList <ObganismObject> obganismObjects) { var container = new PartialContainer(); var i = 0; // The first object is unnamed: use it as the container's configuration. if (obganismObjects.Count != 0 && string.IsNullOrWhiteSpace(obganismObjects[0].Type.Name)) { i = 1; foreach (var obganismModifier in obganismObjects[0].Modifiers) { if (obganismModifier.Name == "name" && GetModifierParameterStringValue(obganismModifier, 0) is string containerName) { container.Name = containerName; break; } } } for (; i < obganismObjects.Count; ++i) { container.Resources.Add(ObjectToResource(obganismObjects[i])); } return(container); }
public static void AssertContainer(PartialContainer expected, PartialContainer actual) { Assert.AreEqual(expected.Name, actual.Name, "Container names didn't match."); Assert.AreEqual(expected.Resources.Count, actual.Resources.Count, "Resources are not the same count."); using var expectedEnumerator = expected.Resources.GetEnumerator(); using var actualEnumerator = actual.Resources.GetEnumerator(); while (expectedEnumerator.MoveNext() && actualEnumerator.MoveNext()) { AssertResource(expectedEnumerator.Current, actualEnumerator.Current); } }
public override bool IsClsComplianceRequired() { return(PartialContainer.IsClsComplianceRequired()); }
public override bool GetClsCompliantAttributeValue() { return(PartialContainer.GetClsCompliantAttributeValue()); }