/// <inheritdoc />
 public bool TailOverlappedBy(IIPAddressRange that)
 {
     return(ReferenceEquals(this, that) ||
            Equals(this, that) ||
            (that != null &&
             that.Contains(this.Tail)));
 }
 /// <inheritdoc />
 public bool Contains(IIPAddressRange that)
 {
     return(ReferenceEquals(this, that) ||
            Equals(this, that) ||
            (that != null &&
             this.Contains(that.Head) &&
             this.Contains(that.Tail)));
 }
 /// <inheritdoc />
 public bool Touches(IIPAddressRange that)
 {
     return(that != null &&
            this.AddressFamily == that.AddressFamily &&
            ((this.Tail.IsLessThan(this.Tail.AddressFamily.MaxIPAddress()) &&    // prevent overflow
              Equals(this.Tail.Increment(), that.Head)) ||                       // this tail appears directly before that head
             (that.Tail.IsLessThan(that.Tail.AddressFamily.MaxIPAddress()) &&    // prevent overflow
              Equals(that.Tail.Increment(), this.Head))));                       // that tail appears directly before this head
 }
        public void Compare_Test(int expected,
                                 IIPAddressRange x,
                                 IIPAddressRange y)
        {
            // Arrange
            var comparer = new DefaultIPAddressRangeComparer();

            // Act

            var result = comparer.Compare(x, y);

            // Assert
            Assert.Equal(expected, result);
        }
Example #5
0
 /// <summary>
 ///     Check for contains address range
 /// </summary>
 /// <param name="addressRange"></param>
 /// <returns><see langword="true" /> if the range contains head and tail of the given range</returns>
 public bool Contains(IIPAddressRange addressRange) => addressRange != null &&
 addressRange.Head != null &&
 addressRange.Tail != null &&
 this.Contains(addressRange.Head) &&
 this.Contains(addressRange.Tail);