public void LineSegment_IntersectWithSegment_ShouldReturnLineIntersect()
        {
            LineSegment lineSegment1 = new LineSegment(Point.MakePointWithInches(1, 1, 1));
            LineSegment lineSegment2 = new LineSegment(Point.MakePointWithInches(1, 0, 0), Point.MakePointWithInches(0, 1, 1));

            Line lineSegmentToLine2 = new Line(lineSegment2);

            lineSegment1.IntersectWithSegment(lineSegment2).Should().Be(lineSegment1.IntersectWithLine(lineSegmentToLine2));
        }
        public void LineSegment_IntersectWithLine_ShouldThrowNullPointerException_IfLineIsNull()
        {
            LineSegment lineSegment = new LineSegment(Point.MakePointWithInches(1, 1, 1));
            Line line = null;

            Action intersect = () => lineSegment.IntersectWithLine(line);
            intersect.ShouldThrow<Exception>();
        }
        public void LineSegment_IntersectWithLine_ShouldReturnNull_IfLinesIntersectButNotOnSegment()
        {
            LineSegment lineSegment = new LineSegment(Point.MakePointWithInches(1, 1, 1), Point.MakePointWithInches(2, 2, 2));
            Line line = new Line(Point.MakePointWithInches(0, 0, 1), Point.MakePointWithInches(1, 1, 0));

            lineSegment.IntersectWithLine(line).Should().BeNull();
        }
        public void LineSegment_IntersectWithLine_ShouldBeLineIntersection_IfLineSegmentEndPointIsOnLine()
        {
            LineSegment lineSegment = new LineSegment(Point.MakePointWithInches(1, 1, 1));
            Line line = new Line(Point.MakePointWithInches(0, 0, 1), Point.MakePointWithInches(0, 0, 2));

            Line lineSegmentToLine = new Line(lineSegment);

            lineSegment.IntersectWithLine(line).Should().Be(lineSegmentToLine.IntersectWithLine(line));
        }
        public void LineSegment_IntersectWithLine_ShouldEqualLineIntersect()
        {
            LineSegment lineSegment = new LineSegment(Point.MakePointWithInches(1, 1, 1));
            Line line = new Line(Point.MakePointWithInches(0, 0, 1), Point.MakePointWithInches(1, 1, 0));

            Line lineSegmentToLine = new Line(lineSegment);

            lineSegment.IntersectWithLine(line).Should().Be(lineSegmentToLine.IntersectWithLine(line));
        }