internal static void VerifyCollectionIsNotNull(IDirectedConnectedNodeCollection <T> collection) { if (collection == null) { throw new ArgumentNullException("collection", "Operation is not valid on a null set of nodes."); } }
void IDirectedConnectedNode <T> .AddToCollection(IDirectedConnectedNodeCollection <T> newParentCollection) { Helpers <T> .Verify_AddToCollection_ConditionsAreSatisfied(this, newParentCollection); var typedCollection = TypedHelpers.GetCollectionAsValidType <PointerDCNC <T>, T>(newParentCollection); typedCollection.InternalAddNodeRequest(this); this.InternalSetParentCollectionRequest(typedCollection); }
internal static void VerifyAtLeastOneNodeIsInCollection( IDirectedConnectedNode <T> firstNode, IDirectedConnectedNode <T> secondNode, IDirectedConnectedNodeCollection <T> collection) { if (NodeIsNotInCollection(firstNode, collection) && NodeIsNotInCollection(secondNode, collection)) { throw new InvalidOperationException("Cannot report on connection between two nodes not in collection."); } }
public void InputOfWrongTypeThrows() { var arrayCollection = IDCNCFactory.NewArrayCollection <int>(); IDirectedConnectedNodeCollection <int> deTypedArrayCollection = arrayCollection; Assert.Throws <InvalidCastException>( () => TypedHelpers.GetCollectionAsValidType <PointerDCNC <int>, int>(deTypedArrayCollection)); var pointerCollection = IDCNCFactory.NewPointerCollection <string>(); IDirectedConnectedNodeCollection <string> deTypedPointerCollection = pointerCollection; Assert.Throws <InvalidCastException>( () => TypedHelpers.GetCollectionAsValidType <ArrayDCNC <string>, string>(deTypedPointerCollection)); }
public void OutputIsOfExpectedType() { var arrayCollection = IDCNCFactory.NewArrayCollection <int>(); IDirectedConnectedNodeCollection <int> deTypedArrayCollection = arrayCollection; var hopefullyArrayOutput = TypedHelpers.GetCollectionAsValidType <ArrayDCNC <int>, int>(deTypedArrayCollection); Assert.IsTrue(hopefullyArrayOutput is ArrayDCNC <int>); var pointerCollection = IDCNCFactory.NewPointerCollection <string>(); IDirectedConnectedNodeCollection <string> deTypedPointerCollection = pointerCollection; var hopefullyPointerOutput = TypedHelpers.GetCollectionAsValidType <PointerDCNC <string>, string>(deTypedPointerCollection); Assert.IsTrue(hopefullyPointerOutput is PointerDCNC <string>); }
internal static S GetCollectionAsValidType <S, T>(IDirectedConnectedNodeCollection <T> collection) where S : class, IDirectedConnectedNodeCollection <T> { if (collection == null) { return(null); } var typedCollection = collection as S; if (typedCollection == null) { throw new InvalidCastException($"Given collection is not a '{typeof(S)}' collection. Collection Type is actually: '{collection.GetType()}'"); } return(typedCollection); }
private static bool NodeIsNotInCollection(IDirectedConnectedNode <T> node, IDirectedConnectedNodeCollection <T> collection) { return(node.ParentCollection != collection); }
internal static void VerifyNodeIsInCollection(IDirectedConnectedNode <T> node, IDirectedConnectedNodeCollection <T> collection) { if (NodeIsNotInCollection(node, collection)) { throw new InvalidOperationException("Operation is not valid on a node in a different Collection."); } }
internal static bool CheckNodesHaveConnectionConditions(IDirectedConnectedNode <T> firstNode, IDirectedConnectedNode <T> secondNode, IDirectedConnectedNodeCollection <T> collection) { if (firstNode == null || secondNode == null) { return(true); } VerifyAtLeastOneNodeIsInCollection(firstNode, secondNode, collection); if (NodeIsNotInCollection(firstNode, collection) || NodeIsNotInCollection(secondNode, collection)) { return(true); } return(false); }
internal static bool CheckWhether_RemoveNode_IsNeeded(IDirectedConnectedNode <T> node, IDirectedConnectedNodeCollection <T> collection) { return(node == null || NodeIsNotInCollection(node, collection)); }
internal static void Verify_AddToCollection_ConditionsAreSatisfied(IDirectedConnectedNode <T> node, IDirectedConnectedNodeCollection <T> collection) { VerifyCollectionIsNotNull(collection); VerifyNodeIsNotInAnyCollection(node); }
internal static void Verify_ConnectNodes_ConditionsAreSatisfied(IDirectedConnectedNode <T> firstNode, IDirectedConnectedNode <T> secondNode, IDirectedConnectedNodeCollection <T> collection) { VerifyNodeIsNotNull(firstNode); VerifyNodeIsNotNull(secondNode); VerifyNodeIsInCollection(firstNode, collection); VerifyNodeIsInCollection(secondNode, collection); VerifyNodesAreNotTheSameNode(firstNode, secondNode); }
internal static void Verify_GetNodesConnected_ConditionsAreSatisfied(IDirectedConnectedNode <T> node, IDirectedConnectedNodeCollection <T> collection) { VerifyNodeIsNotNull(node); VerifyNodeIsInCollection(node, collection); }