public void IsOnLineSegment() { bool expected; bool returned; V2 s, p1, p2; /**************************************************/ // --- TEST --- // p1=p2=s=0, no line s = new V2(0.0f, 0.0f); p1 = new V2(0.0f, 0.0f); p2 = new V2(0.0f, 0.0f); expected = true; returned = s.IsOnLineSegment(p1, p2); Assert.AreEqual(expected, returned); // --- TEST --- // p1=s s = new V2(0.0f, 0.0f); p1 = new V2(0.0f, 0.0f); p2 = new V2(0.0f, 1.0f); expected = true; returned = s.IsOnLineSegment(p1, p2); Assert.AreEqual(expected, returned); // --- TEST --- // p2=s s = new V2(0.0f, 1.0f); p1 = new V2(0.0f, 0.0f); p2 = new V2(0.0f, 1.0f); expected = true; returned = s.IsOnLineSegment(p1, p2); Assert.AreEqual(expected, returned); /**************************************************/ // --- TEST --- // s is somewhere on line s = new V2(0.5f, 0.5f); p1 = new V2(0.0f, 0.0f); p2 = new V2(1.0f, 1.0f); expected = true; returned = s.IsOnLineSegment(p1, p2); Assert.AreEqual(expected, returned); // --- TEST --- // s is somewhere on line s = new V2(-0.5f, -0.5f); p1 = new V2(0.0f, 0.0f); p2 = new V2(-1.0f, -1.0f); expected = true; returned = s.IsOnLineSegment(p1, p2); Assert.AreEqual(expected, returned); // --- TEST --- // s is somewhere on line s = new V2(-0.5f, 0.5f); p1 = new V2(0.0f, 0.0f); p2 = new V2(-1.0f, 1.0f); expected = true; returned = s.IsOnLineSegment(p1, p2); Assert.AreEqual(expected, returned); // --- TEST --- // s is somewhere on line s = new V2(0.5f, -0.5f); p1 = new V2(0.0f, 0.0f); p2 = new V2(1.0f, -1.0f); expected = true; returned = s.IsOnLineSegment(p1, p2); Assert.AreEqual(expected, returned); /**************************************************/ // --- TEST --- // s is not on line segment, but on same infinite line s = new V2(2.0f, 2.0f); p1 = new V2(0.0f, 0.0f); p2 = new V2(1.0f, 1.0f); expected = false; returned = s.IsOnLineSegment(p1, p2); Assert.AreEqual(expected, returned); // --- TEST --- // s is not on line segment, but on same infinite line s = new V2(-2.0f, -2.0f); p1 = new V2(0.0f, 0.0f); p2 = new V2(1.0f, 1.0f); expected = false; returned = s.IsOnLineSegment(p1, p2); Assert.AreEqual(expected, returned); // --- TEST --- // s is not on line, but close aside of it (in bbox) s = new V2(0.45f, 0.55f); p1 = new V2(0.0f, 0.0f); p2 = new V2(1.0f, 1.0f); expected = false; returned = s.IsOnLineSegment(p1, p2); Assert.AreEqual(expected, returned); // --- TEST --- // s is not on line and far (outside bbox) s = new V2(0.0f, 1000.0f); p1 = new V2(0.0f, 0.0f); p2 = new V2(1.0f, 1.0f); expected = false; returned = s.IsOnLineSegment(p1, p2); Assert.AreEqual(expected, returned); // --- TEST --- // s is on line s = new V2(14304f, 32512f); p1 = new V2(15872f, 32512f); p2 = new V2(3433.6f, 32512f); expected = true; returned = s.IsOnLineSegment(p1, p2); Assert.AreEqual(expected, returned); }