/// <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); }
/// <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);