public void When_RemoveEdge_Expect_OrderUnimportant(NodeGraph nodeGraph)
        {
            NodeGraph nodeGraphCopy = nodeGraph.DeepCopy();
            Node      edgeStart     = nodeGraph.Nodes[0];
            Node      edgeEnd       = nodeGraph.Nodes[1];

            nodeGraph.RemoveEdge(edgeStart, edgeEnd);
            nodeGraphCopy.RemoveEdge(edgeEnd, edgeStart);

            Assert.That(!nodeGraph.AreLinked(edgeStart, edgeEnd));
            Assert.That(!nodeGraphCopy.AreLinked(edgeStart, edgeEnd));

            Assert.AreEqual(nodeGraph, nodeGraphCopy);
        }
        public void When_NodeGraphChangedExternally_Expect_UnchangedInternally(NodeGraph nodeGraph)
        {
            NodeGraph nodeGraphCopy = nodeGraph.DeepCopy();

            List <Node> myNodes = nodeGraph.NodesDeepCopy;
            List <Edge> myEdges = nodeGraph.EdgesDeepCopy;

            myNodes.RemoveAt(0);
            myEdges.RemoveAt(0);
            myNodes[0].index      = 77;
            myNodes[0].coordinate = new Vect3(6, 3, 2);
            myNodes[0].neighbors.Add(new NodeEdgePair(1561, 1611));

            myEdges[0].index      = 156125;
            myEdges[0].nodeIndex1 = 156125;
            myEdges[0].nodeIndex2 = 156125;


            Assert.AreEqual(nodeGraph, nodeGraphCopy);
        }
        public void When_MergeNode_Expect_MinDistanceKept(NodeGraph nodeGraph)
        {
            NodeGraph nodeGraphCopy = nodeGraph.DeepCopy();

            Node node1 = nodeGraph.GetNode(new Vect3(1, 1, 1));
            Node node2 = nodeGraph.GetNode(new Vect3(2, 2, 2));
            Node node3 = nodeGraph.GetNode(new Vect3(3, 3, 3));
            Node node4 = nodeGraph.GetNode(new Vect3(4, 4, 4));
            Node node5 = nodeGraph.GetNode(new Vect3(5, 5, 5));

            nodeGraph.LinkNodes(node1, node4);
            nodeGraph.SetEdgeWidth(node1, node2, 5);
            nodeGraph.SetEdgeWidth(node2, node3, 10);

            node1 = nodeGraph.MoveNode(node2, node1.coordinate);

            Assert.That(nodeGraph.AreLinked(new Vect3(1, 1, 1), new Vect3(3, 3, 3)));
            Assert.AreEqual(5d, nodeGraph.GetEdgeWidth(new Vect3(1, 1, 1), new Vect3(3, 3, 3)));

            Assert.AreNotEqual(nodeGraph, nodeGraphCopy);
        }
        public void When_MergeNode_Expect_NodeMerged(NodeGraph nodeGraph)
        {
            NodeGraph nodeGraphCopy = nodeGraph.DeepCopy();

            Node node1 = nodeGraph.GetNode(new Vect3(1, 1, 1));
            Node node2 = nodeGraph.GetNode(new Vect3(2, 2, 2));
            Node node3 = nodeGraph.GetNode(new Vect3(3, 3, 3));
            Node node4 = nodeGraph.GetNode(new Vect3(4, 4, 4));
            Node node5 = nodeGraph.GetNode(new Vect3(5, 5, 5));

            nodeGraph.LinkNodes(node2, node3);

            node1 = nodeGraph.MoveNode(node1, node2.coordinate);

            Assert.That(nodeGraph.AreLinked(node1, node3));
            Assert.That(nodeGraph.AreLinked(node1, node4));
            Assert.That(nodeGraph.AreLinked(node1, node5));

            Assert.AreEqual(4, nodeGraph.Nodes.Count);
            Assert.AreEqual(3, nodeGraph.Edges.Count);

            foreach (Node node in nodeGraph.Nodes)
            {
                foreach (NodeEdgePair neighbor in node.neighbors)
                {
                    Assert.AreNotEqual(node2.index, neighbor.nodeIndex);
                }
            }

            foreach (Edge edge in nodeGraph.Edges)
            {
                Assert.AreNotEqual(node2.index, edge.nodeIndex1);
                Assert.AreNotEqual(node2.index, edge.nodeIndex2);
            }

            Assert.AreEqual(nodeGraph.GetNode(new Vect3(1, 1, 1)), null);

            Assert.AreNotEqual(nodeGraph, nodeGraphCopy);
        }
        public void When_MoveNode_Expect_NodeMoved(NodeGraph nodeGraph)
        {
            NodeGraph nodeGraphCopy = nodeGraph.DeepCopy();

            Node node2 = nodeGraph.GetNode(new Vect3(2, 2, 2));
            Node node3 = nodeGraph.GetNode(new Vect3(3, 3, 3));
            Node node4 = nodeGraph.GetNode(new Vect3(4, 4, 4));
            Node node5 = nodeGraph.GetNode(new Vect3(5, 5, 5));

            nodeGraph.MoveNode(new Vect3(1, 1, 1), new Vect3(70, 70, 70));

            Node node1 = nodeGraph.GetNode(new Vect3(70, 70, 70));

            Assert.That(nodeGraph.AreLinked(node1, node2));
            Assert.That(nodeGraph.AreLinked(node1, node3));
            Assert.That(nodeGraph.AreLinked(node1, node4));
            Assert.That(nodeGraph.AreLinked(node1, node5));

            Assert.AreEqual(5, nodeGraph.Nodes.Count);

            Assert.AreEqual(nodeGraph.GetNode(new Vect3(1, 1, 1)), null);

            Assert.AreNotEqual(nodeGraph, nodeGraphCopy);
        }
        public void When_DeepCopyNodeGraph_Expect_ExactCopy(NodeGraph nodeGraph)
        {
            NodeGraph nodeGraphCopy = nodeGraph.DeepCopy();

            Assert.AreEqual(nodeGraph, nodeGraphCopy);
        }