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

            Action intersect = () => lineSegment1.IntersectWithSegment(lineSegment2);
            intersect.ShouldThrow<Exception>();
        }
        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_IntersectWithSegment_ShouldReturnNull_IfLinesFromLineSegmentsDoNotIntersect()
        {
            LineSegment lineSegment1 = new LineSegment(Point.MakePointWithInches(1, 1, 1));
            LineSegment lineSegment2 = new LineSegment(Point.MakePointWithInches(0, 0, 1), Point.MakePointWithInches(1, 1, 2));

            lineSegment1.IntersectWithSegment(lineSegment2).Should().BeNull();
        }
        public void LineSegment_IntersectWithSegment_ShouldReturnNull_IfLinesFromLineSegmentsIntersectButNotOnInstanceSegment()
        {
            LineSegment lineSegment1 = new LineSegment(Point.MakePointWithInches(0, 3, 0), Point.MakePointWithInches(1, 2, 1));
            LineSegment lineSegment2 = new LineSegment(Point.MakePointWithInches(3, 3, 3));

            lineSegment1.IntersectWithSegment(lineSegment2).Should().BeNull();
        }
        public void LineSegment_IntersectWithSegment_ShouldReturnEndPoint_IfEndPointIsBaseOrEndPointOfOtherSegment()
        {
            LineSegment lineSegment1 = new LineSegment(Point.MakePointWithInches(2, 2, 2), Point.MakePointWithInches(1, 1, 1));
            LineSegment lineSegment2 = new LineSegment(Point.MakePointWithInches(-1, -1, -1), Point.MakePointWithInches(1, 1, 1));

            lineSegment1.IntersectWithSegment(lineSegment2).Should().Be(lineSegment1.EndPoint);
        }