public void Test_boundary_kind_plus()
        {
            inclusiveStart.Plus(exclusiveStart).Should().Be(inclusiveStart);
            inclusiveEnd.Plus(exclusiveEnd).Should().Be(inclusiveEnd);

            inclusiveStart.Plus(inclusiveEnd).Should().Be(continuation);
            inclusiveStart.Plus(exclusiveEnd).Should().Be(continuation);

            inclusiveEnd.Plus(inclusiveStart).Should().Be(continuation);
            inclusiveEnd.Plus(exclusiveStart).Should().Be(continuation);

            continuation.Plus(inclusiveStart).Should().Be(continuation);
        }
        public void Test_boundary_kind_complement()
        {
            inclusiveStart.Complement().Should().Be(exclusiveEnd);
            inclusiveEnd.Complement().Should().Be(exclusiveStart);

            exclusiveStart.Complement().Should().Be(inclusiveEnd);
            exclusiveEnd.Complement().Should().Be(inclusiveStart);

            degenerate.Complement().Should().Be(exclusiveStart.Plus(exclusiveEnd));
        }
 private static IEnumerable <Boundary <T> > PlusBoundaries(IIntervalSet <T> one, IIntervalSet <T> other)
 {
     foreach (Boundary <T> otherBoundary in other.Boundaries)
     {
         BoundaryKind cross = one.Cross(otherBoundary.Location);
         if (cross == null)
         {
             yield return(otherBoundary);
         }
         else
         {
             BoundaryKind plusKind = cross.Plus(otherBoundary.Kind);
             yield return(new Boundary <T>(otherBoundary.Location, plusKind));
         }
     }
 }