示例#1
0
        public void TestAddIncidentEdges_ReplicateSegmentationFault()
        {
            Vertex v1 = Auxilaries.RandomVertex();
            Vertex v2 = Auxilaries.RandomVertex();
            Vertex v3 = Auxilaries.RandomVertex();

            HalfEdge e11 = new HalfEdge(v1);
            HalfEdge e12 = new HalfEdge(v2);
            HalfEdge e31 = new HalfEdge(v3);
            HalfEdge e32 = new HalfEdge(v1);
            HalfEdge e41 = new HalfEdge(v3);
            HalfEdge e42 = new HalfEdge(v2);

            e11.Twin = e12;
            e12.Twin = e11;
            e31.Twin = e32;
            e32.Twin = e31;
            e41.Twin = e42;
            e42.Twin = e41;

            e12.Next = e32;
            e32.Next = e41;
            e41.Next = e12;

            e12.Previous = e41;
            e32.Previous = e12;
            e41.Previous = e32;

            Face f2 = new Face(2, Auxilaries.RandomNormal());

            f2.AddOuterComponent(e32);
            f2.AddOuterComponent(e41);
            f2.AddOuterComponent(e12);

            e32.IncidentFace = f2;
            e41.IncidentFace = f2;
            e12.IncidentFace = f2;

            v1.AddIncidentEdge(e11);
            v1.AddIncidentEdge(e32);

            v2.AddIncidentEdge(e42);
            v2.AddIncidentEdge(e12);

            v3.AddIncidentEdge(e31);
            v3.AddIncidentEdge(e41);

            Assert.Contains(e11, v1.IncidentEdges);
            Assert.Contains(e32, v1.IncidentEdges);

            Assert.Contains(e42, v2.IncidentEdges);
            Assert.Contains(e12, v2.IncidentEdges);

            Assert.Contains(e31, v3.IncidentEdges);
            Assert.Contains(e41, v3.IncidentEdges);
        }
示例#2
0
        public void TestAddIncidentEdges_TwinsAndNextAndPreviousSet()
        {
            Vertex v1 = Auxilaries.RandomVertex();
            Vertex v2 = Auxilaries.RandomVertex();
            Vertex v3 = Auxilaries.RandomVertex();

            HalfEdge e11 = new HalfEdge(v1);
            HalfEdge e12 = new HalfEdge(v2);
            HalfEdge e31 = new HalfEdge(v3);
            HalfEdge e32 = new HalfEdge(v1);
            HalfEdge e41 = new HalfEdge(v3);
            HalfEdge e42 = new HalfEdge(v2);

            e11.Twin = e12;
            e12.Twin = e11;
            e31.Twin = e32;
            e32.Twin = e31;
            e41.Twin = e42;
            e42.Twin = e41;


            e12.Next = e32;
            e32.Next = e41;
            e41.Next = e12;

            e12.Previous = e41;
            e32.Previous = e12;
            e41.Previous = e32;

            v1.AddIncidentEdge(e32);

            Assert.Contains(e32, v1.IncidentEdges);
        }
示例#3
0
        public void TestAddIncidentEdges_NoOtherPropertiesSet()
        {
            Vertex   v1  = Auxilaries.RandomVertex();
            HalfEdge e11 = new HalfEdge(v1);

            v1.AddIncidentEdge(e11);

            Assert.Contains(e11, v1.IncidentEdges);
        }
示例#4
0
        public void TestEquals_IncidentEdgesNotEqual()
        {
            Vector3 position = Auxilaries.RandomPosition();

            Vertex thisVertex  = new Vertex(position);
            Vertex otherVertex = new Vertex(position);

            HalfEdge edge1 = Auxilaries.RandomHalfEdge();
            HalfEdge edge2 = Auxilaries.RandomHalfEdge();
            HalfEdge edge3 = Auxilaries.RandomHalfEdge();

            thisVertex.AddIncidentEdge(edge1);
            thisVertex.AddIncidentEdge(edge2);

            otherVertex.AddIncidentEdge(edge3);

            Assert.IsFalse(thisVertex.Equals(otherVertex));
            Assert.IsFalse(otherVertex.Equals(thisVertex));
            Assert.AreNotEqual(thisVertex.GetHashCode(), otherVertex.GetHashCode());
        }
示例#5
0
        public void XAndyAreEqual_IncidentEdgesDifferent()
        {
            Vector3 positon = Auxilaries.RandomPosition();
            Vertex  x       = new Vertex(positon);
            Vertex  y       = new Vertex(positon);

            x.AddIncidentEdge(Auxilaries.RandomHalfEdge());
            y.AddIncidentEdge(Auxilaries.RandomHalfEdge());

            Assert.IsTrue(comparer.Equals(x, y));
            Assert.AreEqual(comparer.GetHashCode(x), comparer.GetHashCode(y));
        }
示例#6
0
        public void TestAddIncidentEdges_TwinsAndNextAndPreviousOuterComponentSet()
        {
            Vertex v1 = Auxilaries.RandomVertex();
            Vertex v2 = Auxilaries.RandomVertex();
            Vertex v3 = Auxilaries.RandomVertex();

            HalfEdge e11 = new HalfEdge(v1);
            HalfEdge e12 = new HalfEdge(v2);
            HalfEdge e31 = new HalfEdge(v3);
            HalfEdge e32 = new HalfEdge(v1);
            HalfEdge e41 = new HalfEdge(v3);
            HalfEdge e42 = new HalfEdge(v2);

            e11.Twin = e12;
            e12.Twin = e11;
            e31.Twin = e32;
            e32.Twin = e31;
            e41.Twin = e42;
            e42.Twin = e41;


            e12.Next = e32;
            e32.Next = e41;
            e41.Next = e12;

            e12.Previous = e41;
            e32.Previous = e12;
            e41.Previous = e32;

            Face f2 = new Face(2, Auxilaries.RandomNormal());

            f2.AddOuterComponent(e32);
            f2.AddOuterComponent(e41);
            f2.AddOuterComponent(e12);

            v1.AddIncidentEdge(e32);

            Assert.Contains(e32, v1.IncidentEdges);
        }