From f6e80345dabd3618bae08736278fb215a2b6e946 Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sat, 29 Mar 2025 17:43:37 +0100 Subject: [PATCH 01/25] Chore: file scoped namespace --- .../BigIntegerExtensions.cs | 140 +- src/System.Net.IPNetwork/CidrClassFull.cs | 49 +- src/System.Net.IPNetwork/CidrClassLess.cs | 35 +- src/System.Net.IPNetwork/CidrGuess.cs | 31 +- src/System.Net.IPNetwork/ICidrGuess.cs | 23 +- .../IPAddressCollection.cs | 197 +- .../IPAddressExtensions.cs | 23 +- src/System.Net.IPNetwork/IPNetwork2.cs | 4128 ++++++++--------- .../IPNetworkCollection.cs | 217 +- .../Properties/AssemblyInfo.cs | 3 + 10 files changed, 2421 insertions(+), 2425 deletions(-) diff --git a/src/System.Net.IPNetwork/BigIntegerExtensions.cs b/src/System.Net.IPNetwork/BigIntegerExtensions.cs index 5b8b576c..9736bba4 100644 --- a/src/System.Net.IPNetwork/BigIntegerExtensions.cs +++ b/src/System.Net.IPNetwork/BigIntegerExtensions.cs @@ -2,28 +2,29 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net +namespace System.Net; + +using System; +using System.Numerics; +using System.Text; + +/// +/// Extension methods to convert +/// instances to hexadecimal, octal, and binary strings. +/// +[CLSCompliant(true)] +public static class BigIntegerExtensions { - using System; - using System.Numerics; - using System.Text; - /// - /// Extension methods to convert - /// instances to hexadecimal, octal, and binary strings. + /// Converts a to a binary string. /// - public static class BigIntegerExtensions + /// A . + /// + /// A containing a binary + /// representation of the supplied . + /// + public static string ToBinaryString(this BigInteger bigint) { - /// - /// Converts a to a binary string. - /// - /// A . - /// - /// A containing a binary - /// representation of the supplied . - /// - public static string ToBinaryString(this BigInteger bigint) - { byte[] bytes = bigint.ToByteArray(); int idx = bytes.Length - 1; @@ -51,29 +52,29 @@ public static string ToBinaryString(this BigInteger bigint) return base2.ToString(); } - /// - /// Converts a to a hexadecimal string. - /// - /// A . - /// - /// A containing a hexadecimal - /// representation of the supplied . - /// - public static string ToHexadecimalString(this BigInteger bigint) - { + /// + /// Converts a to a hexadecimal string. + /// + /// A . + /// + /// A containing a hexadecimal + /// representation of the supplied . + /// + public static string ToHexadecimalString(this BigInteger bigint) + { return bigint.ToString("X"); } - /// - /// Converts a to a octal string. - /// - /// A . - /// - /// A containing an octal - /// representation of the supplied . - /// - public static string ToOctalString(this BigInteger bigint) - { + /// + /// Converts a to a octal string. + /// + /// A . + /// + /// A containing an octal + /// representation of the supplied . + /// + public static string ToOctalString(this BigInteger bigint) + { byte[] bytes = bigint.ToByteArray(); int idx = bytes.Length - 1; @@ -123,36 +124,36 @@ public static string ToOctalString(this BigInteger bigint) return base8.ToString(); } - /// - /// - /// Reverse a Positive BigInteger ONLY - /// Bitwise ~ operator - /// - /// Input : FF FF FF FF - /// Width : 4 - /// Result : 00 00 00 00 - /// - /// - /// Input : 00 00 00 00 - /// Width : 4 - /// Result : FF FF FF FF - /// - /// Input : FF FF FF FF - /// Width : 8 - /// Result : FF FF FF FF 00 00 00 00 - /// - /// - /// Input : 00 00 00 00 - /// Width : 8 - /// Result : FF FF FF FF FF FF FF FF. - /// - /// - /// The positive number to bitwise reverse. - /// The width of the parameter. - /// - /// A number representing the input bitwise reversed. - public static BigInteger PositiveReverse(this BigInteger input, int width) - { + /// + /// + /// Reverse a Positive BigInteger ONLY + /// Bitwise ~ operator + /// + /// Input : FF FF FF FF + /// Width : 4 + /// Result : 00 00 00 00 + /// + /// + /// Input : 00 00 00 00 + /// Width : 4 + /// Result : FF FF FF FF + /// + /// Input : FF FF FF FF + /// Width : 8 + /// Result : FF FF FF FF 00 00 00 00 + /// + /// + /// Input : 00 00 00 00 + /// Width : 8 + /// Result : FF FF FF FF FF FF FF FF. + /// + /// + /// The positive number to bitwise reverse. + /// The width of the parameter. + /// + /// A number representing the input bitwise reversed. + public static BigInteger PositiveReverse(this BigInteger input, int width) + { byte[] bytes = input.ToByteArray(); int length = width + 1; @@ -175,5 +176,4 @@ public static BigInteger PositiveReverse(this BigInteger input, int width) output[output.Length - 1] = 0; return new BigInteger(output); } - } -} +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/CidrClassFull.cs b/src/System.Net.IPNetwork/CidrClassFull.cs index 54193435..64b4ec21 100644 --- a/src/System.Net.IPNetwork/CidrClassFull.cs +++ b/src/System.Net.IPNetwork/CidrClassFull.cs @@ -2,33 +2,33 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net -{ - using System.Net.Sockets; +namespace System.Net; + +using System.Net.Sockets; +/// +/// Class CidrClassFull tries to guess CIDR in a ClassFull way. +/// +public sealed class CidrClassFull : ICidrGuess +{ /// - /// Class CidrClassFull tries to guess CIDR in a ClassFull way. + /// + /// IPV4 : + /// + /// Class Leading bits Default netmask + /// A (CIDR /8) 00 255.0.0.0 + /// A (CIDR /8) 01 255.0.0.0 + /// B (CIDR /16) 10 255.255.0.0 + /// C (CIDR /24) 11 255.255.255.0 + /// + /// IPV6 : 64. + /// /// - public sealed class CidrClassFull : ICidrGuess + /// A string representing the CIDR to convert. + /// A byte representing the netmask in cidr format (/24). + /// true if ip was converted successfully; otherwise, false. + public bool TryGuessCidr(string ip, out byte cidr) { - /// - /// - /// IPV4 : - /// - /// Class Leading bits Default netmask - /// A (CIDR /8) 00 255.0.0.0 - /// A (CIDR /8) 01 255.0.0.0 - /// B (CIDR /16) 10 255.255.0.0 - /// C (CIDR /24) 11 255.255.255.0 - /// - /// IPV6 : 64. - /// - /// - /// A string representing the CIDR to convert. - /// A byte representing the netmask in cidr format (/24). - /// true if ip was converted successfully; otherwise, false. - public bool TryGuessCidr(string ip, out byte cidr) - { IPAddress ipaddress = null; bool parsed = IPAddress.TryParse(string.Format("{0}", ip), out ipaddress); if (parsed == false) @@ -64,5 +64,4 @@ public bool TryGuessCidr(string ip, out byte cidr) cidr = 0; return false; } - } -} +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/CidrClassLess.cs b/src/System.Net.IPNetwork/CidrClassLess.cs index 2778f79d..f815f295 100644 --- a/src/System.Net.IPNetwork/CidrClassLess.cs +++ b/src/System.Net.IPNetwork/CidrClassLess.cs @@ -2,26 +2,26 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net -{ - using System.Net.Sockets; +namespace System.Net; + +using System.Net.Sockets; +/// +/// Try to guess a CIDR in a ClassLess way ie. ipv4 = 32, ipv6 = 128. +/// +public sealed class CidrClassLess : ICidrGuess +{ /// - /// Try to guess a CIDR in a ClassLess way ie. ipv4 = 32, ipv6 = 128. + /// + /// IPV4 : 32 + /// IPV6 : 128. + /// /// - public sealed class CidrClassLess : ICidrGuess + /// A string representing an ipadress that will be used to guess CIDR. + /// A byte representing the netmask in cidr format (/24). + /// true if ip was converted successfully; otherwise, false. + public bool TryGuessCidr(string ip, out byte cidr) { - /// - /// - /// IPV4 : 32 - /// IPV6 : 128. - /// - /// - /// A string representing an ipadress that will be used to guess CIDR. - /// A byte representing the netmask in cidr format (/24). - /// true if ip was converted successfully; otherwise, false. - public bool TryGuessCidr(string ip, out byte cidr) - { IPAddress ipaddress = null; bool parsed = IPAddress.TryParse(string.Format("{0}", ip), out ipaddress); if (parsed == false) @@ -39,5 +39,4 @@ public bool TryGuessCidr(string ip, out byte cidr) cidr = 32; return true; } - } -} +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/CidrGuess.cs b/src/System.Net.IPNetwork/CidrGuess.cs index 2baf56e8..f1c86888 100644 --- a/src/System.Net.IPNetwork/CidrGuess.cs +++ b/src/System.Net.IPNetwork/CidrGuess.cs @@ -2,24 +2,23 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net +namespace System.Net; + +/// +/// A static helper CidrGuess class. +/// +public static class CidrGuess { /// - /// A static helper CidrGuess class. + /// Gets classFull guess. /// - public static class CidrGuess - { - /// - /// Gets classFull guess. - /// - public static ICidrGuess ClassFull { get => _cidr_classfull.Value; } + public static ICidrGuess ClassFull { get => _cidr_classfull.Value; } - /// - /// Gets classLess guess. - /// - public static ICidrGuess ClassLess { get => _cidr_classless.Value; } + /// + /// Gets classLess guess. + /// + public static ICidrGuess ClassLess { get => _cidr_classless.Value; } - private static readonly Lazy _cidr_classless = new(() => new CidrClassLess()); - private static readonly Lazy _cidr_classfull = new(() => new CidrClassFull()); - } -} + private static readonly Lazy _cidr_classless = new(() => new CidrClassLess()); + private static readonly Lazy _cidr_classfull = new(() => new CidrClassFull()); +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/ICidrGuess.cs b/src/System.Net.IPNetwork/ICidrGuess.cs index 20bdc13b..2b061c2f 100644 --- a/src/System.Net.IPNetwork/ICidrGuess.cs +++ b/src/System.Net.IPNetwork/ICidrGuess.cs @@ -2,19 +2,18 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net +namespace System.Net; + +/// +/// +/// +public interface ICidrGuess { /// /// /// - public interface ICidrGuess - { - /// - /// - /// - /// An ip adress to guess the ip network CIDR. - /// A byte representing the netmask in cidr format (/24). - /// true if ip was converted successfully; otherwise, false. - bool TryGuessCidr(string ip, out byte cidr); - } -} + /// An ip adress to guess the ip network CIDR. + /// A byte representing the netmask in cidr format (/24). + /// true if ip was converted successfully; otherwise, false. + bool TryGuessCidr(string ip, out byte cidr); +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPAddressCollection.cs b/src/System.Net.IPNetwork/IPAddressCollection.cs index bb7c190d..db1598fd 100644 --- a/src/System.Net.IPNetwork/IPAddressCollection.cs +++ b/src/System.Net.IPNetwork/IPAddressCollection.cs @@ -2,55 +2,55 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net -{ - using System.Collections; - using System.Collections.Generic; - using System.Numerics; +namespace System.Net; + +using System.Collections; +using System.Collections.Generic; +using System.Numerics; +/// +/// Represents different filters for a collection of items. +/// +public enum FilterEnum +{ /// - /// Represents different filters for a collection of items. + /// Every IPAdresses are returned /// - public enum FilterEnum - { - /// - /// Every IPAdresses are returned - /// - All, - /// - /// Returns only usable IPAdresses - /// - Usable, - } - + All, /// - /// Represents a collection of IP addresses within a specific IP network. + /// Returns only usable IPAdresses /// - public class IPAddressCollection : IEnumerable, IEnumerator - { - private readonly IPNetwork2 _ipnetwork; - private readonly FilterEnum _filter; - private BigInteger _enumerator; + Usable, +} - internal IPAddressCollection(IPNetwork2 ipnetwork, FilterEnum filter) - { +/// +/// Represents a collection of IP addresses within a specific IP network. +/// +public class IPAddressCollection : IEnumerable, IEnumerator +{ + private readonly IPNetwork2 _ipnetwork; + private readonly FilterEnum _filter; + private BigInteger _enumerator; + + internal IPAddressCollection(IPNetwork2 ipnetwork, FilterEnum filter) + { this._ipnetwork = ipnetwork; this._filter = filter; this.Reset(); } - #region Count, Array, Enumerator + #region Count, Array, Enumerator - /// - /// Gets the count of IP addresses within the network. - /// - /// - /// The count of IP addresses within the network. - /// - public BigInteger Count + /// + /// Gets the count of IP addresses within the network. + /// + /// + /// The count of IP addresses within the network. + /// + public BigInteger Count + { + get { - get - { BigInteger count = this._ipnetwork.Total; if (this._filter == FilterEnum.Usable) { @@ -64,18 +64,18 @@ public BigInteger Count return count; } - } + } - /// - /// Gets the IP address corresponding to the given index from the IPNetwork collection. - /// - /// The index of the IP address to retrieve. - /// The IP address corresponding to the given index. - /// Thrown when the given index is greater than or equal to the Count property of the IPNetwork collection. - public IPAddress this[BigInteger i] + /// + /// Gets the IP address corresponding to the given index from the IPNetwork collection. + /// + /// The index of the IP address to retrieve. + /// The IP address corresponding to the given index. + /// Thrown when the given index is greater than or equal to the Count property of the IPNetwork collection. + public IPAddress this[BigInteger i] + { + get { - get - { if (i >= this.Count) { throw new ArgumentOutOfRangeException("i"); @@ -92,35 +92,35 @@ public IPAddress this[BigInteger i] return ipn[index].Network; } - } + } - #endregion + #endregion - #region Legacy Enumeration + #region Legacy Enumeration - /// - /// Gets the current from the collection. - /// - /// The current . - public IPAddress Current + /// + /// Gets the current from the collection. + /// + /// The current . + public IPAddress Current + { + get { - get - { return this[this._enumerator]; } - } + } - object IEnumerator.Current + object IEnumerator.Current + { + get { - get - { return this.Current; } - } + } - /// - public bool MoveNext() - { + /// + public bool MoveNext() + { this._enumerator++; if (this._enumerator >= this.Count) { @@ -130,58 +130,58 @@ public bool MoveNext() return true; } - /// - public void Reset() - { + /// + public void Reset() + { this._enumerator = -1; } - /// - public void Dispose() - { + /// + public void Dispose() + { // nothing to dispose } - #endregion + #endregion - #region Enumeration - IEnumerator IEnumerable.GetEnumerator() - { + #region Enumeration + IEnumerator IEnumerable.GetEnumerator() + { return new Enumerator(this); } - IEnumerator IEnumerable.GetEnumerator() - { + IEnumerator IEnumerable.GetEnumerator() + { return new Enumerator(this); } - private struct Enumerator : IEnumerator - { - private readonly IPAddressCollection _collection; - private BigInteger _enumerator; + private struct Enumerator : IEnumerator + { + private readonly IPAddressCollection _collection; + private BigInteger _enumerator; - object IEnumerator.Current + object IEnumerator.Current + { + get { - get - { return this.Current; } - } + } - public IPAddress Current + public IPAddress Current + { + get { - get - { return this._collection[this._enumerator]; } - } + } - public void Dispose() - { + public void Dispose() + { // nothing to dispose } - public bool MoveNext() - { + public bool MoveNext() + { this._enumerator++; if (this._enumerator >= this._collection.Count) { @@ -191,17 +191,16 @@ public bool MoveNext() return true; } - public void Reset() - { + public void Reset() + { this._enumerator = -1; } - public Enumerator(IPAddressCollection collection) - { + public Enumerator(IPAddressCollection collection) + { this._collection = collection; this._enumerator = -1; } - } - #endregion } -} + #endregion +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPAddressExtensions.cs b/src/System.Net.IPNetwork/IPAddressExtensions.cs index b23f50ba..76725db2 100644 --- a/src/System.Net.IPNetwork/IPAddressExtensions.cs +++ b/src/System.Net.IPNetwork/IPAddressExtensions.cs @@ -2,20 +2,20 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net +namespace System.Net; + +/// +/// A collection of extension functions applied to an IPAddress value. +/// +public static class IPAddressExtensions { /// - /// A collection of extension functions applied to an IPAddress value. + /// Convert an IPAddress value into a single-address IPNetwork for that address. /// - public static class IPAddressExtensions + /// IPAddress to convert. + /// IPNetwork object covering that IPAddress only. + public static IPNetwork2 AsIPNetwork(this IPAddress addr) { - /// - /// Convert an IPAddress value into a single-address IPNetwork for that address. - /// - /// IPAddress to convert. - /// IPNetwork object covering that IPAddress only. - public static IPNetwork2 AsIPNetwork(this IPAddress addr) - { /* IPv4? */ if (addr.AddressFamily == Sockets.AddressFamily.InterNetwork) { @@ -34,5 +34,4 @@ public static IPNetwork2 AsIPNetwork(this IPAddress addr) throw new ArgumentException( $"AsIPNetwork does not support addresses in the {addr.AddressFamily} family."); } - } -} +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2.cs b/src/System.Net.IPNetwork/IPNetwork2.cs index 5b2a534e..b5ddfec9 100644 --- a/src/System.Net.IPNetwork/IPNetwork2.cs +++ b/src/System.Net.IPNetwork/IPNetwork2.cs @@ -2,229 +2,230 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net +namespace System.Net; + +using System.Collections.Generic; +using System.IO; +using System.Net.Sockets; +using System.Numerics; +using System.Runtime.Serialization; +using System.Text.RegularExpressions; + +/// +/// IP Network utility class. +/// Use IPNetwork.Parse to create instances. +/// +[Serializable] +[CLSCompliant(true)] +public sealed class IPNetwork2 : IComparable, ISerializable { - using System.Collections.Generic; - using System.IO; - using System.Net.Sockets; - using System.Numerics; - using System.Runtime.Serialization; - using System.Text.RegularExpressions; + #region properties + + private readonly object _sync = new(); + private readonly int _hashCode; + private BigInteger _ipaddress; + private byte _cidr; + private BigInteger? _cachedBroadcast; + + private AddressFamily _family; /// - /// IP Network utility class. - /// Use IPNetwork.Parse to create instances. + /// Gets or sets the value of the IPNetwork property. /// - [Serializable] - public sealed class IPNetwork2 : IComparable, ISerializable + [DataMember(Name = "IPNetwork", IsRequired = true)] + public string Value { - #region properties - - private readonly object _sync = new(); - private readonly int _hashCode; - private BigInteger _ipaddress; - private byte _cidr; - private BigInteger? _cachedBroadcast; - - private AddressFamily _family; - - /// - /// Gets or sets the value of the IPNetwork property. - /// - [DataMember(Name = "IPNetwork", IsRequired = true)] - public string Value + get { - get - { - return this.ToString(); - } + return this.ToString(); + } - set + set + { + var ipnetwork = IPNetwork2.Parse(value); + this._ipaddress = ipnetwork._ipaddress; + this._family = ipnetwork._family; + this._cidr = ipnetwork._cidr; + lock (_sync) { - var ipnetwork = IPNetwork2.Parse(value); - this._ipaddress = ipnetwork._ipaddress; - this._family = ipnetwork._family; - this._cidr = ipnetwork._cidr; - lock (_sync) - { - this._cachedBroadcast = null; - } + this._cachedBroadcast = null; } } + } - #endregion + #endregion - #region accessors + #region accessors - internal BigInteger _network + internal BigInteger _network + { + get { - get - { - BigInteger uintNetwork = this._ipaddress & this._netmask; - return uintNetwork; - } + BigInteger uintNetwork = this._ipaddress & this._netmask; + return uintNetwork; } + } - /// - /// Gets network address. - /// - public IPAddress Network + /// + /// Gets network address. + /// + public IPAddress Network + { + get { - get - { - return IPNetwork2.ToIPAddress(this._network, this._family); - } + return IPNetwork2.ToIPAddress(this._network, this._family); } + } - /// - /// Gets address Family. - /// - public AddressFamily AddressFamily + /// + /// Gets address Family. + /// + public AddressFamily AddressFamily + { + get { - get - { - return this._family; - } + return this._family; } + } - internal BigInteger _netmask + internal BigInteger _netmask + { + get { - get - { - return IPNetwork2.ToUint(this._cidr, this._family); - } + return IPNetwork2.ToUint(this._cidr, this._family); } + } - /// - /// Gets netmask. - /// - public IPAddress Netmask + /// + /// Gets netmask. + /// + public IPAddress Netmask + { + get { - get - { - return IPNetwork2.ToIPAddress(this._netmask, this._family); - } + return IPNetwork2.ToIPAddress(this._netmask, this._family); } + } - internal BigInteger _broadcast + internal BigInteger _broadcast + { + get { - get + var cached = this._cachedBroadcast; + if (cached != null) { - var cached = this._cachedBroadcast; - if (cached != null) - { - return cached.Value; - } - - lock (_sync) - { - var cached2 = this._cachedBroadcast; - if (cached2 != null) - { - return cached2.Value; - } - - var network = this._network; - var computed = CreateBroadcast(ref network, this._netmask, this._family); - this._cachedBroadcast = computed; - return computed; - } + return cached.Value; } - } - /// - /// Gets broadcast address. - /// - public IPAddress Broadcast - { - get + lock (_sync) { - if (this._family == Sockets.AddressFamily.InterNetworkV6) + var cached2 = this._cachedBroadcast; + if (cached2 != null) { - return null; + return cached2.Value; } - return IPNetwork2.ToIPAddress(this._broadcast, this._family); + var network = this._network; + var computed = CreateBroadcast(ref network, this._netmask, this._family); + this._cachedBroadcast = computed; + return computed; } } + } - /// - /// Gets first usable IP adress in Network. - /// - public IPAddress FirstUsable + /// + /// Gets broadcast address. + /// + public IPAddress Broadcast + { + get { - get + if (this._family == Sockets.AddressFamily.InterNetworkV6) { - BigInteger first = this._family == Sockets.AddressFamily.InterNetworkV6 - ? this._network - : (this.Usable <= 0) ? this._network : this._network + 1; - return IPNetwork2.ToIPAddress(first, this._family); + return null; } + + return IPNetwork2.ToIPAddress(this._broadcast, this._family); } + } - /// - /// Gets last usable IP adress in Network. - /// - public IPAddress LastUsable + /// + /// Gets first usable IP adress in Network. + /// + public IPAddress FirstUsable + { + get { - get - { - BigInteger last = this._family == Sockets.AddressFamily.InterNetworkV6 - ? this._broadcast - : (this.Usable <= 0) ? this._network : this._broadcast - 1; - return IPNetwork2.ToIPAddress(last, this._family); - } + BigInteger first = this._family == Sockets.AddressFamily.InterNetworkV6 + ? this._network + : (this.Usable <= 0) ? this._network : this._network + 1; + return IPNetwork2.ToIPAddress(first, this._family); } + } - /// - /// Gets number of usable IP adress in Network. - /// - public BigInteger Usable + /// + /// Gets last usable IP adress in Network. + /// + public IPAddress LastUsable + { + get { - get - { - if (this._family == Sockets.AddressFamily.InterNetworkV6) - { - return this.Total; - } - - byte[] mask = new byte[] { 0xff, 0xff, 0xff, 0xff, 0x00 }; - var bmask = new BigInteger(mask); - BigInteger usableIps = (this._cidr > 30) ? 0 : ((bmask >> this._cidr) - 1); - return usableIps; - } + BigInteger last = this._family == Sockets.AddressFamily.InterNetworkV6 + ? this._broadcast + : (this.Usable <= 0) ? this._network : this._broadcast - 1; + return IPNetwork2.ToIPAddress(last, this._family); } + } - /// - /// Gets number of IP adress in Network. - /// - public BigInteger Total + /// + /// Gets number of usable IP adress in Network. + /// + public BigInteger Usable + { + get { - get + if (this._family == Sockets.AddressFamily.InterNetworkV6) { - int max = this._family == Sockets.AddressFamily.InterNetwork ? 32 : 128; - var count = BigInteger.Pow(2, max - this._cidr); - return count; + return this.Total; } + + byte[] mask = new byte[] { 0xff, 0xff, 0xff, 0xff, 0x00 }; + var bmask = new BigInteger(mask); + BigInteger usableIps = (this._cidr > 30) ? 0 : ((bmask >> this._cidr) - 1); + return usableIps; } + } - /// - /// Gets the CIDR netmask notation. - /// - public byte Cidr + /// + /// Gets number of IP adress in Network. + /// + public BigInteger Total + { + get { - get - { - return this._cidr; - } + int max = this._family == Sockets.AddressFamily.InterNetwork ? 32 : 128; + var count = BigInteger.Pow(2, max - this._cidr); + return count; + } + } + + /// + /// Gets the CIDR netmask notation. + /// + public byte Cidr + { + get + { + return this._cidr; } + } - #endregion + #endregion - #region constructor + #region constructor #if TRAVISCI - public + public #else /// /// Initializes a new instance of the class with the specified IP address, address family, and CIDR. @@ -234,659 +235,659 @@ public byte Cidr /// The CIDR (Classless Inter-Domain Routing) notation of the network. internal #endif - IPNetwork2(BigInteger ipaddress, AddressFamily family, byte cidr) + IPNetwork2(BigInteger ipaddress, AddressFamily family, byte cidr) + { + this.Init(ipaddress, family, cidr); + this._hashCode = this.ComputeHashCode(); + } + + /// + /// Initializes a new instance of the class. + /// Creates a new IPNetwork. + /// + /// An ipaddress. + /// A byte representing the netmask in cidr format (/24). + /// ipaddress is null. + public IPNetwork2(IPAddress ipaddress, byte cidr) + { + if (ipaddress == null) { - this.Init(ipaddress, family, cidr); - this._hashCode = this.ComputeHashCode(); + throw new ArgumentNullException("ipaddress"); } - /// - /// Initializes a new instance of the class. - /// Creates a new IPNetwork. - /// - /// An ipaddress. - /// A byte representing the netmask in cidr format (/24). - /// ipaddress is null. - public IPNetwork2(IPAddress ipaddress, byte cidr) - { - if (ipaddress == null) - { - throw new ArgumentNullException("ipaddress"); - } + BigInteger uintIpAddress = ToBigInteger(ipaddress); - BigInteger uintIpAddress = ToBigInteger(ipaddress); + this.Init(uintIpAddress, ipaddress.AddressFamily, cidr); + this._hashCode = this.ComputeHashCode(); + } - this.Init(uintIpAddress, ipaddress.AddressFamily, cidr); - this._hashCode = this.ComputeHashCode(); + private void Init(BigInteger ipaddress, AddressFamily family, byte cidr) + { + int maxCidr = family == AddressFamily.InterNetwork ? 32 : 128; + if (cidr > maxCidr) + { + throw new ArgumentOutOfRangeException("cidr"); } - private void Init(BigInteger ipaddress, AddressFamily family, byte cidr) - { - int maxCidr = family == AddressFamily.InterNetwork ? 32 : 128; - if (cidr > maxCidr) - { - throw new ArgumentOutOfRangeException("cidr"); - } + this._ipaddress = ipaddress; + this._family = family; + this._cidr = cidr; + } - this._ipaddress = ipaddress; - this._family = family; - this._cidr = cidr; - } + #endregion - #endregion + #region parsers - #region parsers + /// + /// 192.168.168.100 - 255.255.255.0 + /// + /// ``` + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255 + /// ```. + /// + /// + /// A string containing an ip address to convert. + /// A string representing a netmask in std format (255.255.255.0). + /// An IPNetwork equivalent to the network contained in ipaddress/netmask. + public static IPNetwork2 Parse(string ipaddress, string netmask) + { + IPNetwork2.InternalParse(false, ipaddress, netmask, out IPNetwork2 ipnetwork); + return ipnetwork; + } - /// - /// 192.168.168.100 - 255.255.255.0 - /// - /// ``` - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255 - /// ```. - /// - /// - /// A string containing an ip address to convert. - /// A string representing a netmask in std format (255.255.255.0). - /// An IPNetwork equivalent to the network contained in ipaddress/netmask. - public static IPNetwork2 Parse(string ipaddress, string netmask) - { - IPNetwork2.InternalParse(false, ipaddress, netmask, out IPNetwork2 ipnetwork); - return ipnetwork; - } + /// + /// 192.168.168.100/24 + /// + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255. + /// + /// A string containing an ip address to convert. + /// A byte representing the netmask in cidr format (/24). + /// An IPNetwork equivalent to the network contained in ipaddress/cidr. + public static IPNetwork2 Parse(string ipaddress, byte cidr) + { + IPNetwork2.InternalParse(false, ipaddress, cidr, out IPNetwork2 ipnetwork); + return ipnetwork; + } - /// - /// 192.168.168.100/24 - /// - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255. - /// - /// A string containing an ip address to convert. - /// A byte representing the netmask in cidr format (/24). - /// An IPNetwork equivalent to the network contained in ipaddress/cidr. - public static IPNetwork2 Parse(string ipaddress, byte cidr) - { - IPNetwork2.InternalParse(false, ipaddress, cidr, out IPNetwork2 ipnetwork); - return ipnetwork; - } + /// + /// 192.168.168.100 255.255.255.0 + /// + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255. + /// + /// A string containing an ip address to convert. + /// A netmask to be used to create the IPNetwork. + /// An IPNetwork equivalent to the network contained in ipaddress/netmask. + public static IPNetwork2 Parse(IPAddress ipaddress, IPAddress netmask) + { + IPNetwork2.InternalParse(false, ipaddress, netmask, out IPNetwork2 ipnetwork); + return ipnetwork; + } - /// - /// 192.168.168.100 255.255.255.0 - /// - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255. - /// - /// A string containing an ip address to convert. - /// A netmask to be used to create the IPNetwork. - /// An IPNetwork equivalent to the network contained in ipaddress/netmask. - public static IPNetwork2 Parse(IPAddress ipaddress, IPAddress netmask) - { - IPNetwork2.InternalParse(false, ipaddress, netmask, out IPNetwork2 ipnetwork); - return ipnetwork; - } + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// An IPNetwork equivalent to the network contained in string network. + public static IPNetwork2 Parse(string network) + { + IPNetwork2.InternalParse(false, network, CidrGuess.ClassFull, true, out IPNetwork2 ipnetwork); + return ipnetwork; + } - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// An IPNetwork equivalent to the network contained in string network. - public static IPNetwork2 Parse(string network) - { - IPNetwork2.InternalParse(false, network, CidrGuess.ClassFull, true, out IPNetwork2 ipnetwork); - return ipnetwork; - } + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// Whether to sanitize network or not. + /// An IPNetwork equivalent to the network contained in string network. + public static IPNetwork2 Parse(string network, bool sanitanize) + { + IPNetwork2.InternalParse(false, network, CidrGuess.ClassFull, sanitanize, out IPNetwork2 ipnetwork); + return ipnetwork; + } - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// Whether to sanitize network or not. - /// An IPNetwork equivalent to the network contained in string network. - public static IPNetwork2 Parse(string network, bool sanitanize) - { - IPNetwork2.InternalParse(false, network, CidrGuess.ClassFull, sanitanize, out IPNetwork2 ipnetwork); - return ipnetwork; - } + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// A ICidrGuess implementation that will be used to guess CIDR during converion. + /// An IPNetwork equivalent to the network contained in string network. + public static IPNetwork2 Parse(string network, ICidrGuess cidrGuess) + { + IPNetwork2.InternalParse(false, network, cidrGuess, true, out IPNetwork2 ipnetwork); + return ipnetwork; + } - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// A ICidrGuess implementation that will be used to guess CIDR during converion. - /// An IPNetwork equivalent to the network contained in string network. - public static IPNetwork2 Parse(string network, ICidrGuess cidrGuess) - { - IPNetwork2.InternalParse(false, network, cidrGuess, true, out IPNetwork2 ipnetwork); - return ipnetwork; - } + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// A ICidrGuess implementation that will be used to guess CIDR during converion. + /// Whether to sanitize network or not. + /// An IPNetwork equivalent to the network contained in string network. + public static IPNetwork2 Parse(string network, ICidrGuess cidrGuess, bool sanitanize) + { + IPNetwork2.InternalParse(false, network, cidrGuess, sanitanize, out IPNetwork2 ipnetwork); + return ipnetwork; + } - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// A ICidrGuess implementation that will be used to guess CIDR during converion. - /// Whether to sanitize network or not. - /// An IPNetwork equivalent to the network contained in string network. - public static IPNetwork2 Parse(string network, ICidrGuess cidrGuess, bool sanitanize) - { - IPNetwork2.InternalParse(false, network, cidrGuess, sanitanize, out IPNetwork2 ipnetwork); - return ipnetwork; - } + #endregion - #endregion + #region TryParse - #region TryParse + /// + /// 192.168.168.100 - 255.255.255.0 + /// + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255. + /// + /// A string containing an ip address to convert. + /// A string containing a netmaks to convert (255.255.255.0). + /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. + /// true if ipaddress/netmask was converted successfully; otherwise, false.. + public static bool TryParse(string ipaddress, string netmask, out IPNetwork2 ipnetwork) + { + IPNetwork2.InternalParse(true, ipaddress, netmask, out IPNetwork2 ipnetwork2); + bool parsed = ipnetwork2 != null; + ipnetwork = ipnetwork2; - /// - /// 192.168.168.100 - 255.255.255.0 - /// - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255. - /// - /// A string containing an ip address to convert. - /// A string containing a netmaks to convert (255.255.255.0). - /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. - /// true if ipaddress/netmask was converted successfully; otherwise, false.. - public static bool TryParse(string ipaddress, string netmask, out IPNetwork2 ipnetwork) - { - IPNetwork2.InternalParse(true, ipaddress, netmask, out IPNetwork2 ipnetwork2); - bool parsed = ipnetwork2 != null; - ipnetwork = ipnetwork2; + return parsed; + } - return parsed; - } + /// + /// 192.168.168.100/24 + /// + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255. + /// + /// A string containing an ip address to convert. + /// A byte representing the netmask in cidr format (/24). + /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. + /// true if ipaddress/cidr was converted successfully; otherwise, false.. + public static bool TryParse(string ipaddress, byte cidr, out IPNetwork2 ipnetwork) + { + IPNetwork2.InternalParse(true, ipaddress, cidr, out IPNetwork2 ipnetwork2); + bool parsed = ipnetwork2 != null; + ipnetwork = ipnetwork2; - /// - /// 192.168.168.100/24 - /// - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255. - /// - /// A string containing an ip address to convert. - /// A byte representing the netmask in cidr format (/24). - /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. - /// true if ipaddress/cidr was converted successfully; otherwise, false.. - public static bool TryParse(string ipaddress, byte cidr, out IPNetwork2 ipnetwork) - { - IPNetwork2.InternalParse(true, ipaddress, cidr, out IPNetwork2 ipnetwork2); - bool parsed = ipnetwork2 != null; - ipnetwork = ipnetwork2; + return parsed; + } - return parsed; - } + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. + /// true if network was converted successfully; otherwise, false.. + public static bool TryParse(string network, out IPNetwork2 ipnetwork) + { + bool sanitanize = true; + IPNetwork2.InternalParse(true, network, CidrGuess.ClassFull, sanitanize, out IPNetwork2 ipnetwork2); + bool parsed = ipnetwork2 != null; + ipnetwork = ipnetwork2; - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. - /// true if network was converted successfully; otherwise, false.. - public static bool TryParse(string network, out IPNetwork2 ipnetwork) - { - bool sanitanize = true; - IPNetwork2.InternalParse(true, network, CidrGuess.ClassFull, sanitanize, out IPNetwork2 ipnetwork2); - bool parsed = ipnetwork2 != null; - ipnetwork = ipnetwork2; + return parsed; + } - return parsed; - } + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// Whether to sanitize network or not. + /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. + /// true if network was converted successfully; otherwise, false.. + public static bool TryParse(string network, bool sanitanize, out IPNetwork2 ipnetwork) + { + IPNetwork2.InternalParse(true, network, CidrGuess.ClassFull, sanitanize, out IPNetwork2 ipnetwork2); + bool parsed = ipnetwork2 != null; + ipnetwork = ipnetwork2; - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// Whether to sanitize network or not. - /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. - /// true if network was converted successfully; otherwise, false.. - public static bool TryParse(string network, bool sanitanize, out IPNetwork2 ipnetwork) - { - IPNetwork2.InternalParse(true, network, CidrGuess.ClassFull, sanitanize, out IPNetwork2 ipnetwork2); - bool parsed = ipnetwork2 != null; - ipnetwork = ipnetwork2; + return parsed; + } - return parsed; - } + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// An IPAdresse to convert. + /// A IPAdresse to be used as netmaks to convert. + /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. + /// true if network was converted successfully; otherwise, false.. + public static bool TryParse(IPAddress ipaddress, IPAddress netmask, out IPNetwork2 ipnetwork) + { + IPNetwork2.InternalParse(true, ipaddress, netmask, out IPNetwork2 ipnetwork2); + bool parsed = ipnetwork2 != null; + ipnetwork = ipnetwork2; - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// An IPAdresse to convert. - /// A IPAdresse to be used as netmaks to convert. - /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. - /// true if network was converted successfully; otherwise, false.. - public static bool TryParse(IPAddress ipaddress, IPAddress netmask, out IPNetwork2 ipnetwork) + return parsed; + } + + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// A ICidrGuess implementation that will be used to guess CIDR during converion. + /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. + /// true if network was converted successfully; otherwise, false.. + public static bool TryParse(string network, ICidrGuess cidrGuess, out IPNetwork2 ipnetwork) + { + IPNetwork2.InternalParse(true, network, cidrGuess, true, out IPNetwork2 ipnetwork2); + bool parsed = ipnetwork2 != null; + ipnetwork = ipnetwork2; + + return parsed; + } + + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// A ICidrGuess implementation that will be used to guess CIDR during converion. + /// Whether to sanitize network or not. + /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. + /// true if network was converted successfully; otherwise, false.. + public static bool TryParse(string network, ICidrGuess cidrGuess, bool sanitanize, out IPNetwork2 ipnetwork) + { + IPNetwork2.InternalParse(true, network, cidrGuess, sanitanize, out IPNetwork2 ipnetwork2); + bool parsed = ipnetwork2 != null; + ipnetwork = ipnetwork2; + + return parsed; + } + + #endregion + + #region InternalParse + + /// + /// 192.168.168.100 - 255.255.255.0 + /// + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255. + /// + /// Whether to throw exception or not during conversion. + /// A string containing an ip address to convert. + /// A string containing a netmask to convert (255.255.255.0). + /// The resulting IPNetwork. + private static void InternalParse(bool tryParse, string ipaddress, string netmask, out IPNetwork2 ipnetwork) + { + if (string.IsNullOrEmpty(ipaddress)) { - IPNetwork2.InternalParse(true, ipaddress, netmask, out IPNetwork2 ipnetwork2); - bool parsed = ipnetwork2 != null; - ipnetwork = ipnetwork2; + if (tryParse == false) + { + throw new ArgumentNullException("ipaddress"); + } - return parsed; + ipnetwork = null; + return; } - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// A ICidrGuess implementation that will be used to guess CIDR during converion. - /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. - /// true if network was converted successfully; otherwise, false.. - public static bool TryParse(string network, ICidrGuess cidrGuess, out IPNetwork2 ipnetwork) + if (string.IsNullOrEmpty(netmask)) { - IPNetwork2.InternalParse(true, network, cidrGuess, true, out IPNetwork2 ipnetwork2); - bool parsed = ipnetwork2 != null; - ipnetwork = ipnetwork2; + if (tryParse == false) + { + throw new ArgumentNullException("netmask"); + } - return parsed; + ipnetwork = null; + return; } - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// A ICidrGuess implementation that will be used to guess CIDR during converion. - /// Whether to sanitize network or not. - /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. - /// true if network was converted successfully; otherwise, false.. - public static bool TryParse(string network, ICidrGuess cidrGuess, bool sanitanize, out IPNetwork2 ipnetwork) + bool ipaddressParsed = IPAddress.TryParse(ipaddress, out IPAddress ip); + if (ipaddressParsed == false) { - IPNetwork2.InternalParse(true, network, cidrGuess, sanitanize, out IPNetwork2 ipnetwork2); - bool parsed = ipnetwork2 != null; - ipnetwork = ipnetwork2; + if (tryParse == false) + { + throw new ArgumentException("ipaddress"); + } - return parsed; + ipnetwork = null; + return; } - #endregion - - #region InternalParse - - /// - /// 192.168.168.100 - 255.255.255.0 - /// - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255. - /// - /// Whether to throw exception or not during conversion. - /// A string containing an ip address to convert. - /// A string containing a netmask to convert (255.255.255.0). - /// The resulting IPNetwork. - private static void InternalParse(bool tryParse, string ipaddress, string netmask, out IPNetwork2 ipnetwork) + bool netmaskParsed = IPAddress.TryParse(netmask, out IPAddress mask); + if (netmaskParsed == false) { - if (string.IsNullOrEmpty(ipaddress)) - { - if (tryParse == false) - { - throw new ArgumentNullException("ipaddress"); - } - - ipnetwork = null; - return; - } - - if (string.IsNullOrEmpty(netmask)) + if (tryParse == false) { - if (tryParse == false) - { - throw new ArgumentNullException("netmask"); - } - - ipnetwork = null; - return; + throw new ArgumentException("netmask"); } - bool ipaddressParsed = IPAddress.TryParse(ipaddress, out IPAddress ip); - if (ipaddressParsed == false) - { - if (tryParse == false) - { - throw new ArgumentException("ipaddress"); - } + ipnetwork = null; + return; + } - ipnetwork = null; - return; - } + IPNetwork2.InternalParse(tryParse, ip, mask, out ipnetwork); + } - bool netmaskParsed = IPAddress.TryParse(netmask, out IPAddress mask); - if (netmaskParsed == false) + private static void InternalParse(bool tryParse, string network, ICidrGuess cidrGuess, bool sanitanize, out IPNetwork2 ipnetwork) + { + if (string.IsNullOrEmpty(network)) + { + if (tryParse == false) { - if (tryParse == false) - { - throw new ArgumentException("netmask"); - } - - ipnetwork = null; - return; + throw new ArgumentNullException("network"); } - IPNetwork2.InternalParse(tryParse, ip, mask, out ipnetwork); + ipnetwork = null; + return; } - private static void InternalParse(bool tryParse, string network, ICidrGuess cidrGuess, bool sanitanize, out IPNetwork2 ipnetwork) + if (sanitanize) { - if (string.IsNullOrEmpty(network)) - { - if (tryParse == false) - { - throw new ArgumentNullException("network"); - } + network = Regex.Replace(network, @"[^0-9a-fA-F\.\/\s\:]+", string.Empty, RegexOptions.None, TimeSpan.FromMilliseconds(100)); + network = Regex.Replace(network, @"\s{2,}", " ", RegexOptions.None, TimeSpan.FromMilliseconds(100)); + network = network.Trim(); + } - ipnetwork = null; - return; - } + StringSplitOptions splitOptions = sanitanize ? StringSplitOptions.RemoveEmptyEntries : StringSplitOptions.None; + string[] args = network.Split(new char[] { ' ', '/' }, splitOptions); + byte cidr = 0; - if (sanitanize) + if (args.Length == 0) + { + if (tryParse == false) { - network = Regex.Replace(network, @"[^0-9a-fA-F\.\/\s\:]+", string.Empty, RegexOptions.None, TimeSpan.FromMilliseconds(100)); - network = Regex.Replace(network, @"\s{2,}", " ", RegexOptions.None, TimeSpan.FromMilliseconds(100)); - network = network.Trim(); + throw new ArgumentNullException("network"); } - - StringSplitOptions splitOptions = sanitanize ? StringSplitOptions.RemoveEmptyEntries : StringSplitOptions.None; - string[] args = network.Split(new char[] { ' ', '/' }, splitOptions); - byte cidr = 0; - - if (args.Length == 0) - { - if (tryParse == false) - { - throw new ArgumentNullException("network"); - } - ipnetwork = null; - return; - } + ipnetwork = null; + return; + } - if (args.Length == 1) + if (args.Length == 1) + { + string cidrlessNetwork = args[0]; + if (cidrGuess.TryGuessCidr(cidrlessNetwork, out cidr)) { - string cidrlessNetwork = args[0]; - if (cidrGuess.TryGuessCidr(cidrlessNetwork, out cidr)) - { - IPNetwork2.InternalParse(tryParse, cidrlessNetwork, cidr, out ipnetwork); - return; - } - - if (tryParse == false) - { - throw new ArgumentException("network"); - } - - ipnetwork = null; + IPNetwork2.InternalParse(tryParse, cidrlessNetwork, cidr, out ipnetwork); return; } - if (byte.TryParse(args[1], out cidr)) + if (tryParse == false) { - IPNetwork2.InternalParse(tryParse, args[0], cidr, out ipnetwork); - return; + throw new ArgumentException("network"); } - IPNetwork2.InternalParse(tryParse, args[0], args[1], out ipnetwork); + ipnetwork = null; return; } - /// - /// 192.168.168.100 255.255.255.0 - /// - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255. - /// - /// Whether to throw exception or not during conversion. - /// An ip address to convert. - /// A netmask to convert (255.255.255.0). - /// The resulting IPNetwork. - private static void InternalParse(bool tryParse, IPAddress ipaddress, IPAddress netmask, out IPNetwork2 ipnetwork) + if (byte.TryParse(args[1], out cidr)) { - if (ipaddress == null) - { - if (tryParse == false) - { - throw new ArgumentNullException("ipaddress"); - } + IPNetwork2.InternalParse(tryParse, args[0], cidr, out ipnetwork); + return; + } - ipnetwork = null; - return; - } + IPNetwork2.InternalParse(tryParse, args[0], args[1], out ipnetwork); + return; + } - if (netmask == null) + /// + /// 192.168.168.100 255.255.255.0 + /// + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255. + /// + /// Whether to throw exception or not during conversion. + /// An ip address to convert. + /// A netmask to convert (255.255.255.0). + /// The resulting IPNetwork. + private static void InternalParse(bool tryParse, IPAddress ipaddress, IPAddress netmask, out IPNetwork2 ipnetwork) + { + if (ipaddress == null) + { + if (tryParse == false) { - if (tryParse == false) - { - throw new ArgumentNullException("netmask"); - } - - ipnetwork = null; - return; + throw new ArgumentNullException("ipaddress"); } - var uintIpAddress = IPNetwork2.ToBigInteger(ipaddress); - bool parsed = IPNetwork2.TryToCidr(netmask, out byte? cidr2); - if (parsed == false) - { - if (tryParse == false) - { - throw new ArgumentException("netmask"); - } + ipnetwork = null; + return; + } - ipnetwork = null; - return; + if (netmask == null) + { + if (tryParse == false) + { + throw new ArgumentNullException("netmask"); } - byte cidr = (byte)cidr2; + ipnetwork = null; + return; + } - var ipnet = new IPNetwork2(uintIpAddress, ipaddress.AddressFamily, cidr); - ipnetwork = ipnet; + var uintIpAddress = IPNetwork2.ToBigInteger(ipaddress); + bool parsed = IPNetwork2.TryToCidr(netmask, out byte? cidr2); + if (parsed == false) + { + if (tryParse == false) + { + throw new ArgumentException("netmask"); + } + ipnetwork = null; return; } - /// - /// 192.168.168.100/24 - /// - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255. - /// - /// Whether to throw exception or not during conversion. - /// A string containing an ip address to convert. - /// A byte representing the CIDR to be used in conversion (/24). - /// The resulting IPNetwork. - private static void InternalParse(bool tryParse, string ipaddress, byte cidr, out IPNetwork2 ipnetwork) + byte cidr = (byte)cidr2; + + var ipnet = new IPNetwork2(uintIpAddress, ipaddress.AddressFamily, cidr); + ipnetwork = ipnet; + + return; + } + + /// + /// 192.168.168.100/24 + /// + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255. + /// + /// Whether to throw exception or not during conversion. + /// A string containing an ip address to convert. + /// A byte representing the CIDR to be used in conversion (/24). + /// The resulting IPNetwork. + private static void InternalParse(bool tryParse, string ipaddress, byte cidr, out IPNetwork2 ipnetwork) + { + if (string.IsNullOrEmpty(ipaddress)) { - if (string.IsNullOrEmpty(ipaddress)) + if (tryParse == false) { - if (tryParse == false) - { - throw new ArgumentNullException("ipaddress"); - } - - ipnetwork = null; - return; + throw new ArgumentNullException("ipaddress"); } - bool ipaddressParsed = IPAddress.TryParse(ipaddress, out IPAddress ip); - if (ipaddressParsed == false) - { - if (tryParse == false) - { - throw new ArgumentException("ipaddress"); - } + ipnetwork = null; + return; + } - ipnetwork = null; - return; + bool ipaddressParsed = IPAddress.TryParse(ipaddress, out IPAddress ip); + if (ipaddressParsed == false) + { + if (tryParse == false) + { + throw new ArgumentException("ipaddress"); } - bool parsedNetmask = IPNetwork2.TryToNetmask(cidr, ip.AddressFamily, out IPAddress mask); - if (parsedNetmask == false) - { - if (tryParse == false) - { - throw new ArgumentException("cidr"); - } + ipnetwork = null; + return; + } - ipnetwork = null; - return; + bool parsedNetmask = IPNetwork2.TryToNetmask(cidr, ip.AddressFamily, out IPAddress mask); + if (parsedNetmask == false) + { + if (tryParse == false) + { + throw new ArgumentException("cidr"); } - IPNetwork2.InternalParse(tryParse, ip, mask, out ipnetwork); + ipnetwork = null; + return; } - #endregion - #region converters + IPNetwork2.InternalParse(tryParse, ip, mask, out ipnetwork); + } + #endregion - #region ToUint + #region converters - /// - /// Convert an ipadress to decimal - /// 0.0.0.0 -> 0 - /// 0.0.1.0 -> 256. - /// - /// A string containing an ip address to convert. - /// A number representing the ipaddress. - public static BigInteger ToBigInteger(IPAddress ipaddress) - { - IPNetwork2.InternalToBigInteger(false, ipaddress, out BigInteger? uintIpAddress); + #region ToUint - return (BigInteger)uintIpAddress; - } + /// + /// Convert an ipadress to decimal + /// 0.0.0.0 -> 0 + /// 0.0.1.0 -> 256. + /// + /// A string containing an ip address to convert. + /// A number representing the ipaddress. + public static BigInteger ToBigInteger(IPAddress ipaddress) + { + IPNetwork2.InternalToBigInteger(false, ipaddress, out BigInteger? uintIpAddress); - /// - /// Convert an ipadress to decimal - /// 0.0.0.0 -> 0 - /// 0.0.1.0 -> 256. - /// - /// A string containing an ip address to convert. - /// A number representing the IPAdress. - /// true if ipaddress was converted successfully; otherwise, false. - public static bool TryToBigInteger(IPAddress ipaddress, out BigInteger? uintIpAddress) - { - IPNetwork2.InternalToBigInteger(true, ipaddress, out BigInteger? uintIpAddress2); - bool parsed = uintIpAddress2 != null; - uintIpAddress = uintIpAddress2; + return (BigInteger)uintIpAddress; + } - return parsed; - } + /// + /// Convert an ipadress to decimal + /// 0.0.0.0 -> 0 + /// 0.0.1.0 -> 256. + /// + /// A string containing an ip address to convert. + /// A number representing the IPAdress. + /// true if ipaddress was converted successfully; otherwise, false. + public static bool TryToBigInteger(IPAddress ipaddress, out BigInteger? uintIpAddress) + { + IPNetwork2.InternalToBigInteger(true, ipaddress, out BigInteger? uintIpAddress2); + bool parsed = uintIpAddress2 != null; + uintIpAddress = uintIpAddress2; + + return parsed; + } #if TRAVISCI - public + public #else internal #endif - static void InternalToBigInteger(bool tryParse, IPAddress ipaddress, out BigInteger? uintIpAddress) + static void InternalToBigInteger(bool tryParse, IPAddress ipaddress, out BigInteger? uintIpAddress) + { + if (ipaddress == null) { - if (ipaddress == null) + if (tryParse == false) { - if (tryParse == false) - { - throw new ArgumentNullException("ipaddress"); - } - - uintIpAddress = null; - return; + throw new ArgumentNullException("ipaddress"); } + uintIpAddress = null; + return; + } + #if NET5_0 || NETSTANDARD2_1 byte[] bytes = ipaddress.AddressFamily == AddressFamily.InterNetwork ? new byte[4] : new byte[16]; Span span = bytes.AsSpan(); @@ -911,1718 +912,1717 @@ static void InternalToBigInteger(bool tryParse, IPAddress ipaddress, out BigInte Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); uintIpAddress = new BigInteger(unsigned); #else - byte[] bytes = ipaddress.GetAddressBytes(); - Array.Reverse(bytes); + byte[] bytes = ipaddress.GetAddressBytes(); + Array.Reverse(bytes); - // add trailing 0 to make unsigned - byte[] unsigned = new byte[bytes.Length + 1]; - Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); - uintIpAddress = new BigInteger(unsigned); + // add trailing 0 to make unsigned + byte[] unsigned = new byte[bytes.Length + 1]; + Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); + uintIpAddress = new BigInteger(unsigned); #endif - } + } - /// - /// Convert a cidr to BigInteger netmask. - /// - /// A byte representing the netmask in cidr format (/24). - /// Either IPv4 or IPv6. - /// A number representing the netmask exprimed in CIDR. - public static BigInteger ToUint(byte cidr, AddressFamily family) - { - IPNetwork2.InternalToBigInteger(false, cidr, family, out BigInteger? uintNetmask); + /// + /// Convert a cidr to BigInteger netmask. + /// + /// A byte representing the netmask in cidr format (/24). + /// Either IPv4 or IPv6. + /// A number representing the netmask exprimed in CIDR. + public static BigInteger ToUint(byte cidr, AddressFamily family) + { + IPNetwork2.InternalToBigInteger(false, cidr, family, out BigInteger? uintNetmask); - return (BigInteger)uintNetmask; - } + return (BigInteger)uintNetmask; + } - /// - /// Convert a cidr to uint netmask. - /// - /// A byte representing the netmask in cidr format (/24). - /// Either IPv4 or IPv6. - /// A number representing the netmask. - /// true if cidr was converted successfully; otherwise, false. - public static bool TryToUint(byte cidr, AddressFamily family, out BigInteger? uintNetmask) - { - IPNetwork2.InternalToBigInteger(true, cidr, family, out BigInteger? uintNetmask2); - bool parsed = uintNetmask2 != null; - uintNetmask = uintNetmask2; + /// + /// Convert a cidr to uint netmask. + /// + /// A byte representing the netmask in cidr format (/24). + /// Either IPv4 or IPv6. + /// A number representing the netmask. + /// true if cidr was converted successfully; otherwise, false. + public static bool TryToUint(byte cidr, AddressFamily family, out BigInteger? uintNetmask) + { + IPNetwork2.InternalToBigInteger(true, cidr, family, out BigInteger? uintNetmask2); + bool parsed = uintNetmask2 != null; + uintNetmask = uintNetmask2; - return parsed; - } + return parsed; + } - /// - /// Convert a cidr to uint netmask. - /// - /// Whether to throw exception or not during conversion. - /// A byte representing the netmask in cidr format (/24). - /// Either IPv4 or IPv6. - /// A number representing the netmask. + /// + /// Convert a cidr to uint netmask. + /// + /// Whether to throw exception or not during conversion. + /// A byte representing the netmask in cidr format (/24). + /// Either IPv4 or IPv6. + /// A number representing the netmask. #if TRAVISCI - public + public #else internal #endif - static void InternalToBigInteger(bool tryParse, byte cidr, AddressFamily family, out BigInteger? uintNetmask) + static void InternalToBigInteger(bool tryParse, byte cidr, AddressFamily family, out BigInteger? uintNetmask) + { + if (family == AddressFamily.InterNetwork && cidr > 32) { - if (family == AddressFamily.InterNetwork && cidr > 32) + if (tryParse == false) { - if (tryParse == false) - { - throw new ArgumentOutOfRangeException("cidr"); - } - - uintNetmask = null; - return; - } - - if (family == AddressFamily.InterNetworkV6 && cidr > 128) - { - if (tryParse == false) - { - throw new ArgumentOutOfRangeException("cidr"); - } - - uintNetmask = null; - return; + throw new ArgumentOutOfRangeException("cidr"); } - if (family != AddressFamily.InterNetwork - && family != AddressFamily.InterNetworkV6) - { - if (tryParse == false) - { - throw new NotSupportedException(family.ToString()); - } - - uintNetmask = null; - return; - } + uintNetmask = null; + return; + } - if (family == AddressFamily.InterNetwork) + if (family == AddressFamily.InterNetworkV6 && cidr > 128) + { + if (tryParse == false) { - uintNetmask = cidr == 0 ? 0 : 0xffffffff << (32 - cidr); - return; + throw new ArgumentOutOfRangeException("cidr"); } - var mask = new BigInteger(new byte[] - { - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0x00, - }); - - BigInteger masked = cidr == 0 ? 0 : mask << (128 - cidr); - byte[] m = masked.ToByteArray(); - byte[] bmask = new byte[17]; - int copy = m.Length > 16 ? 16 : m.Length; - Array.Copy(m, 0, bmask, 0, copy); - uintNetmask = new BigInteger(bmask); + uintNetmask = null; + return; } - #endregion - - #region ToCidr - - /// - /// Convert netmask to CIDR - /// 255.255.255.0 -> 24 - /// 255.255.0.0 -> 16 - /// 255.0.0.0 -> 8. - /// - /// Whether to throw exception or not during conversion. - /// A number representing the netmask to convert. - /// Either IPv4 or IPv6. - /// A byte representing the netmask in cidr format (/24). - private static void InternalToCidr(bool tryParse, BigInteger netmask, AddressFamily family, out byte? cidr) + if (family != AddressFamily.InterNetwork + && family != AddressFamily.InterNetworkV6) { - if (!IPNetwork2.InternalValidNetmask(netmask, family)) + if (tryParse == false) { - if (tryParse == false) - { - throw new ArgumentException("netmask"); - } - - cidr = null; - return; + throw new NotSupportedException(family.ToString()); } - byte cidr2 = IPNetwork2.BitsSet(netmask, family); - cidr = cidr2; - + uintNetmask = null; return; } - /// - /// Convert netmask to CIDR - /// 255.255.255.0 -> 24 - /// 255.255.0.0 -> 16 - /// 255.0.0.0 -> 8. - /// - /// An IPAdress representing the CIDR to convert. - /// A byte representing the CIDR converted from the netmask. - public static byte ToCidr(IPAddress netmask) + if (family == AddressFamily.InterNetwork) { - IPNetwork2.InternalToCidr(false, netmask, out byte? cidr); - return (byte)cidr; + uintNetmask = cidr == 0 ? 0 : 0xffffffff << (32 - cidr); + return; } - /// - /// Convert netmask to CIDR - /// 255.255.255.0 -> 24 - /// 255.255.0.0 -> 16 - /// 255.0.0.0 -> 8. - /// - /// An IPAdress representing the CIDR to convert. - /// A byte representing the netmask in cidr format (/24). - /// true if netmask was converted successfully; otherwise, false. - public static bool TryToCidr(IPAddress netmask, out byte? cidr) + var mask = new BigInteger(new byte[] { - IPNetwork2.InternalToCidr(true, netmask, out byte? cidr2); - bool parsed = cidr2 != null; - cidr = cidr2; - return parsed; - } + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0x00, + }); + + BigInteger masked = cidr == 0 ? 0 : mask << (128 - cidr); + byte[] m = masked.ToByteArray(); + byte[] bmask = new byte[17]; + int copy = m.Length > 16 ? 16 : m.Length; + Array.Copy(m, 0, bmask, 0, copy); + uintNetmask = new BigInteger(bmask); + } + + #endregion - private static void InternalToCidr(bool tryParse, IPAddress netmask, out byte? cidr) + #region ToCidr + + /// + /// Convert netmask to CIDR + /// 255.255.255.0 -> 24 + /// 255.255.0.0 -> 16 + /// 255.0.0.0 -> 8. + /// + /// Whether to throw exception or not during conversion. + /// A number representing the netmask to convert. + /// Either IPv4 or IPv6. + /// A byte representing the netmask in cidr format (/24). + private static void InternalToCidr(bool tryParse, BigInteger netmask, AddressFamily family, out byte? cidr) + { + if (!IPNetwork2.InternalValidNetmask(netmask, family)) { - if (netmask == null) + if (tryParse == false) { - if (tryParse == false) - { - throw new ArgumentNullException("netmask"); - } - - cidr = null; - return; + throw new ArgumentException("netmask"); } - bool parsed = IPNetwork2.TryToBigInteger(netmask, out BigInteger? uintNetmask2); - - // 20180217 lduchosal - // impossible to reach code. - // if (parsed == false) { - // if (tryParse == false) { - // throw new ArgumentException("netmask"); - // } - // cidr = null; - // return; - // } - var uintNetmask = (BigInteger)uintNetmask2; - - IPNetwork2.InternalToCidr(tryParse, uintNetmask, netmask.AddressFamily, out byte? cidr2); - cidr = cidr2; - + cidr = null; return; } - #endregion + byte cidr2 = IPNetwork2.BitsSet(netmask, family); + cidr = cidr2; - #region ToNetmask + return; + } - /// - /// Convert CIDR to netmask - /// 24 -> 255.255.255.0 - /// 16 -> 255.255.0.0 - /// 8 -> 255.0.0.0. - /// - /// - /// A byte representing the netmask in cidr format (/24). - /// Either IPv4 or IPv6. - /// An IPAdress representing cidr. - public static IPAddress ToNetmask(byte cidr, AddressFamily family) - { - IPNetwork2.InternalToNetmask(false, cidr, family, out IPAddress netmask); + /// + /// Convert netmask to CIDR + /// 255.255.255.0 -> 24 + /// 255.255.0.0 -> 16 + /// 255.0.0.0 -> 8. + /// + /// An IPAdress representing the CIDR to convert. + /// A byte representing the CIDR converted from the netmask. + public static byte ToCidr(IPAddress netmask) + { + IPNetwork2.InternalToCidr(false, netmask, out byte? cidr); + return (byte)cidr; + } - return netmask; - } + /// + /// Convert netmask to CIDR + /// 255.255.255.0 -> 24 + /// 255.255.0.0 -> 16 + /// 255.0.0.0 -> 8. + /// + /// An IPAdress representing the CIDR to convert. + /// A byte representing the netmask in cidr format (/24). + /// true if netmask was converted successfully; otherwise, false. + public static bool TryToCidr(IPAddress netmask, out byte? cidr) + { + IPNetwork2.InternalToCidr(true, netmask, out byte? cidr2); + bool parsed = cidr2 != null; + cidr = cidr2; + return parsed; + } - /// - /// Convert CIDR to netmask - /// 24 -> 255.255.255.0 - /// 16 -> 255.255.0.0 - /// 8 -> 255.0.0.0. - /// - /// - /// A byte representing the netmask in cidr format (/24). - /// Either IPv4 or IPv6. - /// The resulting netmask. - /// true if cidr was converted successfully; otherwise, false. - public static bool TryToNetmask(byte cidr, AddressFamily family, out IPAddress netmask) + private static void InternalToCidr(bool tryParse, IPAddress netmask, out byte? cidr) + { + if (netmask == null) { - IPNetwork2.InternalToNetmask(true, cidr, family, out IPAddress netmask2); - bool parsed = netmask2 != null; - netmask = netmask2; + if (tryParse == false) + { + throw new ArgumentNullException("netmask"); + } - return parsed; + cidr = null; + return; } + bool parsed = IPNetwork2.TryToBigInteger(netmask, out BigInteger? uintNetmask2); + + // 20180217 lduchosal + // impossible to reach code. + // if (parsed == false) { + // if (tryParse == false) { + // throw new ArgumentException("netmask"); + // } + // cidr = null; + // return; + // } + var uintNetmask = (BigInteger)uintNetmask2; + + IPNetwork2.InternalToCidr(tryParse, uintNetmask, netmask.AddressFamily, out byte? cidr2); + cidr = cidr2; + + return; + } + + #endregion + + #region ToNetmask + + /// + /// Convert CIDR to netmask + /// 24 -> 255.255.255.0 + /// 16 -> 255.255.0.0 + /// 8 -> 255.0.0.0. + /// + /// + /// A byte representing the netmask in cidr format (/24). + /// Either IPv4 or IPv6. + /// An IPAdress representing cidr. + public static IPAddress ToNetmask(byte cidr, AddressFamily family) + { + IPNetwork2.InternalToNetmask(false, cidr, family, out IPAddress netmask); + + return netmask; + } + + /// + /// Convert CIDR to netmask + /// 24 -> 255.255.255.0 + /// 16 -> 255.255.0.0 + /// 8 -> 255.0.0.0. + /// + /// + /// A byte representing the netmask in cidr format (/24). + /// Either IPv4 or IPv6. + /// The resulting netmask. + /// true if cidr was converted successfully; otherwise, false. + public static bool TryToNetmask(byte cidr, AddressFamily family, out IPAddress netmask) + { + IPNetwork2.InternalToNetmask(true, cidr, family, out IPAddress netmask2); + bool parsed = netmask2 != null; + netmask = netmask2; + + return parsed; + } + #if TRAVISCI - public + public #else internal #endif - static void InternalToNetmask(bool tryParse, byte cidr, AddressFamily family, out IPAddress netmask) + static void InternalToNetmask(bool tryParse, byte cidr, AddressFamily family, out IPAddress netmask) + { + if (family != AddressFamily.InterNetwork + && family != AddressFamily.InterNetworkV6) { - if (family != AddressFamily.InterNetwork - && family != AddressFamily.InterNetworkV6) + if (tryParse == false) { - if (tryParse == false) - { - throw new ArgumentException("family"); - } - - netmask = null; - return; + throw new ArgumentException("family"); } - // 20180217 lduchosal - // impossible to reach code, byte cannot be negative : - // - // if (cidr < 0) { - // if (tryParse == false) { - // throw new ArgumentOutOfRangeException("cidr"); - // } - // netmask = null; - // return; - // } - int maxCidr = family == Sockets.AddressFamily.InterNetwork ? 32 : 128; - if (cidr > maxCidr) - { - if (tryParse == false) - { - throw new ArgumentOutOfRangeException("cidr"); - } + netmask = null; + return; + } - netmask = null; - return; + // 20180217 lduchosal + // impossible to reach code, byte cannot be negative : + // + // if (cidr < 0) { + // if (tryParse == false) { + // throw new ArgumentOutOfRangeException("cidr"); + // } + // netmask = null; + // return; + // } + int maxCidr = family == Sockets.AddressFamily.InterNetwork ? 32 : 128; + if (cidr > maxCidr) + { + if (tryParse == false) + { + throw new ArgumentOutOfRangeException("cidr"); } - BigInteger mask = IPNetwork2.ToUint(cidr, family); - var netmask2 = IPNetwork2.ToIPAddress(mask, family); - netmask = netmask2; - + netmask = null; return; } - #endregion + BigInteger mask = IPNetwork2.ToUint(cidr, family); + var netmask2 = IPNetwork2.ToIPAddress(mask, family); + netmask = netmask2; - #endregion + return; + } - #region utils + #endregion - #region BitsSet + #endregion - /// - /// Count bits set to 1 in netmask. - /// - /// - /// A number representing the netmask to count bits from. - /// Either IPv4 or IPv6. - /// The number of bytes set to 1. - private static byte BitsSet(BigInteger netmask, AddressFamily family) - { - string s = netmask.ToBinaryString(); + #region utils - return (byte)s.Replace("0", string.Empty) - .ToCharArray() - .Length; - } + #region BitsSet - /// - /// Count bits set to 1 in netmask. - /// - /// A number representing the netmask to count bits from. - /// The number of bytes set to 1. - public static uint BitsSet(IPAddress netmask) - { - var uintNetmask = IPNetwork2.ToBigInteger(netmask); - uint bits = IPNetwork2.BitsSet(uintNetmask, netmask.AddressFamily); + /// + /// Count bits set to 1 in netmask. + /// + /// + /// A number representing the netmask to count bits from. + /// Either IPv4 or IPv6. + /// The number of bytes set to 1. + private static byte BitsSet(BigInteger netmask, AddressFamily family) + { + string s = netmask.ToBinaryString(); - return bits; - } + return (byte)s.Replace("0", string.Empty) + .ToCharArray() + .Length; + } - #endregion + /// + /// Count bits set to 1 in netmask. + /// + /// A number representing the netmask to count bits from. + /// The number of bytes set to 1. + public static uint BitsSet(IPAddress netmask) + { + var uintNetmask = IPNetwork2.ToBigInteger(netmask); + uint bits = IPNetwork2.BitsSet(uintNetmask, netmask.AddressFamily); - #region ValidNetmask + return bits; + } - /// - /// return true if netmask is a valid netmask - /// 255.255.255.0, 255.0.0.0, 255.255.240.0, ... - /// - /// - /// A number representing the netmask to validate. - /// true if netmask is a valid IP Netmask; otherwise, false. - public static bool ValidNetmask(IPAddress netmask) - { - if (netmask == null) - { - throw new ArgumentNullException("netmask"); - } + #endregion - var uintNetmask = IPNetwork2.ToBigInteger(netmask); - bool valid = IPNetwork2.InternalValidNetmask(uintNetmask, netmask.AddressFamily); + #region ValidNetmask - return valid; + /// + /// return true if netmask is a valid netmask + /// 255.255.255.0, 255.0.0.0, 255.255.240.0, ... + /// + /// + /// A number representing the netmask to validate. + /// true if netmask is a valid IP Netmask; otherwise, false. + public static bool ValidNetmask(IPAddress netmask) + { + if (netmask == null) + { + throw new ArgumentNullException("netmask"); } + var uintNetmask = IPNetwork2.ToBigInteger(netmask); + bool valid = IPNetwork2.InternalValidNetmask(uintNetmask, netmask.AddressFamily); + + return valid; + } + #if TRAVISCI - public + public #else internal #endif - static bool InternalValidNetmask(BigInteger netmask, AddressFamily family) + static bool InternalValidNetmask(BigInteger netmask, AddressFamily family) + { + if (family != AddressFamily.InterNetwork + && family != AddressFamily.InterNetworkV6) { - if (family != AddressFamily.InterNetwork - && family != AddressFamily.InterNetworkV6) - { - throw new ArgumentException("family"); - } - - BigInteger mask = family == AddressFamily.InterNetwork - ? new BigInteger(0x0ffffffff) - : new BigInteger(new byte[] - { - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0x00, - }); + throw new ArgumentException("family"); + } - BigInteger neg = (~netmask) & mask; - bool isNetmask = ((neg + 1) & neg) == 0; + BigInteger mask = family == AddressFamily.InterNetwork + ? new BigInteger(0x0ffffffff) + : new BigInteger(new byte[] + { + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0x00, + }); - return isNetmask; - } + BigInteger neg = (~netmask) & mask; + bool isNetmask = ((neg + 1) & neg) == 0; - #endregion + return isNetmask; + } - #region ToIPAddress + #endregion - /// - /// Transform a uint ipaddress into IPAddress object. - /// - /// A number representing an ip address to convert. - /// Either IPv4 or IPv6. - /// An ip adress. - public static IPAddress ToIPAddress(BigInteger ipaddress, AddressFamily family) - { - int width = family == AddressFamily.InterNetwork ? 4 : 16; - byte[] bytes = ipaddress.ToByteArray(); - byte[] bytes2 = new byte[width]; - int copy = bytes.Length > width ? width : bytes.Length; - Array.Copy(bytes, 0, bytes2, 0, copy); - Array.Reverse(bytes2); + #region ToIPAddress - byte[] sized = Resize(bytes2, family); - var ip = new IPAddress(sized); - return ip; - } + /// + /// Transform a uint ipaddress into IPAddress object. + /// + /// A number representing an ip address to convert. + /// Either IPv4 or IPv6. + /// An ip adress. + public static IPAddress ToIPAddress(BigInteger ipaddress, AddressFamily family) + { + int width = family == AddressFamily.InterNetwork ? 4 : 16; + byte[] bytes = ipaddress.ToByteArray(); + byte[] bytes2 = new byte[width]; + int copy = bytes.Length > width ? width : bytes.Length; + Array.Copy(bytes, 0, bytes2, 0, copy); + Array.Reverse(bytes2); + + byte[] sized = Resize(bytes2, family); + var ip = new IPAddress(sized); + return ip; + } #if TRAVISCI - public + public #else internal #endif - static byte[] Resize(byte[] bytes, AddressFamily family) + static byte[] Resize(byte[] bytes, AddressFamily family) + { + if (family != AddressFamily.InterNetwork + && family != AddressFamily.InterNetworkV6) { - if (family != AddressFamily.InterNetwork - && family != AddressFamily.InterNetworkV6) - { - throw new ArgumentException("family"); - } + throw new ArgumentException("family"); + } - int width = family == AddressFamily.InterNetwork ? 4 : 16; + int width = family == AddressFamily.InterNetwork ? 4 : 16; - if (bytes.Length > width) - { - throw new ArgumentException("bytes"); - } + if (bytes.Length > width) + { + throw new ArgumentException("bytes"); + } - byte[] result = new byte[width]; - Array.Copy(bytes, 0, result, 0, bytes.Length); + byte[] result = new byte[width]; + Array.Copy(bytes, 0, result, 0, bytes.Length); - return result; - } + return result; + } - #endregion + #endregion - #endregion + #endregion - #region contains + #region contains - /// - /// return true if ipaddress is contained in network. - /// - /// A string containing an ip address to convert. - /// true if ipaddress is contained into the IP Network; otherwise, false. - public bool Contains(IPAddress contains) + /// + /// return true if ipaddress is contained in network. + /// + /// A string containing an ip address to convert. + /// true if ipaddress is contained into the IP Network; otherwise, false. + public bool Contains(IPAddress contains) + { + if (contains == null) { - if (contains == null) - { - throw new ArgumentNullException("contains"); - } + throw new ArgumentNullException("contains"); + } - if (this.AddressFamily != contains.AddressFamily) - { - return false; - } + if (this.AddressFamily != contains.AddressFamily) + { + return false; + } - BigInteger uintNetwork = this._network; - BigInteger uintBroadcast = this._broadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); - var uintAddress = IPNetwork2.ToBigInteger(contains); + BigInteger uintNetwork = this._network; + BigInteger uintBroadcast = this._broadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); + var uintAddress = IPNetwork2.ToBigInteger(contains); - bool result = uintAddress >= uintNetwork - && uintAddress <= uintBroadcast; + bool result = uintAddress >= uintNetwork + && uintAddress <= uintBroadcast; - return result; + return result; + } + + /// + /// Determines whether the given IP address is part of the given IP network. + /// + /// The IP network. + /// The IP address. + /// + /// true if the IP address is part of the IP network; otherwise, false. + /// + [Obsolete("static Contains is deprecated, please use instance Contains.")] + public static bool Contains(IPNetwork2 network, IPAddress ipaddress) + { + if (network == null) + { + throw new ArgumentNullException("network"); } - /// - /// Determines whether the given IP address is part of the given IP network. - /// - /// The IP network. - /// The IP address. - /// - /// true if the IP address is part of the IP network; otherwise, false. - /// - [Obsolete("static Contains is deprecated, please use instance Contains.")] - public static bool Contains(IPNetwork2 network, IPAddress ipaddress) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } + return network.Contains(ipaddress); + } - return network.Contains(ipaddress); + /// + /// return true is network2 is fully contained in network. + /// + /// The network to test. + /// It returns the boolean value. If network2 is in IPNetwork then it returns True, otherwise returns False. + public bool Contains(IPNetwork2 contains) + { + if (contains == null) + { + throw new ArgumentNullException("contains"); } - /// - /// return true is network2 is fully contained in network. - /// - /// The network to test. - /// It returns the boolean value. If network2 is in IPNetwork then it returns True, otherwise returns False. - public bool Contains(IPNetwork2 contains) - { - if (contains == null) - { - throw new ArgumentNullException("contains"); - } + BigInteger uintNetwork = this._network; + BigInteger uintBroadcast = this._broadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); - BigInteger uintNetwork = this._network; - BigInteger uintBroadcast = this._broadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); + BigInteger uintFirst = contains._network; + BigInteger uintLast = contains._broadcast; // CreateBroadcast(ref uintFirst, network2._netmask, network2._family); - BigInteger uintFirst = contains._network; - BigInteger uintLast = contains._broadcast; // CreateBroadcast(ref uintFirst, network2._netmask, network2._family); + bool result = uintFirst >= uintNetwork + && uintLast <= uintBroadcast; - bool result = uintFirst >= uintNetwork - && uintLast <= uintBroadcast; + return result; + } - return result; + /// + /// Determines if the given contains the specified . + /// + /// The network to check for containment. + /// The network to check if it is contained. + /// + /// true if the contains the ; otherwise, false. + /// + [Obsolete("static Contains is deprecated, please use instance Contains.")] + public static bool Contains(IPNetwork2 network, IPNetwork2 network2) + { + if (network == null) + { + throw new ArgumentNullException("network"); } - /// - /// Determines if the given contains the specified . - /// - /// The network to check for containment. - /// The network to check if it is contained. - /// - /// true if the contains the ; otherwise, false. - /// - [Obsolete("static Contains is deprecated, please use instance Contains.")] - public static bool Contains(IPNetwork2 network, IPNetwork2 network2) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.Contains(network2); - } + return network.Contains(network2); + } - private static BigInteger CreateBroadcast(ref BigInteger network, BigInteger netmask, AddressFamily family) - { - int width = family == AddressFamily.InterNetwork ? 4 : 16; - BigInteger uintBroadcast = network + netmask.PositiveReverse(width); + private static BigInteger CreateBroadcast(ref BigInteger network, BigInteger netmask, AddressFamily family) + { + int width = family == AddressFamily.InterNetwork ? 4 : 16; + BigInteger uintBroadcast = network + netmask.PositiveReverse(width); - return uintBroadcast; - } + return uintBroadcast; + } - #endregion + #endregion - #region overlap + #region overlap - /// - /// return true is network2 overlap network. - /// - /// The network to test. - /// true if network2 overlaps into the IP Network; otherwise, false. - public bool Overlap(IPNetwork2 network2) + /// + /// return true is network2 overlap network. + /// + /// The network to test. + /// true if network2 overlaps into the IP Network; otherwise, false. + public bool Overlap(IPNetwork2 network2) + { + if (network2 == null) { - if (network2 == null) - { - throw new ArgumentNullException("network2"); - } + throw new ArgumentNullException("network2"); + } - BigInteger uintNetwork = this._network; - BigInteger uintBroadcast = this._broadcast; + BigInteger uintNetwork = this._network; + BigInteger uintBroadcast = this._broadcast; - BigInteger uintFirst = network2._network; - BigInteger uintLast = network2._broadcast; + BigInteger uintFirst = network2._network; + BigInteger uintLast = network2._broadcast; - bool overlap = - (uintFirst >= uintNetwork && uintFirst <= uintBroadcast) - || (uintLast >= uintNetwork && uintLast <= uintBroadcast) - || (uintFirst <= uintNetwork && uintLast >= uintBroadcast) - || (uintFirst >= uintNetwork && uintLast <= uintBroadcast); + bool overlap = + (uintFirst >= uintNetwork && uintFirst <= uintBroadcast) + || (uintLast >= uintNetwork && uintLast <= uintBroadcast) + || (uintFirst <= uintNetwork && uintLast >= uintBroadcast) + || (uintFirst >= uintNetwork && uintLast <= uintBroadcast); - return overlap; - } + return overlap; + } - /// - /// Determines if two IPNetwork2 objects overlap each other. - /// - /// The first IPNetwork2 object. - /// The second IPNetwork2 object. - /// Returns true if the two IPNetwork2 objects overlap, otherwise false. - [Obsolete("static Overlap is deprecated, please use instance Overlap.")] - public static bool Overlap(IPNetwork2 network, IPNetwork2 network2) + /// + /// Determines if two IPNetwork2 objects overlap each other. + /// + /// The first IPNetwork2 object. + /// The second IPNetwork2 object. + /// Returns true if the two IPNetwork2 objects overlap, otherwise false. + [Obsolete("static Overlap is deprecated, please use instance Overlap.")] + public static bool Overlap(IPNetwork2 network, IPNetwork2 network2) + { + if (network == null) { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.Overlap(network2); + throw new ArgumentNullException("network"); } - #endregion + return network.Overlap(network2); + } - #region ToString + #endregion - /// - /// Returns a string representation of the object. - /// - /// - /// A string representation of the object which includes the Network and Cidr values separated by a "/". - /// - public override string ToString() - { - return string.Format("{0}/{1}", this.Network, this.Cidr); - } + #region ToString - #endregion + /// + /// Returns a string representation of the object. + /// + /// + /// A string representation of the object which includes the Network and Cidr values separated by a "/". + /// + public override string ToString() + { + return string.Format("{0}/{1}", this.Network, this.Cidr); + } - #region IANA block + #endregion - private static readonly Lazy _iana_ablock_reserved = new(() => IPNetwork2.Parse("10.0.0.0/8")); - private static readonly Lazy _iana_bblock_reserved = new(() => IPNetwork2.Parse("172.16.0.0/12")); - private static readonly Lazy _iana_cblock_reserved = new(() => IPNetwork2.Parse("192.168.0.0/16")); + #region IANA block - /// - /// Gets 10.0.0.0/8. - /// - /// The IANA reserved IPNetwork 10.0.0.0/8. - public static IPNetwork2 IANA_ABLK_RESERVED1 - { - get - { - return _iana_ablock_reserved.Value; - } - } + private static readonly Lazy _iana_ablock_reserved = new(() => IPNetwork2.Parse("10.0.0.0/8")); + private static readonly Lazy _iana_bblock_reserved = new(() => IPNetwork2.Parse("172.16.0.0/12")); + private static readonly Lazy _iana_cblock_reserved = new(() => IPNetwork2.Parse("192.168.0.0/16")); - /// - /// Gets 172.12.0.0/12. - /// - /// The IANA reserved IPNetwork 172.12.0.0/12. - public static IPNetwork2 IANA_BBLK_RESERVED1 + /// + /// Gets 10.0.0.0/8. + /// + /// The IANA reserved IPNetwork 10.0.0.0/8. + public static IPNetwork2 IANA_ABLK_RESERVED1 + { + get { - get - { - return _iana_bblock_reserved.Value; - } + return _iana_ablock_reserved.Value; } + } - /// - /// Gets 192.168.0.0/16. - /// - /// The IANA reserved IPNetwork 192.168.0.0/16. - public static IPNetwork2 IANA_CBLK_RESERVED1 + /// + /// Gets 172.12.0.0/12. + /// + /// The IANA reserved IPNetwork 172.12.0.0/12. + public static IPNetwork2 IANA_BBLK_RESERVED1 + { + get { - get - { - return _iana_cblock_reserved.Value; - } + return _iana_bblock_reserved.Value; } + } - /// - /// return true if ipaddress is contained in - /// IANA_ABLK_RESERVED1, IANA_BBLK_RESERVED1, IANA_CBLK_RESERVED1. - /// - /// A string containing an ip address to convert. - /// true if ipaddress is a IANA reserverd IP Netowkr ; otherwise, false. - public static bool IsIANAReserved(IPAddress ipaddress) + /// + /// Gets 192.168.0.0/16. + /// + /// The IANA reserved IPNetwork 192.168.0.0/16. + public static IPNetwork2 IANA_CBLK_RESERVED1 + { + get { - if (ipaddress == null) - { - throw new ArgumentNullException("ipaddress"); - } - - return IPNetwork2.IANA_ABLK_RESERVED1.Contains(ipaddress) - || IPNetwork2.IANA_BBLK_RESERVED1.Contains(ipaddress) - || IPNetwork2.IANA_CBLK_RESERVED1.Contains(ipaddress); + return _iana_cblock_reserved.Value; } + } - /// - /// return true if ipnetwork is contained in - /// IANA_ABLK_RESERVED1, IANA_BBLK_RESERVED1, IANA_CBLK_RESERVED1. - /// - /// true if the ipnetwork is a IANA reserverd IP Netowkr ; otherwise, false. - public bool IsIANAReserved() + /// + /// return true if ipaddress is contained in + /// IANA_ABLK_RESERVED1, IANA_BBLK_RESERVED1, IANA_CBLK_RESERVED1. + /// + /// A string containing an ip address to convert. + /// true if ipaddress is a IANA reserverd IP Netowkr ; otherwise, false. + public static bool IsIANAReserved(IPAddress ipaddress) + { + if (ipaddress == null) { - return IPNetwork2.IANA_ABLK_RESERVED1.Contains(this) - || IPNetwork2.IANA_BBLK_RESERVED1.Contains(this) - || IPNetwork2.IANA_CBLK_RESERVED1.Contains(this); + throw new ArgumentNullException("ipaddress"); } - /// - /// Determines whether the specified IP network is reserved according to the IANA Reserved ranges. - /// - /// The IP network to check. - /// - /// true if the specified IP network is reserved according to the IANA Reserved ranges; otherwise, false. - /// - /// - /// - /// This method is obsolete and should not be used. Please use the instance method instead. - /// - /// - /// Throws an if is null. - /// - /// - [Obsolete("static IsIANAReserved is deprecated, please use instance IsIANAReserved.")] - public static bool IsIANAReserved(IPNetwork2 ipnetwork) - { - if (ipnetwork == null) - { - throw new ArgumentNullException("ipnetwork"); - } + return IPNetwork2.IANA_ABLK_RESERVED1.Contains(ipaddress) + || IPNetwork2.IANA_BBLK_RESERVED1.Contains(ipaddress) + || IPNetwork2.IANA_CBLK_RESERVED1.Contains(ipaddress); + } + + /// + /// return true if ipnetwork is contained in + /// IANA_ABLK_RESERVED1, IANA_BBLK_RESERVED1, IANA_CBLK_RESERVED1. + /// + /// true if the ipnetwork is a IANA reserverd IP Netowkr ; otherwise, false. + public bool IsIANAReserved() + { + return IPNetwork2.IANA_ABLK_RESERVED1.Contains(this) + || IPNetwork2.IANA_BBLK_RESERVED1.Contains(this) + || IPNetwork2.IANA_CBLK_RESERVED1.Contains(this); + } - return ipnetwork.IsIANAReserved(); + /// + /// Determines whether the specified IP network is reserved according to the IANA Reserved ranges. + /// + /// The IP network to check. + /// + /// true if the specified IP network is reserved according to the IANA Reserved ranges; otherwise, false. + /// + /// + /// + /// This method is obsolete and should not be used. Please use the instance method instead. + /// + /// + /// Throws an if is null. + /// + /// + [Obsolete("static IsIANAReserved is deprecated, please use instance IsIANAReserved.")] + public static bool IsIANAReserved(IPNetwork2 ipnetwork) + { + if (ipnetwork == null) + { + throw new ArgumentNullException("ipnetwork"); } - #endregion + return ipnetwork.IsIANAReserved(); + } - #region Subnet + #endregion - /// - /// Subnet a network into multiple nets of cidr mask - /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 - /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. - /// - /// A byte representing the CIDR to be used to subnet the current IPNetwork. - /// A IPNetworkCollection splitted by CIDR. - public IPNetworkCollection Subnet(byte cidr) - { - IPNetwork2.InternalSubnet(false, this, cidr, out IPNetworkCollection ipnetworkCollection); + #region Subnet - return ipnetworkCollection; - } + /// + /// Subnet a network into multiple nets of cidr mask + /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 + /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. + /// + /// A byte representing the CIDR to be used to subnet the current IPNetwork. + /// A IPNetworkCollection splitted by CIDR. + public IPNetworkCollection Subnet(byte cidr) + { + IPNetwork2.InternalSubnet(false, this, cidr, out IPNetworkCollection ipnetworkCollection); - /// - /// Subnet method is used to divide the given IP network into subnets with the specified CIDR. - /// - /// The IP network to be subnetted. - /// The CIDR (Classless Inter-Domain Routing) value used to subnet the network. - /// - /// A collection of subnets created from the given network using the specified CIDR. - /// - [Obsolete("static Subnet is deprecated, please use instance Subnet.")] - public static IPNetworkCollection Subnet(IPNetwork2 network, byte cidr) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } + return ipnetworkCollection; + } - return network.Subnet(cidr); + /// + /// Subnet method is used to divide the given IP network into subnets with the specified CIDR. + /// + /// The IP network to be subnetted. + /// The CIDR (Classless Inter-Domain Routing) value used to subnet the network. + /// + /// A collection of subnets created from the given network using the specified CIDR. + /// + [Obsolete("static Subnet is deprecated, please use instance Subnet.")] + public static IPNetworkCollection Subnet(IPNetwork2 network, byte cidr) + { + if (network == null) + { + throw new ArgumentNullException("network"); } - /// - /// Subnet a network into multiple nets of cidr mask - /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 - /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. - /// - /// A byte representing the CIDR to be used to subnet the current IPNetwork. - /// The resulting subnetted IPNetwork. - /// true if network was split successfully; otherwise, false. - public bool TrySubnet(byte cidr, out IPNetworkCollection ipnetworkCollection) - { - IPNetwork2.InternalSubnet(true, this, cidr, out IPNetworkCollection inc); - if (inc == null) - { - ipnetworkCollection = null; - return false; - } + return network.Subnet(cidr); + } - ipnetworkCollection = inc; - return true; + /// + /// Subnet a network into multiple nets of cidr mask + /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 + /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. + /// + /// A byte representing the CIDR to be used to subnet the current IPNetwork. + /// The resulting subnetted IPNetwork. + /// true if network was split successfully; otherwise, false. + public bool TrySubnet(byte cidr, out IPNetworkCollection ipnetworkCollection) + { + IPNetwork2.InternalSubnet(true, this, cidr, out IPNetworkCollection inc); + if (inc == null) + { + ipnetworkCollection = null; + return false; } - /// - /// Subnet a network into multiple nets of cidr mask - /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 - /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. - /// - /// - /// A byte representing the CIDR to be used to subnet the current IPNetwork. - /// The resulting subnetted IPNetwork. - /// true if network was split successfully; otherwise, false. - [Obsolete("static TrySubnet is deprecated, please use instance TrySubnet.")] - public static bool TrySubnet(IPNetwork2 network, byte cidr, out IPNetworkCollection ipnetworkCollection) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } + ipnetworkCollection = inc; + return true; + } - return network.TrySubnet(cidr, out ipnetworkCollection); + /// + /// Subnet a network into multiple nets of cidr mask + /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 + /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. + /// + /// + /// A byte representing the CIDR to be used to subnet the current IPNetwork. + /// The resulting subnetted IPNetwork. + /// true if network was split successfully; otherwise, false. + [Obsolete("static TrySubnet is deprecated, please use instance TrySubnet.")] + public static bool TrySubnet(IPNetwork2 network, byte cidr, out IPNetworkCollection ipnetworkCollection) + { + if (network == null) + { + throw new ArgumentNullException("network"); } + return network.TrySubnet(cidr, out ipnetworkCollection); + } + #if TRAVISCI - public + public #else internal #endif - static void InternalSubnet(bool trySubnet, IPNetwork2 network, byte cidr, out IPNetworkCollection ipnetworkCollection) + static void InternalSubnet(bool trySubnet, IPNetwork2 network, byte cidr, out IPNetworkCollection ipnetworkCollection) + { + if (network == null) { - if (network == null) - { - if (trySubnet == false) - { - throw new ArgumentNullException("network"); - } - - ipnetworkCollection = null; - return; - } - - int maxCidr = network._family == Sockets.AddressFamily.InterNetwork ? 32 : 128; - if (cidr > maxCidr) - { - if (trySubnet == false) - { - throw new ArgumentOutOfRangeException("cidr"); - } - - ipnetworkCollection = null; - return; - } - - if (cidr < network.Cidr) + if (trySubnet == false) { - if (trySubnet == false) - { - throw new ArgumentException("cidr"); - } - - ipnetworkCollection = null; - return; + throw new ArgumentNullException("network"); } - ipnetworkCollection = new IPNetworkCollection(network, cidr); + ipnetworkCollection = null; return; } - #endregion - - #region Supernet - - /// - /// Supernet two consecutive cidr equal subnet into a single one - /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 - /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 - /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. - /// - /// The network to supernet with. - /// A supernetted IP Network. - public IPNetwork2 Supernet(IPNetwork2 network2) + int maxCidr = network._family == Sockets.AddressFamily.InterNetwork ? 32 : 128; + if (cidr > maxCidr) { - IPNetwork2.InternalSupernet(false, this, network2, out IPNetwork2 supernet); - return supernet; - } - - /// - /// Supernet two consecutive cidr equal subnet into a single one - /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 - /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 - /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. - /// - /// - /// The network to supernet with. - /// A supernetted IP Network. - [Obsolete("static Supernet is deprecated, please use instance Supernet.")] - public static IPNetwork2 Supernet(IPNetwork2 network, IPNetwork2 network2) - { - return network.Supernet(network2); - } - - /// - /// Try to supernet two consecutive cidr equal subnet into a single one - /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 - /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 - /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. - /// - /// The network to supernet with. - /// The resulting IPNetwork. - /// true if network2 was supernetted successfully; otherwise, false. - public bool TrySupernet(IPNetwork2 network2, out IPNetwork2 supernet) - { - IPNetwork2.InternalSupernet(true, this, network2, out IPNetwork2 outSupernet); - bool parsed = outSupernet != null; - supernet = outSupernet; - return parsed; - } - - /// - /// Try to supernet two consecutive cidr equal subnet into a single one - /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 - /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 - /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. - /// - /// - /// The network to supernet with. - /// The resulting IPNetwork. - /// true if network2 was supernetted successfully; otherwise, false. - [Obsolete("static TrySupernet is deprecated, please use instance TrySupernet.")] - public static bool TrySupernet(IPNetwork2 network, IPNetwork2 network2, out IPNetwork2 supernet) - { - if (network == null) + if (trySubnet == false) { - throw new ArgumentNullException("network"); + throw new ArgumentOutOfRangeException("cidr"); } - return network.TrySupernet(network2, out supernet); + ipnetworkCollection = null; + return; } -#if TRAVISCI - public -#else - internal -#endif - static void InternalSupernet(bool trySupernet, IPNetwork2 network1, IPNetwork2 network2, out IPNetwork2 supernet) + if (cidr < network.Cidr) { - if (network1 == null) + if (trySubnet == false) { - if (trySupernet == false) - { - throw new ArgumentNullException("network1"); - } - - supernet = null; - return; + throw new ArgumentException("cidr"); } - if (network2 == null) - { - if (trySupernet == false) - { - throw new ArgumentNullException("network2"); - } + ipnetworkCollection = null; + return; + } - supernet = null; - return; - } + ipnetworkCollection = new IPNetworkCollection(network, cidr); + return; + } - if (network1.Contains(network2)) - { - supernet = new IPNetwork2(network1._network, network1._family, network1.Cidr); - return; - } + #endregion - if (network2.Contains(network1)) - { - supernet = new IPNetwork2(network2._network, network2._family, network2.Cidr); - return; - } + #region Supernet - if (network1._cidr != network2._cidr) - { - if (trySupernet == false) - { - throw new ArgumentException("cidr"); - } - - supernet = null; - return; - } + /// + /// Supernet two consecutive cidr equal subnet into a single one + /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 + /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 + /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. + /// + /// The network to supernet with. + /// A supernetted IP Network. + public IPNetwork2 Supernet(IPNetwork2 network2) + { + IPNetwork2.InternalSupernet(false, this, network2, out IPNetwork2 supernet); + return supernet; + } - IPNetwork2 first = (network1._network < network2._network) ? network1 : network2; - IPNetwork2 last = (network1._network > network2._network) ? network1 : network2; + /// + /// Supernet two consecutive cidr equal subnet into a single one + /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 + /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 + /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. + /// + /// + /// The network to supernet with. + /// A supernetted IP Network. + [Obsolete("static Supernet is deprecated, please use instance Supernet.")] + public static IPNetwork2 Supernet(IPNetwork2 network, IPNetwork2 network2) + { + return network.Supernet(network2); + } - // Starting from here : - // network1 and network2 have the same cidr, - // network1 does not contain network2, - // network2 does not contain network1, - // first is the lower subnet - // last is the higher subnet - if ((first._broadcast + 1) != last._network) - { - if (trySupernet == false) - { - throw new ArgumentOutOfRangeException("network1"); - } + /// + /// Try to supernet two consecutive cidr equal subnet into a single one + /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 + /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 + /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. + /// + /// The network to supernet with. + /// The resulting IPNetwork. + /// true if network2 was supernetted successfully; otherwise, false. + public bool TrySupernet(IPNetwork2 network2, out IPNetwork2 supernet) + { + IPNetwork2.InternalSupernet(true, this, network2, out IPNetwork2 outSupernet); + bool parsed = outSupernet != null; + supernet = outSupernet; + return parsed; + } - supernet = null; - return; - } + /// + /// Try to supernet two consecutive cidr equal subnet into a single one + /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 + /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 + /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. + /// + /// + /// The network to supernet with. + /// The resulting IPNetwork. + /// true if network2 was supernetted successfully; otherwise, false. + [Obsolete("static TrySupernet is deprecated, please use instance TrySupernet.")] + public static bool TrySupernet(IPNetwork2 network, IPNetwork2 network2, out IPNetwork2 supernet) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } - BigInteger uintSupernet = first._network; - byte cidrSupernet = (byte)(first._cidr - 1); + return network.TrySupernet(network2, out supernet); + } - var networkSupernet = new IPNetwork2(uintSupernet, first._family, cidrSupernet); - if (networkSupernet._network != first._network) +#if TRAVISCI + public +#else + internal +#endif + static void InternalSupernet(bool trySupernet, IPNetwork2 network1, IPNetwork2 network2, out IPNetwork2 supernet) + { + if (network1 == null) + { + if (trySupernet == false) { - if (trySupernet == false) - { - throw new ArgumentException("network"); - } - - supernet = null; - return; + throw new ArgumentNullException("network1"); } - supernet = networkSupernet; + supernet = null; return; } - #endregion - - #region GetHashCode - - /// - public override int GetHashCode() + if (network2 == null) { - return this._hashCode; - } + if (trySupernet == false) + { + throw new ArgumentNullException("network2"); + } - /// - /// 20221105 : ldvhcosal - /// GetHashCode uses mutable attributes. That introduce undefined behaviour on Hashtable and dictionary. - /// - /// An number representing the hashCode. - private int ComputeHashCode() - { - return string.Format( - "{0}|{1}|{2}", - this._family.GetHashCode(), - this._network.GetHashCode(), - this._cidr.GetHashCode()).GetHashCode(); + supernet = null; + return; } - #endregion - - #region SupernetArray - - /// - /// Supernet a list of subnet - /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 - /// 192.168.0.0/24 + 192.168.1.0/24 + 192.168.2.0/24 + 192.168.3.0/24 = 192.168.0.0/22. - /// - /// A list of IPNetwork to merge into common supernets. - /// The result of IPNetwork if merges succeed, the first ipnetwork otherwise. - public static IPNetwork2[] Supernet(IPNetwork2[] ipnetworks) + if (network1.Contains(network2)) { - InternalSupernet(false, ipnetworks, out IPNetwork2[] supernet); - return supernet; + supernet = new IPNetwork2(network1._network, network1._family, network1.Cidr); + return; } - /// - /// Supernet a list of subnet - /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 - /// 192.168.0.0/24 + 192.168.1.0/24 + 192.168.2.0/24 + 192.168.3.0/24 = 192.168.0.0/22. - /// - /// A list of IPNetwork to merge into common supernets. - /// The result of IPNetwork merges. - /// true if ipnetworks was supernetted successfully; otherwise, false. - public static bool TrySupernet(IPNetwork2[] ipnetworks, out IPNetwork2[] supernet) + if (network2.Contains(network1)) { - bool supernetted = InternalSupernet(true, ipnetworks, out supernet); - return supernetted; + supernet = new IPNetwork2(network2._network, network2._family, network2.Cidr); + return; } -#if TRAVISCI - public -#else - internal -#endif - static bool InternalSupernet(bool trySupernet, IPNetwork2[] ipnetworks, out IPNetwork2[] supernet) + if (network1._cidr != network2._cidr) { - if (ipnetworks == null) + if (trySupernet == false) { - if (trySupernet == false) - { - throw new ArgumentNullException("ipnetworks"); - } - - supernet = null; - return false; + throw new ArgumentException("cidr"); } - if (ipnetworks.Length <= 0) - { - supernet = new IPNetwork2[0]; - return true; - } + supernet = null; + return; + } - var supernetted = new List(); - List ipns = IPNetwork2.Array2List(ipnetworks); - Stack current = IPNetwork2.List2Stack(ipns); - int previousCount = 0; - int currentCount = current.Count; + IPNetwork2 first = (network1._network < network2._network) ? network1 : network2; + IPNetwork2 last = (network1._network > network2._network) ? network1 : network2; - while (previousCount != currentCount) + // Starting from here : + // network1 and network2 have the same cidr, + // network1 does not contain network2, + // network2 does not contain network1, + // first is the lower subnet + // last is the higher subnet + if ((first._broadcast + 1) != last._network) + { + if (trySupernet == false) { - supernetted.Clear(); - while (current.Count > 1) - { - IPNetwork2 ipn1 = current.Pop(); - IPNetwork2 ipn2 = current.Peek(); - - bool success = ipn1.TrySupernet(ipn2, out IPNetwork2 outNetwork); - if (success) - { - current.Pop(); - current.Push(outNetwork); - } - else - { - supernetted.Add(ipn1); - } - } - - if (current.Count == 1) - { - supernetted.Add(current.Pop()); - } - - previousCount = currentCount; - currentCount = supernetted.Count; - current = IPNetwork2.List2Stack(supernetted); + throw new ArgumentOutOfRangeException("network1"); } - supernet = supernetted.ToArray(); - return true; + supernet = null; + return; } - private static Stack List2Stack(List list) - { - var stack = new Stack(); - list.ForEach(new Action( - delegate(IPNetwork2 ipn) - { - stack.Push(ipn); - })); - return stack; - } + BigInteger uintSupernet = first._network; + byte cidrSupernet = (byte)(first._cidr - 1); - private static List Array2List(IPNetwork2[] array) + var networkSupernet = new IPNetwork2(uintSupernet, first._family, cidrSupernet); + if (networkSupernet._network != first._network) { - var ipns = new List(); - ipns.AddRange(array); - IPNetwork2.RemoveNull(ipns); - ipns.Sort(new Comparison( - delegate(IPNetwork2 ipn1, IPNetwork2 ipn2) - { - int networkCompare = ipn1._network.CompareTo(ipn2._network); - if (networkCompare == 0) - { - int cidrCompare = ipn1._cidr.CompareTo(ipn2._cidr); - return cidrCompare; - } - - return networkCompare; - })); - ipns.Reverse(); + if (trySupernet == false) + { + throw new ArgumentException("network"); + } - return ipns; + supernet = null; + return; } - private static void RemoveNull(List ipns) - { - ipns.RemoveAll(new Predicate( - delegate(IPNetwork2 ipn) - { - if (ipn == null) - { - return true; - } + supernet = networkSupernet; + return; + } - return false; - })); - } + #endregion - #endregion + #region GetHashCode - #region WideSubnet + /// + public override int GetHashCode() + { + return this._hashCode; + } - /// - /// Finds the widest subnet that can contain both the start and end IP addresses. - /// - /// The starting IP address. - /// The ending IP address. - /// The widest subnet that contains both the start and end IP addresses. - /// Thrown when either the start or end IP address is null or empty. - /// Thrown when the start or end IP addresses are not valid. - /// Thrown when the start and end IP addresses have different address families. - public static IPNetwork2 WideSubnet(string start, string end) - { - if (string.IsNullOrEmpty(start)) - { - throw new ArgumentNullException("start"); - } + /// + /// 20221105 : ldvhcosal + /// GetHashCode uses mutable attributes. That introduce undefined behaviour on Hashtable and dictionary. + /// + /// An number representing the hashCode. + private int ComputeHashCode() + { + return string.Format( + "{0}|{1}|{2}", + this._family.GetHashCode(), + this._network.GetHashCode(), + this._cidr.GetHashCode()).GetHashCode(); + } - if (string.IsNullOrEmpty(end)) - { - throw new ArgumentNullException("end"); - } + #endregion - if (!IPAddress.TryParse(start, out IPAddress startIP)) - { - throw new ArgumentException("start"); - } + #region SupernetArray - if (!IPAddress.TryParse(end, out IPAddress endIP)) - { - throw new ArgumentException("end"); - } + /// + /// Supernet a list of subnet + /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 + /// 192.168.0.0/24 + 192.168.1.0/24 + 192.168.2.0/24 + 192.168.3.0/24 = 192.168.0.0/22. + /// + /// A list of IPNetwork to merge into common supernets. + /// The result of IPNetwork if merges succeed, the first ipnetwork otherwise. + public static IPNetwork2[] Supernet(IPNetwork2[] ipnetworks) + { + InternalSupernet(false, ipnetworks, out IPNetwork2[] supernet); + return supernet; + } - if (startIP.AddressFamily != endIP.AddressFamily) - { - throw new NotSupportedException("MixedAddressFamily"); - } + /// + /// Supernet a list of subnet + /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 + /// 192.168.0.0/24 + 192.168.1.0/24 + 192.168.2.0/24 + 192.168.3.0/24 = 192.168.0.0/22. + /// + /// A list of IPNetwork to merge into common supernets. + /// The result of IPNetwork merges. + /// true if ipnetworks was supernetted successfully; otherwise, false. + public static bool TrySupernet(IPNetwork2[] ipnetworks, out IPNetwork2[] supernet) + { + bool supernetted = InternalSupernet(true, ipnetworks, out supernet); + return supernetted; + } - var ipnetwork = new IPNetwork2(0, startIP.AddressFamily, 0); - for (byte cidr = 32; cidr >= 0; cidr--) +#if TRAVISCI + public +#else + internal +#endif + static bool InternalSupernet(bool trySupernet, IPNetwork2[] ipnetworks, out IPNetwork2[] supernet) + { + if (ipnetworks == null) + { + if (trySupernet == false) { - var wideSubnet = IPNetwork2.Parse(start, cidr); - if (wideSubnet.Contains(endIP)) - { - ipnetwork = wideSubnet; - break; - } + throw new ArgumentNullException("ipnetworks"); } - return ipnetwork; + supernet = null; + return false; } - /// - /// Attempts to find the widest subnet that contains both the start and end IP addresses. objects. - /// - /// An array of IPNetwork2 objects to wide subnet. - /// When this method returns, contains the wide subnet of the IPNetwork2 objects, if wide subnet was successful; otherwise, null. - /// true if wide subnet was successful; otherwise, false. - public static bool TryWideSubnet(IPNetwork2[] ipnetworks, out IPNetwork2 ipnetwork) + if (ipnetworks.Length <= 0) { - IPNetwork2.InternalWideSubnet(true, ipnetworks, out IPNetwork2 ipn); - if (ipn == null) - { - ipnetwork = null; - return false; - } - - ipnetwork = ipn; - + supernet = new IPNetwork2[0]; return true; } - /// - /// Finds the widest subnet from an array of IP networks. An array of IPNetwork2 objects representing the IP networks. The widest subnet as an IPNetwork2 object. - /// / - public static IPNetwork2 WideSubnet(IPNetwork2[] ipnetworks) - { - IPNetwork2.InternalWideSubnet(false, ipnetworks, out IPNetwork2 ipn); - return ipn; - } + var supernetted = new List(); + List ipns = IPNetwork2.Array2List(ipnetworks); + Stack current = IPNetwork2.List2Stack(ipns); + int previousCount = 0; + int currentCount = current.Count; - internal static void InternalWideSubnet(bool tryWide, IPNetwork2[] ipnetworks, out IPNetwork2 ipnetwork) + while (previousCount != currentCount) { - if (ipnetworks == null) + supernetted.Clear(); + while (current.Count > 1) { - if (tryWide == false) - { - throw new ArgumentNullException("ipnetworks"); - } - - ipnetwork = null; - return; - } + IPNetwork2 ipn1 = current.Pop(); + IPNetwork2 ipn2 = current.Peek(); - IPNetwork2[] nnin = Array.FindAll(ipnetworks, new Predicate( - delegate(IPNetwork2 ipnet) + bool success = ipn1.TrySupernet(ipn2, out IPNetwork2 outNetwork); + if (success) { - return ipnet != null; - })); - - if (nnin.Length <= 0) - { - if (tryWide == false) + current.Pop(); + current.Push(outNetwork); + } + else { - throw new ArgumentException("ipnetworks"); + supernetted.Add(ipn1); } - - ipnetwork = null; - return; } - if (nnin.Length == 1) + if (current.Count == 1) { - IPNetwork2 ipn0 = nnin[0]; - ipnetwork = ipn0; - return; + supernetted.Add(current.Pop()); } - Array.Sort(nnin); - IPNetwork2 nnin0 = nnin[0]; - BigInteger uintNnin0 = nnin0._ipaddress; + previousCount = currentCount; + currentCount = supernetted.Count; + current = IPNetwork2.List2Stack(supernetted); + } - IPNetwork2 nninX = nnin[nnin.Length - 1]; - IPAddress ipaddressX = nninX.Broadcast; + supernet = supernetted.ToArray(); + return true; + } - AddressFamily family = ipnetworks[0]._family; - foreach (IPNetwork2 ipnx in ipnetworks) + private static Stack List2Stack(List list) + { + var stack = new Stack(); + list.ForEach(new Action( + delegate(IPNetwork2 ipn) { - if (ipnx._family != family) + stack.Push(ipn); + })); + return stack; + } + + private static List Array2List(IPNetwork2[] array) + { + var ipns = new List(); + ipns.AddRange(array); + IPNetwork2.RemoveNull(ipns); + ipns.Sort(new Comparison( + delegate(IPNetwork2 ipn1, IPNetwork2 ipn2) + { + int networkCompare = ipn1._network.CompareTo(ipn2._network); + if (networkCompare == 0) { - throw new ArgumentException("MixedAddressFamily"); + int cidrCompare = ipn1._cidr.CompareTo(ipn2._cidr); + return cidrCompare; } - } - var ipn = new IPNetwork2(0, family, 0); - for (byte cidr = nnin0._cidr; cidr >= 0; cidr--) + return networkCompare; + })); + ipns.Reverse(); + + return ipns; + } + + private static void RemoveNull(List ipns) + { + ipns.RemoveAll(new Predicate( + delegate(IPNetwork2 ipn) { - var wideSubnet = new IPNetwork2(uintNnin0, family, cidr); - if (wideSubnet.Contains(ipaddressX)) + if (ipn == null) { - ipn = wideSubnet; - break; + return true; } - } - ipnetwork = ipn; - return; - } + return false; + })); + } - #endregion + #endregion - #region Print + #region WideSubnet - /// - /// Print an ipnetwork in a clear representation string. - /// - /// Dump an IPNetwork representation as string. - public string Print() + /// + /// Finds the widest subnet that can contain both the start and end IP addresses. + /// + /// The starting IP address. + /// The ending IP address. + /// The widest subnet that contains both the start and end IP addresses. + /// Thrown when either the start or end IP address is null or empty. + /// Thrown when the start or end IP addresses are not valid. + /// Thrown when the start and end IP addresses have different address families. + public static IPNetwork2 WideSubnet(string start, string end) + { + if (string.IsNullOrEmpty(start)) { - using (var sw = new StringWriter()) - { - sw.WriteLine("IPNetwork : {0}", this.ToString()); - sw.WriteLine("Network : {0}", this.Network); - sw.WriteLine("Netmask : {0}", this.Netmask); - sw.WriteLine("Cidr : {0}", this.Cidr); - sw.WriteLine("Broadcast : {0}", this.Broadcast); - sw.WriteLine("FirstUsable : {0}", this.FirstUsable); - sw.WriteLine("LastUsable : {0}", this.LastUsable); - sw.WriteLine("Usable : {0}", this.Usable); - - return sw.ToString(); - } + throw new ArgumentNullException("start"); } - /// - /// Print an ipnetwork in a clear representation string. - /// - /// Dump an IPNetwork representation as string. - [Obsolete("static Print is deprecated, please use instance Print.")] - public static string Print(IPNetwork2 ipnetwork) + if (string.IsNullOrEmpty(end)) { - if (ipnetwork == null) - { - throw new ArgumentNullException("ipnetwork"); - } - - return ipnetwork.Print(); + throw new ArgumentNullException("end"); } - #endregion - - #region TryGuessCidr + if (!IPAddress.TryParse(start, out IPAddress startIP)) + { + throw new ArgumentException("start"); + } - /// - /// Delegate to CidrGuess ClassFull guessing of cidr. - /// - /// A string representing an IPAdress that will be used to guess the corresponding CIDR. - /// The resulting CIDR as byte. - /// true if cidr was guessed successfully; otherwise, false. - public static bool TryGuessCidr(string ip, out byte cidr) + if (!IPAddress.TryParse(end, out IPAddress endIP)) { - return CidrGuess.ClassFull.TryGuessCidr(ip, out cidr); + throw new ArgumentException("end"); } - /// - /// Try to parse cidr. Have to be >= 0 and <= 32 or 128. - /// - /// A string representing a byte CIRD (/24). - /// Either IPv4 or IPv6. - /// The resulting CIDR as byte. - /// true if cidr was converted successfully; otherwise, false. - public static bool TryParseCidr(string sidr, AddressFamily family, out byte? cidr) - { - byte b = 0; - if (!byte.TryParse(sidr, out b)) - { - cidr = null; - return false; - } + if (startIP.AddressFamily != endIP.AddressFamily) + { + throw new NotSupportedException("MixedAddressFamily"); + } - if (!IPNetwork2.TryToNetmask(b, family, out IPAddress netmask)) + var ipnetwork = new IPNetwork2(0, startIP.AddressFamily, 0); + for (byte cidr = 32; cidr >= 0; cidr--) + { + var wideSubnet = IPNetwork2.Parse(start, cidr); + if (wideSubnet.Contains(endIP)) { - cidr = null; - return false; + ipnetwork = wideSubnet; + break; } - - cidr = b; - return true; } - #endregion - - #region ListIPAddress - - /// - /// List all ip addresses in a subnet. - /// - /// The network to list IPAdresses. - /// All the IPAdresses contained in ipnetwork. - [Obsolete("static ListIPAddress is deprecated, please use instance ListIPAddress.")] - public static IPAddressCollection ListIPAddress(IPNetwork2 ipnetwork) - { - return ipnetwork.ListIPAddress(); - } + return ipnetwork; + } - /// - /// List all ip addresses in a subnet. - /// - /// Filter IPAdresses from IPNetwork. - /// The filterted IPAdresses contained in ipnetwork. - public IPAddressCollection ListIPAddress(FilterEnum filter = FilterEnum.All) + /// + /// Attempts to find the widest subnet that contains both the start and end IP addresses. objects. + /// + /// An array of IPNetwork2 objects to wide subnet. + /// When this method returns, contains the wide subnet of the IPNetwork2 objects, if wide subnet was successful; otherwise, null. + /// true if wide subnet was successful; otherwise, false. + public static bool TryWideSubnet(IPNetwork2[] ipnetworks, out IPNetwork2 ipnetwork) + { + IPNetwork2.InternalWideSubnet(true, ipnetworks, out IPNetwork2 ipn); + if (ipn == null) { - return new IPAddressCollection(this, filter); + ipnetwork = null; + return false; } - #endregion + ipnetwork = ipn; - #region IComparable Members - - /// - /// Compares two IPNetwork2 instances. - /// - /// The first IPNetwork2 instance to compare. - /// The second IPNetwork2 instance to compare. - /// - /// A value indicating the relative order of the two IPNetwork2 instances. - /// Zero if the instances are equal. - /// A negative value if is less than . - /// A positive value if is greater than . - /// - public static int Compare(IPNetwork2 left, IPNetwork2 right) - { - // two null IPNetworks are equal - if (ReferenceEquals(left, null) && ReferenceEquals(right, null)) - { - return 0; - } + return true; + } - // two same IPNetworks are equal - if (ReferenceEquals(left, right)) - { - return 0; - } + /// + /// Finds the widest subnet from an array of IP networks. An array of IPNetwork2 objects representing the IP networks. The widest subnet as an IPNetwork2 object. + /// / + public static IPNetwork2 WideSubnet(IPNetwork2[] ipnetworks) + { + IPNetwork2.InternalWideSubnet(false, ipnetworks, out IPNetwork2 ipn); + return ipn; + } - // null is always sorted first - if (ReferenceEquals(left, null)) + internal static void InternalWideSubnet(bool tryWide, IPNetwork2[] ipnetworks, out IPNetwork2 ipnetwork) + { + if (ipnetworks == null) + { + if (tryWide == false) { - return -1; + throw new ArgumentNullException("ipnetworks"); } - if (ReferenceEquals(right, null)) - { - return 1; - } + ipnetwork = null; + return; + } - // first test family - int result = left._family.CompareTo(right._family); - if (result != 0) + IPNetwork2[] nnin = Array.FindAll(ipnetworks, new Predicate( + delegate(IPNetwork2 ipnet) { - return result; - } + return ipnet != null; + })); - // second test the network - result = left._network.CompareTo(right._network); - if (result != 0) + if (nnin.Length <= 0) + { + if (tryWide == false) { - return result; + throw new ArgumentException("ipnetworks"); } - // then test the cidr - result = left._cidr.CompareTo(right._cidr); - return result; + ipnetwork = null; + return; } - /// - /// Compare two ipnetworks. - /// - /// The other network to compare to. - /// A signed number indicating the relative values of this instance and value.. - public int CompareTo(IPNetwork2 other) + if (nnin.Length == 1) { - return Compare(this, other); + IPNetwork2 ipn0 = nnin[0]; + ipnetwork = ipn0; + return; } - /// - /// Compare two ipnetworks. - /// - /// The other object to compare to. - /// A signed number indicating the relative values of this instance and value.. - public int CompareTo(object obj) + Array.Sort(nnin); + IPNetwork2 nnin0 = nnin[0]; + BigInteger uintNnin0 = nnin0._ipaddress; + + IPNetwork2 nninX = nnin[nnin.Length - 1]; + IPAddress ipaddressX = nninX.Broadcast; + + AddressFamily family = ipnetworks[0]._family; + foreach (IPNetwork2 ipnx in ipnetworks) { - // null is at less - if (obj == null) + if (ipnx._family != family) { - return 1; + throw new ArgumentException("MixedAddressFamily"); } + } - // convert to a proper Cidr object - var other = obj as IPNetwork2; - - // type problem if null - if (other == null) + var ipn = new IPNetwork2(0, family, 0); + for (byte cidr = nnin0._cidr; cidr >= 0; cidr--) + { + var wideSubnet = new IPNetwork2(uintNnin0, family, cidr); + if (wideSubnet.Contains(ipaddressX)) { - throw new ArgumentException( - "The supplied parameter is an invalid type. Please supply an IPNetwork type.", - "obj"); + ipn = wideSubnet; + break; } - - // perform the comparision - return this.CompareTo(other); } - #endregion + ipnetwork = ipn; + return; + } - #region IEquatable Members + #endregion - /// - /// Compare two ipnetworks. - /// - /// An IPNetwork to compare. - /// An other IPNetwork to compare to. - /// true if obj has the same value as this instance; otherwise, false. - public static bool Equals(IPNetwork2 left, IPNetwork2 right) - { - return Compare(left, right) == 0; - } + #region Print - /// - /// Compare two ipnetworks. - /// - /// An IPNetwork to compare to this instance. - /// true if obj has the same value as this instance; otherwise, false. - public bool Equals(IPNetwork2 other) + /// + /// Print an ipnetwork in a clear representation string. + /// + /// Dump an IPNetwork representation as string. + public string Print() + { + using (var sw = new StringWriter()) { - return Equals(this, other); + sw.WriteLine("IPNetwork : {0}", this.ToString()); + sw.WriteLine("Network : {0}", this.Network); + sw.WriteLine("Netmask : {0}", this.Netmask); + sw.WriteLine("Cidr : {0}", this.Cidr); + sw.WriteLine("Broadcast : {0}", this.Broadcast); + sw.WriteLine("FirstUsable : {0}", this.FirstUsable); + sw.WriteLine("LastUsable : {0}", this.LastUsable); + sw.WriteLine("Usable : {0}", this.Usable); + + return sw.ToString(); } + } - /// - /// Compare two ipnetworks. - /// - /// An object value to compare to this instance. - /// true if obj has the same value as this instance; otherwise, false. - public override bool Equals(object obj) + /// + /// Print an ipnetwork in a clear representation string. + /// + /// Dump an IPNetwork representation as string. + [Obsolete("static Print is deprecated, please use instance Print.")] + public static string Print(IPNetwork2 ipnetwork) + { + if (ipnetwork == null) { - return Equals(this, obj as IPNetwork2); + throw new ArgumentNullException("ipnetwork"); } - #endregion + return ipnetwork.Print(); + } - #region Operators + #endregion - /// - /// Compares two IPNetwork. - /// - /// left instance. - /// Right instance. - /// true if left equals right; otherwise, false. - public static bool operator ==(IPNetwork2 left, IPNetwork2 right) + #region TryGuessCidr + + /// + /// Delegate to CidrGuess ClassFull guessing of cidr. + /// + /// A string representing an IPAdress that will be used to guess the corresponding CIDR. + /// The resulting CIDR as byte. + /// true if cidr was guessed successfully; otherwise, false. + public static bool TryGuessCidr(string ip, out byte cidr) + { + return CidrGuess.ClassFull.TryGuessCidr(ip, out cidr); + } + + /// + /// Try to parse cidr. Have to be >= 0 and <= 32 or 128. + /// + /// A string representing a byte CIRD (/24). + /// Either IPv4 or IPv6. + /// The resulting CIDR as byte. + /// true if cidr was converted successfully; otherwise, false. + public static bool TryParseCidr(string sidr, AddressFamily family, out byte? cidr) + { + byte b = 0; + if (!byte.TryParse(sidr, out b)) { - return Equals(left, right); + cidr = null; + return false; } - /// - /// Compares two IPNetwork. - /// - /// left instance. - /// Right instance. - /// true if left does not equals right; otherwise, false. - public static bool operator !=(IPNetwork2 left, IPNetwork2 right) + if (!IPNetwork2.TryToNetmask(b, family, out IPAddress netmask)) { - return !Equals(left, right); + cidr = null; + return false; } - /// - /// Compares two IPNetwork. - /// - /// left instance. - /// Right instance. - /// true if left is less than right; otherwise, false. - public static bool operator <(IPNetwork2 left, IPNetwork2 right) + cidr = b; + return true; + } + + #endregion + + #region ListIPAddress + + /// + /// List all ip addresses in a subnet. + /// + /// The network to list IPAdresses. + /// All the IPAdresses contained in ipnetwork. + [Obsolete("static ListIPAddress is deprecated, please use instance ListIPAddress.")] + public static IPAddressCollection ListIPAddress(IPNetwork2 ipnetwork) + { + return ipnetwork.ListIPAddress(); + } + + /// + /// List all ip addresses in a subnet. + /// + /// Filter IPAdresses from IPNetwork. + /// The filterted IPAdresses contained in ipnetwork. + public IPAddressCollection ListIPAddress(FilterEnum filter = FilterEnum.All) + { + return new IPAddressCollection(this, filter); + } + + #endregion + + #region IComparable Members + + /// + /// Compares two IPNetwork2 instances. + /// + /// The first IPNetwork2 instance to compare. + /// The second IPNetwork2 instance to compare. + /// + /// A value indicating the relative order of the two IPNetwork2 instances. + /// Zero if the instances are equal. + /// A negative value if is less than . + /// A positive value if is greater than . + /// + public static int Compare(IPNetwork2 left, IPNetwork2 right) + { + // two null IPNetworks are equal + if (ReferenceEquals(left, null) && ReferenceEquals(right, null)) { - return Compare(left, right) < 0; + return 0; } - /// - /// Compares two IPNetwork. - /// - /// left instance. - /// Right instance. - /// true if left is greater than right; otherwise, false. - public static bool operator >(IPNetwork2 left, IPNetwork2 right) + // two same IPNetworks are equal + if (ReferenceEquals(left, right)) { - return Compare(left, right) > 0; + return 0; } - #endregion - - #region XmlSerialization - - /// - /// Initializes a new instance of the class. - /// Created for DataContractSerialization. Better use static methods IPNetwork.Parse() to create IPNetworks. - /// - public IPNetwork2() - : this(0, AddressFamily.InterNetwork, 0) + // null is always sorted first + if (ReferenceEquals(left, null)) { + return -1; } - #endregion + if (ReferenceEquals(right, null)) + { + return 1; + } - #region ISerializable - internal struct IPNetworkInteral + // first test family + int result = left._family.CompareTo(right._family); + if (result != 0) { - public BigInteger IPAddress; - public byte Cidr; - public AddressFamily AddressFamily; + return result; } - private IPNetwork2(SerializationInfo info, StreamingContext context) + // second test the network + result = left._network.CompareTo(right._network); + if (result != 0) { - string sipnetwork = (string)info.GetValue("IPNetwork", typeof(string)); - var ipnetwork = IPNetwork2.Parse(sipnetwork); + return result; + } - this._ipaddress = ipnetwork._ipaddress; - this._cidr = ipnetwork._cidr; - this._family = ipnetwork._family; + // then test the cidr + result = left._cidr.CompareTo(right._cidr); + return result; + } + + /// + /// Compare two ipnetworks. + /// + /// The other network to compare to. + /// A signed number indicating the relative values of this instance and value.. + public int CompareTo(IPNetwork2 other) + { + return Compare(this, other); + } + + /// + /// Compare two ipnetworks. + /// + /// The other object to compare to. + /// A signed number indicating the relative values of this instance and value.. + public int CompareTo(object obj) + { + // null is at less + if (obj == null) + { + return 1; } - void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) + // convert to a proper Cidr object + var other = obj as IPNetwork2; + + // type problem if null + if (other == null) { - info.AddValue("IPNetwork", this.ToString()); + throw new ArgumentException( + "The supplied parameter is an invalid type. Please supply an IPNetwork type.", + "obj"); } - #endregion + // perform the comparision + return this.CompareTo(other); + } - #region WildcardMask + #endregion - /// - /// Gets netmask Inverse - /// https://en.wikipedia.org/wiki/Wildcard_mask - /// - /// A wildcard mask is a mask of bits that indicates which parts of an IP address are available for examination. - /// In the Cisco IOS,[1] they are used in several places, for example: - /// To indicate the size of a network or subnet for some routing protocols, such as OSPF. - /// To indicate what IP addresses should be permitted or denied in access control lists(ACLs). - /// - /// A wildcard mask can be thought of as an inverted subnet mask.For example, - /// a subnet mask of 255.255.255.0 (binary equivalent = 11111111.11111111.11111111.00000000) - /// inverts to a wildcard mask of 0.0.0.255 (binary equivalent = 00000000.00000000.00000000.11111111). - /// - /// A wild card mask is a matching rule.[2] The rule for a wildcard mask is: - /// 0 means that the equivalent bit must match - /// 1 means that the equivalent bit does not matter - /// - /// Any wildcard bit-pattern can be masked for examination.For example, a wildcard mask of 0.0.0.254 - /// (binary equivalent = 00000000.00000000.00000000.11111110) applied to IP address 10.10.10.2 - /// (00001010.00001010.00001010.00000010) will match even-numbered IP addresses 10.10.10.0, 10.10.10.2, - /// 10.10.10.4, 10.10.10.6 etc. - /// - /// Same mask applied to 10.10.10.1 (00001010.00001010.00001010.00000001) will match - /// odd-numbered IP addresses 10.10.10.1, 10.10.10.3, 10.10.10.5 etc. - /// - /// A network and wildcard mask combination of 1.1.1.1 0.0.0.0 would match an interface configured - /// exactly with 1.1.1.1 only, and nothing else. - /// - /// Wildcard masks are used in situations where subnet masks may not apply.For example, - /// when two affected hosts fall in different subnets, the use of a wildcard mask will - /// group them together. - /// - /// List of wildcard masks - /// Slash Netmask Wildcard mask - /// /32 255.255.255.255 0.0.0.0 - /// /31 255.255.255.254 0.0.0.1 - /// /30 255.255.255.252 0.0.0.3 - /// /29 255.255.255.248 0.0.0.7 - /// /28 255.255.255.240 0.0.0.15 - /// /27 255.255.255.224 0.0.0.31 - /// /26 255.255.255.192 0.0.0.63 - /// /25 255.255.255.128 0.0.0.127 - /// /24 255.255.255.0 0.0.0.255 - /// /23 255.255.254.0 0.0.1.255 - /// /22 255.255.252.0 0.0.3.255 - /// /21 255.255.248.0 0.0.7.255 - /// /20 255.255.240.0 0.0.15.255 - /// /19 255.255.224.0 0.0.31.255 - /// /18 255.255.192.0 0.0.63.255 - /// /17 255.255.128.0 0.0.127.255 - /// /16 255.255.0.0 0.0.255.255 - /// /15 255.254.0.0 0.1.255.255 - /// /14 255.252.0.0 0.3.255.255 - /// /13 255.248.0.0 0.7.255.255 - /// /12 255.240.0.0 0.15.255.255 - /// /11 255.224.0.0 0.31.255.255 - /// /10 255.192.0.0 0.63.255.255 - /// /9 255.128.0.0 0.127.255.255 - /// /8 255.0.0.0 0.255.255.255 - /// /7 254.0.0.0 1.255.255.255 - /// /6 252.0.0.0 3.255.255.255 - /// /5 248.0.0.0 7.255.255.255 - /// /4 240.0.0.0 15.255.255.255 - /// /3 224.0.0.0 31.255.255.255 - /// /2 192.0.0.0 63.255.255.255 - /// /1 128.0.0.0 127.255.255.255 - /// /0 0.0.0.0 255.255.255.255. - /// - /// - public IPAddress WildcardMask + #region IEquatable Members + + /// + /// Compare two ipnetworks. + /// + /// An IPNetwork to compare. + /// An other IPNetwork to compare to. + /// true if obj has the same value as this instance; otherwise, false. + public static bool Equals(IPNetwork2 left, IPNetwork2 right) + { + return Compare(left, right) == 0; + } + + /// + /// Compare two ipnetworks. + /// + /// An IPNetwork to compare to this instance. + /// true if obj has the same value as this instance; otherwise, false. + public bool Equals(IPNetwork2 other) + { + return Equals(this, other); + } + + /// + /// Compare two ipnetworks. + /// + /// An object value to compare to this instance. + /// true if obj has the same value as this instance; otherwise, false. + public override bool Equals(object obj) + { + return Equals(this, obj as IPNetwork2); + } + + #endregion + + #region Operators + + /// + /// Compares two IPNetwork. + /// + /// left instance. + /// Right instance. + /// true if left equals right; otherwise, false. + public static bool operator ==(IPNetwork2 left, IPNetwork2 right) + { + return Equals(left, right); + } + + /// + /// Compares two IPNetwork. + /// + /// left instance. + /// Right instance. + /// true if left does not equals right; otherwise, false. + public static bool operator !=(IPNetwork2 left, IPNetwork2 right) + { + return !Equals(left, right); + } + + /// + /// Compares two IPNetwork. + /// + /// left instance. + /// Right instance. + /// true if left is less than right; otherwise, false. + public static bool operator <(IPNetwork2 left, IPNetwork2 right) + { + return Compare(left, right) < 0; + } + + /// + /// Compares two IPNetwork. + /// + /// left instance. + /// Right instance. + /// true if left is greater than right; otherwise, false. + public static bool operator >(IPNetwork2 left, IPNetwork2 right) + { + return Compare(left, right) > 0; + } + + #endregion + + #region XmlSerialization + + /// + /// Initializes a new instance of the class. + /// Created for DataContractSerialization. Better use static methods IPNetwork.Parse() to create IPNetworks. + /// + public IPNetwork2() + : this(0, AddressFamily.InterNetwork, 0) + { + } + + #endregion + + #region ISerializable + internal struct IPNetworkInteral + { + public BigInteger IPAddress; + public byte Cidr; + public AddressFamily AddressFamily; + } + + private IPNetwork2(SerializationInfo info, StreamingContext context) + { + string sipnetwork = (string)info.GetValue("IPNetwork", typeof(string)); + var ipnetwork = IPNetwork2.Parse(sipnetwork); + + this._ipaddress = ipnetwork._ipaddress; + this._cidr = ipnetwork._cidr; + this._family = ipnetwork._family; + } + + void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) + { + info.AddValue("IPNetwork", this.ToString()); + } + + #endregion + + #region WildcardMask + + /// + /// Gets netmask Inverse + /// https://en.wikipedia.org/wiki/Wildcard_mask + /// + /// A wildcard mask is a mask of bits that indicates which parts of an IP address are available for examination. + /// In the Cisco IOS,[1] they are used in several places, for example: + /// To indicate the size of a network or subnet for some routing protocols, such as OSPF. + /// To indicate what IP addresses should be permitted or denied in access control lists(ACLs). + /// + /// A wildcard mask can be thought of as an inverted subnet mask.For example, + /// a subnet mask of 255.255.255.0 (binary equivalent = 11111111.11111111.11111111.00000000) + /// inverts to a wildcard mask of 0.0.0.255 (binary equivalent = 00000000.00000000.00000000.11111111). + /// + /// A wild card mask is a matching rule.[2] The rule for a wildcard mask is: + /// 0 means that the equivalent bit must match + /// 1 means that the equivalent bit does not matter + /// + /// Any wildcard bit-pattern can be masked for examination.For example, a wildcard mask of 0.0.0.254 + /// (binary equivalent = 00000000.00000000.00000000.11111110) applied to IP address 10.10.10.2 + /// (00001010.00001010.00001010.00000010) will match even-numbered IP addresses 10.10.10.0, 10.10.10.2, + /// 10.10.10.4, 10.10.10.6 etc. + /// + /// Same mask applied to 10.10.10.1 (00001010.00001010.00001010.00000001) will match + /// odd-numbered IP addresses 10.10.10.1, 10.10.10.3, 10.10.10.5 etc. + /// + /// A network and wildcard mask combination of 1.1.1.1 0.0.0.0 would match an interface configured + /// exactly with 1.1.1.1 only, and nothing else. + /// + /// Wildcard masks are used in situations where subnet masks may not apply.For example, + /// when two affected hosts fall in different subnets, the use of a wildcard mask will + /// group them together. + /// + /// List of wildcard masks + /// Slash Netmask Wildcard mask + /// /32 255.255.255.255 0.0.0.0 + /// /31 255.255.255.254 0.0.0.1 + /// /30 255.255.255.252 0.0.0.3 + /// /29 255.255.255.248 0.0.0.7 + /// /28 255.255.255.240 0.0.0.15 + /// /27 255.255.255.224 0.0.0.31 + /// /26 255.255.255.192 0.0.0.63 + /// /25 255.255.255.128 0.0.0.127 + /// /24 255.255.255.0 0.0.0.255 + /// /23 255.255.254.0 0.0.1.255 + /// /22 255.255.252.0 0.0.3.255 + /// /21 255.255.248.0 0.0.7.255 + /// /20 255.255.240.0 0.0.15.255 + /// /19 255.255.224.0 0.0.31.255 + /// /18 255.255.192.0 0.0.63.255 + /// /17 255.255.128.0 0.0.127.255 + /// /16 255.255.0.0 0.0.255.255 + /// /15 255.254.0.0 0.1.255.255 + /// /14 255.252.0.0 0.3.255.255 + /// /13 255.248.0.0 0.7.255.255 + /// /12 255.240.0.0 0.15.255.255 + /// /11 255.224.0.0 0.31.255.255 + /// /10 255.192.0.0 0.63.255.255 + /// /9 255.128.0.0 0.127.255.255 + /// /8 255.0.0.0 0.255.255.255 + /// /7 254.0.0.0 1.255.255.255 + /// /6 252.0.0.0 3.255.255.255 + /// /5 248.0.0.0 7.255.255.255 + /// /4 240.0.0.0 15.255.255.255 + /// /3 224.0.0.0 31.255.255.255 + /// /2 192.0.0.0 63.255.255.255 + /// /1 128.0.0.0 127.255.255.255 + /// /0 0.0.0.0 255.255.255.255. + /// + /// + public IPAddress WildcardMask + { + get { - get - { - byte cidr = this._family == AddressFamily.InterNetwork ? (byte)32 : (byte)128; - BigInteger netmask = IPNetwork2.ToUint(cidr, this._family); - BigInteger wildcardmask = netmask - this._netmask; + byte cidr = this._family == AddressFamily.InterNetwork ? (byte)32 : (byte)128; + BigInteger netmask = IPNetwork2.ToUint(cidr, this._family); + BigInteger wildcardmask = netmask - this._netmask; - return IPNetwork2.ToIPAddress(wildcardmask, this._family); - } + return IPNetwork2.ToIPAddress(wildcardmask, this._family); } - #endregion } -} + #endregion +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetworkCollection.cs b/src/System.Net.IPNetwork/IPNetworkCollection.cs index 579b3510..1c656511 100644 --- a/src/System.Net.IPNetwork/IPNetworkCollection.cs +++ b/src/System.Net.IPNetwork/IPNetworkCollection.cs @@ -2,56 +2,56 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net +namespace System.Net; + +using System.Collections; +using System.Collections.Generic; +using System.Numerics; + +/// +/// Represents a collection of IP networks based on a given parent IP network and subnet CIDR. +/// +public class IPNetworkCollection : IEnumerable, IEnumerator { - using System.Collections; - using System.Collections.Generic; - using System.Numerics; + private BigInteger _enumerator; + private byte _cidrSubnet; + private IPNetwork2 _ipnetwork; - /// - /// Represents a collection of IP networks based on a given parent IP network and subnet CIDR. - /// - public class IPNetworkCollection : IEnumerable, IEnumerator + private byte _cidr { - private BigInteger _enumerator; - private byte _cidrSubnet; - private IPNetwork2 _ipnetwork; - - private byte _cidr - { - get { return this._ipnetwork.Cidr; } - } + get { return this._ipnetwork.Cidr; } + } - private BigInteger _broadcast - { - get { return IPNetwork2.ToBigInteger(this._ipnetwork.Broadcast); } - } + private BigInteger _broadcast + { + get { return IPNetwork2.ToBigInteger(this._ipnetwork.Broadcast); } + } - private BigInteger _lastUsable - { - get { return IPNetwork2.ToBigInteger(this._ipnetwork.LastUsable); } - } + private BigInteger _lastUsable + { + get { return IPNetwork2.ToBigInteger(this._ipnetwork.LastUsable); } + } - private BigInteger _network - { - get { return IPNetwork2.ToBigInteger(this._ipnetwork.Network); } - } + private BigInteger _network + { + get { return IPNetwork2.ToBigInteger(this._ipnetwork.Network); } + } - /// - /// Initializes a new instance of the class. - /// Represents a collection of IP networks based on a given parent IP network and subnet CIDR. - /// - /// - /// This class is used to generate a collection of IP networks by dividing the given parent IP network into subnets based on the provided subnet CIDR (Classless Inter-Domain Routing - /// ) value. - /// + /// + /// Initializes a new instance of the class. + /// Represents a collection of IP networks based on a given parent IP network and subnet CIDR. + /// + /// + /// This class is used to generate a collection of IP networks by dividing the given parent IP network into subnets based on the provided subnet CIDR (Classless Inter-Domain Routing + /// ) value. + /// #if TRAVISCI - public + public #else internal #endif IPNetworkCollection(IPNetwork2 ipnetwork, byte cidrSubnet) - { + { int maxCidr = ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetwork ? 32 : 128; if (cidrSubnet > maxCidr) { @@ -68,32 +68,32 @@ private BigInteger _network this._enumerator = -1; } - #region Count, Array, Enumerator + #region Count, Array, Enumerator - /// - /// Gets the total number of IP addresses in the subnet. - /// - public BigInteger Count + /// + /// Gets the total number of IP addresses in the subnet. + /// + public BigInteger Count + { + get { - get - { var count = BigInteger.Pow(2, this._cidrSubnet - this._cidr); return count; } - } + } - /// - /// Retrieves an IPNetwork2 object from the collection by index. - /// - /// The index of the IPNetwork2 object to retrieve. - /// - /// The IPNetwork2 object at the specified index. - /// - /// Thrown when the specified index is greater than or equal to the Count of the collection. - public IPNetwork2 this[BigInteger i] + /// + /// Retrieves an IPNetwork2 object from the collection by index. + /// + /// The index of the IPNetwork2 object to retrieve. + /// + /// The IPNetwork2 object at the specified index. + /// + /// Thrown when the specified index is greater than or equal to the Count of the collection. + public IPNetwork2 this[BigInteger i] + { + get { - get - { if (i >= this.Count) { throw new ArgumentOutOfRangeException("i"); @@ -106,69 +106,69 @@ public IPNetwork2 this[BigInteger i] var ipn = new IPNetwork2(uintNetwork, this._ipnetwork.AddressFamily, this._cidrSubnet); return ipn; } - } + } - #endregion + #endregion - #region IEnumerable Members + #region IEnumerable Members - IEnumerator IEnumerable.GetEnumerator() - { + IEnumerator IEnumerable.GetEnumerator() + { return this; } - IEnumerator IEnumerable.GetEnumerator() - { + IEnumerator IEnumerable.GetEnumerator() + { return this; } - #region IEnumerator Members + #region IEnumerator Members - /// - public IPNetwork2 Current - { - get { return this[this._enumerator]; } - } + /// + public IPNetwork2 Current + { + get { return this[this._enumerator]; } + } - #endregion + #endregion - #region IDisposable Members + #region IDisposable Members - /// - /// Releases all resources used by the object. - /// - /// - /// This method implements the IDisposable interface and releases any resources - /// held by the object. In this particular implementation, there are no resources - /// to dispose of, so the method does nothing. - /// - public void Dispose() - { + /// + /// Releases all resources used by the object. + /// + /// + /// This method implements the IDisposable interface and releases any resources + /// held by the object. In this particular implementation, there are no resources + /// to dispose of, so the method does nothing. + /// + public void Dispose() + { // nothing to dispose return; } - #endregion + #endregion - #region IEnumerator Members + #region IEnumerator Members - /// - /// Gets the element in the collection at the current position of the enumerator. - /// - object IEnumerator.Current - { - get { return this.Current; } - } + /// + /// Gets the element in the collection at the current position of the enumerator. + /// + object IEnumerator.Current + { + get { return this.Current; } + } - /// - /// Moves the enumerator to the next element in the collection. - /// - /// - /// if the enumerator was successfully moved to the next element; - /// if the enumerator has reached the end of the collection. - /// - public bool MoveNext() - { + /// + /// Moves the enumerator to the next element in the collection. + /// + /// + /// if the enumerator was successfully moved to the next element; + /// if the enumerator has reached the end of the collection. + /// + public bool MoveNext() + { this._enumerator++; if (this._enumerator >= this.Count) { @@ -178,16 +178,15 @@ public bool MoveNext() return true; } - /// - /// Sets the enumerator to its initial position, which is before the first element in the collection. - /// - public void Reset() - { + /// + /// Sets the enumerator to its initial position, which is before the first element in the collection. + /// + public void Reset() + { this._enumerator = -1; } - #endregion + #endregion - #endregion - } -} + #endregion +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/Properties/AssemblyInfo.cs b/src/System.Net.IPNetwork/Properties/AssemblyInfo.cs index 6302ac99..61b4ee7c 100644 --- a/src/System.Net.IPNetwork/Properties/AssemblyInfo.cs +++ b/src/System.Net.IPNetwork/Properties/AssemblyInfo.cs @@ -2,6 +2,7 @@ // Copyright (c) IPNetwork. All rights reserved. // +using System; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -18,6 +19,8 @@ [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] +[assembly: CLSCompliant(true)] + // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. From ea13e5226474eba1e7987908e86172e6e1200865 Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sat, 29 Mar 2025 21:10:35 +0100 Subject: [PATCH 02/25] Feat: sign assembly Fix: documentation on public methodes --- src/System.Net.IPNetwork/IPNetwork2.cs | 165 +++-- .../IPNetworkCollection.cs | 91 +-- .../System.Net.IPNetwork.csproj | 2 +- src/TestProject/BigIntegerBitWiseUnitTest.cs | 6 + src/TestProject/BigIntegerToUnitTest.cs | 33 + src/TestProject/CidrClassFullIpv4UnitTest.cs | 21 + src/TestProject/CidrClassFullIpv6UnitTest.cs | 12 + src/TestProject/CidrClassLessUnitTest.cs | 30 + src/TestProject/ConsoleUnitTest.cs | 12 +- src/TestProject/ContainsUnitTest.cs | 42 ++ src/TestProject/EqualsUnitTest.cs | 36 ++ src/TestProject/GetHashCodeUnitTest.cs | 27 + src/TestProject/HashSetUnitTest.cs | 9 + .../HashSetUnitTestEqualsIPv6VsIPv4.cs | 6 + .../HashSetUnitTestHashCodeAdd3.cs | 6 + .../IPAddressCollectionUnitTest.cs | 99 +++ src/TestProject/IPAddressExtensionTests.cs | 3 + .../IPNetworkCollectionCtorTests.cs | 17 +- .../IPNetworkCollectionCurrentTests.cs | 6 + .../IPNetworkCollectionEnumeratorTests.cs | 6 + .../IPNetworkCollectionMoveNextTests.cs | 9 + .../IPNetworkCollectionResetTests.cs | 6 + .../IPNetworkTest/IPNetworkCompareTests.cs | 6 + .../IPNetworkTest/IPNetworkCtorTests.cs | 6 + .../IPNetworkCtorWithIpAndCidrTests.cs | 9 + .../IPNetworkTest/IPNetworkExamplesTests.cs | 3 + .../IPNetworkTest/IPNetworkIanaBlocksTests.cs | 9 + .../IPNetworkTest/IPNetworkOperatorTests.cs | 3 + .../IPNetworkTest/IPNetworkOverlapTests.cs | 9 + .../IPNetworkTest/IPNetworkParseIpIpTests.cs | 9 + .../IPNetworkParseStringStringTests.cs | 15 + .../IPNetworkTest/IPNetworkParseTests.cs | 50 +- .../IPNetworkTest/IPNetworkPrintTests.cs | 6 + .../IPNetworkTest/IPNetworkResizeTests.cs | 6 + .../IPNetworkTest/IPNetworkSortTests.cs | 3 + .../IPNetworkTest/IPNetworkSubnetTests.cs | 15 + .../IPNetworkSupernetArrayTests.cs | 22 +- .../IPNetworkTest/IPNetworkSupernetTests.cs | 35 +- .../IPNetworkToBigIntegerTests.cs | 18 + .../IPNetworkTest/IPNetworkToCidrTests.cs | 9 + .../IPNetworkToIPAddressTests.cs | 11 +- .../IPNetworkTest/IPNetworkToNetmaskTests.cs | 110 ++-- .../IPNetworkTest/IPNetworkToStringTests.cs | 3 + .../IPNetworkTryGuessCidrTests.cs | 3 + .../IPNetworkTryParseCidrTests.cs | 3 + .../IPNetworkTest/IPNetworkTryParseTests.cs | 3 + .../IPNetworkTest/IPNetworkTrySubnetTests.cs | 12 +- .../IPNetworkTrySupernetTests.cs | 6 + .../IPNetworkTryToBigIntegerTests.cs | 3 + .../IPNetworkTest/IPNetworkTryToCidrTests.cs | 3 + .../IPNetworkTryToNetmaskTests.cs | 3 + .../IPNetworkTest/IPNetworkTryToUintTests.cs | 3 + .../IPNetworkTryWideSubnetTests.cs | 3 + .../IPNetworkTest/IPNetworkUsableTests.cs | 3 + .../IPNetworkValidNetmaskTests.cs | 73 ++- src/TestProject/IPNetworkV6UnitTest.cs | 603 +++++++++++++++++- src/TestProject/SerializeDataContractTest.cs | 14 +- src/TestProject/SerializeJsonTest.cs | 21 + src/TestProject/SerializeXmlTest.cs | 21 + src/TestProject/TestProject.csproj | 2 +- src/TestProject/TryParseUnitTest.cs | 74 +++ src/TestProject/WildcardMaskIPv4UnitTest.cs | 19 + src/TestProject/WildcardMaskIPv6UnitTest.cs | 19 + 63 files changed, 1643 insertions(+), 249 deletions(-) diff --git a/src/System.Net.IPNetwork/IPNetwork2.cs b/src/System.Net.IPNetwork/IPNetwork2.cs index b5ddfec9..197d010a 100644 --- a/src/System.Net.IPNetwork/IPNetwork2.cs +++ b/src/System.Net.IPNetwork/IPNetwork2.cs @@ -56,7 +56,10 @@ public string Value #endregion #region accessors - + + /// + /// Gets the network address calculated by applying the subnet mask to the IP address. + /// internal BigInteger _network { get @@ -88,6 +91,9 @@ public AddressFamily AddressFamily } } + /// + /// Gets the netmask as a BigInteger representation based on the CIDR and address family. + /// internal BigInteger _netmask { get @@ -107,6 +113,9 @@ public IPAddress Netmask } } + /// + /// Gets the broadcast address calculated from the network address and the netmask. + /// internal BigInteger _broadcast { get @@ -224,16 +233,16 @@ public byte Cidr #region constructor + /// + /// Initializes a new instance of the class with the specified IP address, address family, and CIDR. + /// + /// The IP address of the network. + /// The address family of the network. + /// The CIDR (Classless Inter-Domain Routing) notation of the network. #if TRAVISCI - public + public #else - /// - /// Initializes a new instance of the class with the specified IP address, address family, and CIDR. - /// - /// The IP address of the network. - /// The address family of the network. - /// The CIDR (Classless Inter-Domain Routing) notation of the network. - internal + internal #endif IPNetwork2(BigInteger ipaddress, AddressFamily family, byte cidr) { @@ -870,12 +879,13 @@ public static bool TryToBigInteger(IPAddress ipaddress, out BigInteger? uintIpAd return parsed; } -#if TRAVISCI - public -#else - internal -#endif - static void InternalToBigInteger(bool tryParse, IPAddress ipaddress, out BigInteger? uintIpAddress) + /// + /// Converts an IPAddress to a nullable BigInteger representation. + /// + /// Indicates whether the method should handle errors silently (true) or throw exceptions (false). + /// The IPAddress to convert. + /// The resulting BigInteger representation of the IP address, or null if conversion fails and tryParse is true. + internal static void InternalToBigInteger(bool tryParse, IPAddress ipaddress, out BigInteger? uintIpAddress) { if (ipaddress == null) { @@ -958,12 +968,7 @@ public static bool TryToUint(byte cidr, AddressFamily family, out BigInteger? ui /// A byte representing the netmask in cidr format (/24). /// Either IPv4 or IPv6. /// A number representing the netmask. -#if TRAVISCI - public -#else - internal -#endif - static void InternalToBigInteger(bool tryParse, byte cidr, AddressFamily family, out BigInteger? uintNetmask) +internal static void InternalToBigInteger(bool tryParse, byte cidr, AddressFamily family, out BigInteger? uintNetmask) { if (family == AddressFamily.InterNetwork && cidr > 32) { @@ -1159,12 +1164,14 @@ public static bool TryToNetmask(byte cidr, AddressFamily family, out IPAddress n return parsed; } -#if TRAVISCI - public -#else - internal -#endif - static void InternalToNetmask(bool tryParse, byte cidr, AddressFamily family, out IPAddress netmask) + /// + /// Converts a CIDR value to its corresponding IPAddress netmask. + /// + /// If true, handles errors silently; otherwise, throws exceptions. + /// The CIDR value to convert. + /// The address family (IPv4 or IPv6). + /// The resulting IPAddress netmask. + internal static void InternalToNetmask(bool tryParse, byte cidr, AddressFamily family, out IPAddress netmask) { if (family != AddressFamily.InterNetwork && family != AddressFamily.InterNetworkV6) @@ -1178,16 +1185,6 @@ static void InternalToNetmask(bool tryParse, byte cidr, AddressFamily family, ou return; } - // 20180217 lduchosal - // impossible to reach code, byte cannot be negative : - // - // if (cidr < 0) { - // if (tryParse == false) { - // throw new ArgumentOutOfRangeException("cidr"); - // } - // netmask = null; - // return; - // } int maxCidr = family == Sockets.AddressFamily.InterNetwork ? 32 : 128; if (cidr > maxCidr) { @@ -1268,12 +1265,15 @@ public static bool ValidNetmask(IPAddress netmask) return valid; } -#if TRAVISCI - public -#else - internal -#endif - static bool InternalValidNetmask(BigInteger netmask, AddressFamily family) + /// + /// Determines whether a given BigInteger netmask is valid for the specified address family. + /// + /// The netmask represented as a BigInteger. + /// The address family (IPv4 or IPv6). + /// + /// true if the netmask is valid; otherwise, false. + /// + internal static bool InternalValidNetmask(BigInteger netmask, AddressFamily family) { if (family != AddressFamily.InterNetwork && family != AddressFamily.InterNetworkV6) @@ -1322,12 +1322,14 @@ public static IPAddress ToIPAddress(BigInteger ipaddress, AddressFamily family) return ip; } -#if TRAVISCI - public -#else - internal -#endif - static byte[] Resize(byte[] bytes, AddressFamily family) + /// + /// Resizes the given byte array to match the expected width for the specified address family (IPv4 or IPv6). + /// Pads with zeros if the array is shorter than required. + /// + /// The byte array to resize. + /// The address family (IPv4 or IPv6). + /// A byte array resized to the appropriate length for the address family. + internal static byte[] Resize(byte[] bytes, AddressFamily family) { if (family != AddressFamily.InterNetwork && family != AddressFamily.InterNetworkV6) @@ -1692,12 +1694,14 @@ public static bool TrySubnet(IPNetwork2 network, byte cidr, out IPNetworkCollect return network.TrySubnet(cidr, out ipnetworkCollection); } -#if TRAVISCI - public -#else - internal -#endif - static void InternalSubnet(bool trySubnet, IPNetwork2 network, byte cidr, out IPNetworkCollection ipnetworkCollection) + /// + /// Splits a given IP network into smaller subnets of the specified CIDR size. + /// + /// Indicates whether to throw exceptions or return null on failure. + /// The IP network to be subnetted. + /// The CIDR value used to define the new subnet size. + /// The resulting collection of subnets, or null if the operation fails and trySubnet is true. + internal static void InternalSubnet(bool trySubnet, IPNetwork2 network, byte cidr, out IPNetworkCollection ipnetworkCollection) { if (network == null) { @@ -1808,12 +1812,14 @@ public static bool TrySupernet(IPNetwork2 network, IPNetwork2 network2, out IPNe return network.TrySupernet(network2, out supernet); } -#if TRAVISCI - public -#else - internal -#endif - static void InternalSupernet(bool trySupernet, IPNetwork2 network1, IPNetwork2 network2, out IPNetwork2 supernet) + /// + /// Attempts to merge two adjacent IP networks with equal CIDR values into a single supernet. + /// + /// If true, suppresses exceptions on failure; otherwise, throws. + /// The first IP network. + /// The second IP network. + /// The resulting supernet if the merge is successful; otherwise, null. + internal static void InternalSupernet(bool trySupernet, IPNetwork2 network1, IPNetwork2 network2, out IPNetwork2 supernet) { if (network1 == null) { @@ -1954,12 +1960,14 @@ public static bool TrySupernet(IPNetwork2[] ipnetworks, out IPNetwork2[] superne return supernetted; } -#if TRAVISCI - public -#else - internal -#endif - static bool InternalSupernet(bool trySupernet, IPNetwork2[] ipnetworks, out IPNetwork2[] supernet) + /// + /// Attempts to merge an array of adjacent IP networks with equal CIDR values into the smallest possible set of supernets. + /// + /// If true, suppresses exceptions on failure; otherwise, throws. + /// The array of IP networks to attempt to merge. + /// The resulting array of merged supernets if successful; otherwise, the original input. + /// true if supernetting was successful; otherwise, false. + internal static bool InternalSupernet(bool trySupernet, IPNetwork2[] ipnetworks, out IPNetwork2[] supernet) { if (ipnetworks == null) { @@ -2148,6 +2156,12 @@ public static IPNetwork2 WideSubnet(IPNetwork2[] ipnetworks) return ipn; } + /// + /// Attempts to find the widest subnet that includes all given IPNetwork2 instances. + /// + /// If true, suppresses exceptions on invalid input; otherwise, throws. + /// The array of IPNetwork2 instances to encompass within the widest subnet. + /// The resulting widest IPNetwork2 subnet, or null if unsuccessful and tryWide is true. internal static void InternalWideSubnet(bool tryWide, IPNetwork2[] ipnetworks, out IPNetwork2 ipnetwork) { if (ipnetworks == null) @@ -2518,10 +2532,26 @@ public IPNetwork2() #endregion #region ISerializable + + /// + /// Represents an internal structure to hold an IP address, its CIDR value, and address family. + /// Used for internal operations within the IPNetwork2 class. + /// internal struct IPNetworkInteral { + /// + /// Represents the IP address value. + /// public BigInteger IPAddress; + + /// + /// Represents the CIDR (Classless Inter-Domain Routing) value. + /// public byte Cidr; + + /// + /// Represents the address family (IPv4 or IPv6). + /// public AddressFamily AddressFamily; } @@ -2535,6 +2565,7 @@ private IPNetwork2(SerializationInfo info, StreamingContext context) this._family = ipnetwork._family; } + /// void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue("IPNetwork", this.ToString()); diff --git a/src/System.Net.IPNetwork/IPNetworkCollection.cs b/src/System.Net.IPNetwork/IPNetworkCollection.cs index 1c656511..1985a0a7 100644 --- a/src/System.Net.IPNetwork/IPNetworkCollection.cs +++ b/src/System.Net.IPNetwork/IPNetworkCollection.cs @@ -48,26 +48,26 @@ private BigInteger _network #if TRAVISCI public #else - internal + internal #endif IPNetworkCollection(IPNetwork2 ipnetwork, byte cidrSubnet) { - int maxCidr = ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetwork ? 32 : 128; - if (cidrSubnet > maxCidr) - { - throw new ArgumentOutOfRangeException("cidrSubnet"); - } - - if (cidrSubnet < ipnetwork.Cidr) - { - throw new ArgumentException("cidrSubnet"); - } + int maxCidr = ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetwork ? 32 : 128; + if (cidrSubnet > maxCidr) + { + throw new ArgumentOutOfRangeException("cidrSubnet"); + } - this._cidrSubnet = cidrSubnet; - this._ipnetwork = ipnetwork; - this._enumerator = -1; + if (cidrSubnet < ipnetwork.Cidr) + { + throw new ArgumentException("cidrSubnet"); } + this._cidrSubnet = cidrSubnet; + this._ipnetwork = ipnetwork; + this._enumerator = -1; + } + #region Count, Array, Enumerator /// @@ -77,9 +77,9 @@ public BigInteger Count { get { - var count = BigInteger.Pow(2, this._cidrSubnet - this._cidr); - return count; - } + var count = BigInteger.Pow(2, this._cidrSubnet - this._cidr); + return count; + } } /// @@ -94,33 +94,36 @@ public IPNetwork2 this[BigInteger i] { get { - if (i >= this.Count) - { - throw new ArgumentOutOfRangeException("i"); - } - - BigInteger last = this._ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetworkV6 - ? this._lastUsable : this._broadcast; - BigInteger increment = (last - this._network) / this.Count; - BigInteger uintNetwork = this._network + ((increment + 1) * i); - var ipn = new IPNetwork2(uintNetwork, this._ipnetwork.AddressFamily, this._cidrSubnet); - return ipn; + if (i >= this.Count) + { + throw new ArgumentOutOfRangeException("i"); } + + BigInteger last = this._ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetworkV6 + ? this._lastUsable + : this._broadcast; + BigInteger increment = (last - this._network) / this.Count; + BigInteger uintNetwork = this._network + ((increment + 1) * i); + var ipn = new IPNetwork2(uintNetwork, this._ipnetwork.AddressFamily, this._cidrSubnet); + return ipn; + } } #endregion #region IEnumerable Members + /// IEnumerator IEnumerable.GetEnumerator() { - return this; - } + return this; + } + /// IEnumerator IEnumerable.GetEnumerator() { - return this; - } + return this; + } #region IEnumerator Members @@ -144,9 +147,9 @@ public IPNetwork2 Current /// public void Dispose() { - // nothing to dispose - return; - } + // nothing to dispose + return; + } #endregion @@ -169,22 +172,22 @@ object IEnumerator.Current /// public bool MoveNext() { - this._enumerator++; - if (this._enumerator >= this.Count) - { - return false; - } - - return true; + this._enumerator++; + if (this._enumerator >= this.Count) + { + return false; } + return true; + } + /// /// Sets the enumerator to its initial position, which is before the first element in the collection. /// public void Reset() { - this._enumerator = -1; - } + this._enumerator = -1; + } #endregion diff --git a/src/System.Net.IPNetwork/System.Net.IPNetwork.csproj b/src/System.Net.IPNetwork/System.Net.IPNetwork.csproj index 260d2611..64d27732 100644 --- a/src/System.Net.IPNetwork/System.Net.IPNetwork.csproj +++ b/src/System.Net.IPNetwork/System.Net.IPNetwork.csproj @@ -19,7 +19,7 @@ Luc Dvchosal Copyright 2025 True - false + true System.Net.IPNetwork.snk https://github.com/lduchosal/ipnetwork.git git diff --git a/src/TestProject/BigIntegerBitWiseUnitTest.cs b/src/TestProject/BigIntegerBitWiseUnitTest.cs index 9d0efa90..5fbd8d91 100644 --- a/src/TestProject/BigIntegerBitWiseUnitTest.cs +++ b/src/TestProject/BigIntegerBitWiseUnitTest.cs @@ -4,9 +4,15 @@ namespace TestProject; +/// +/// Test. +/// [TestClass] public class BigIntegerBitWiseUnitTest { + /// + /// Test. + /// [TestMethod] [DataRow(new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0x00 }, 4, new byte[] { 0x0 })] [DataRow(new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0x00 }, 8, diff --git a/src/TestProject/BigIntegerToUnitTest.cs b/src/TestProject/BigIntegerToUnitTest.cs index 43029c26..d38d8e74 100644 --- a/src/TestProject/BigIntegerToUnitTest.cs +++ b/src/TestProject/BigIntegerToUnitTest.cs @@ -4,9 +4,15 @@ namespace TestProject; +/// +/// Test. +/// [TestClass] public class BigIntegerToUnitTest { + /// + /// Test. + /// [TestMethod] public void TestToOctalString1() { @@ -17,6 +23,9 @@ public void TestToOctalString1() Assert.AreEqual("037777777777", result); } + /// + /// Test. + /// [TestMethod] public void TestToOctalString3() { @@ -27,6 +36,9 @@ public void TestToOctalString3() Assert.AreEqual("04000001", result); } + /// + /// Test. + /// [TestMethod] public void TestToOctalString01() { @@ -37,6 +49,9 @@ public void TestToOctalString01() Assert.AreEqual("01", result); } + /// + /// Test. + /// [TestMethod] public void TestToOctalString02() { @@ -47,6 +62,9 @@ public void TestToOctalString02() Assert.AreEqual("377", result); } + /// + /// Test. + /// [TestMethod] public void TestToOctalString03() { @@ -63,6 +81,9 @@ public void TestToOctalString03() Assert.AreEqual("371", result); } + /// + /// Test. + /// [TestMethod] public void TestToHexadecimalString1() { @@ -73,6 +94,9 @@ public void TestToHexadecimalString1() Assert.AreEqual("0FFFFFFFF", result); } + /// + /// Test. + /// [TestMethod] public void TestToBinaryString1() { @@ -83,6 +107,9 @@ public void TestToBinaryString1() Assert.AreEqual("011111111111111111111111111111111", result); } + /// + /// Test. + /// [TestMethod] public void TestToBinaryString01() { @@ -93,6 +120,9 @@ public void TestToBinaryString01() Assert.AreEqual("01", result); } + /// + /// Test. + /// [TestMethod] public void TestToBinaryString2() { @@ -102,6 +132,9 @@ public void TestToBinaryString2() Assert.AreEqual("11111111", result); } + /// + /// Test. + /// [TestMethod] public void TestToBinaryString3() { diff --git a/src/TestProject/CidrClassFullIpv4UnitTest.cs b/src/TestProject/CidrClassFullIpv4UnitTest.cs index 2ab99e2f..e5e3cac5 100644 --- a/src/TestProject/CidrClassFullIpv4UnitTest.cs +++ b/src/TestProject/CidrClassFullIpv4UnitTest.cs @@ -4,9 +4,15 @@ namespace TestProject; +/// +/// Test. +/// [TestClass] public class CidrClassFullIpv4UnitTest { + /// + /// Test. + /// [TestMethod] public void TestTryGuessCidrNull() { @@ -19,6 +25,9 @@ public void TestTryGuessCidrNull() Assert.AreEqual(0, cidr, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryGuessCidrA() { @@ -31,6 +40,9 @@ public void TestTryGuessCidrA() Assert.AreEqual(8, cidr, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryGuessCidrB() { @@ -43,6 +55,9 @@ public void TestTryGuessCidrB() Assert.AreEqual(16, cidr, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryGuessCidrC() { @@ -55,6 +70,9 @@ public void TestTryGuessCidrC() Assert.AreEqual(24, cidr, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryGuessCidrD() { @@ -67,6 +85,9 @@ public void TestTryGuessCidrD() Assert.AreEqual(24, cidr, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryGuessCidrE() { diff --git a/src/TestProject/CidrClassFullIpv6UnitTest.cs b/src/TestProject/CidrClassFullIpv6UnitTest.cs index 2ed51dd3..9b1b726f 100644 --- a/src/TestProject/CidrClassFullIpv6UnitTest.cs +++ b/src/TestProject/CidrClassFullIpv6UnitTest.cs @@ -4,9 +4,15 @@ namespace TestProject; +/// +/// Test. +/// [TestClass] public class CidrClassFullIpv6UnitTest { + /// + /// Test. + /// [TestMethod] public void TestIpV6TryGuessCidrNull() { @@ -19,6 +25,9 @@ public void TestIpV6TryGuessCidrNull() Assert.AreEqual(0, cidr, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestIpV6TryGuessCidr1() { @@ -31,6 +40,9 @@ public void TestIpV6TryGuessCidr1() Assert.AreEqual(64, cidr, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestIpV6TryGuessCidr2() { diff --git a/src/TestProject/CidrClassLessUnitTest.cs b/src/TestProject/CidrClassLessUnitTest.cs index 14d01add..4e0e8ae9 100644 --- a/src/TestProject/CidrClassLessUnitTest.cs +++ b/src/TestProject/CidrClassLessUnitTest.cs @@ -4,11 +4,17 @@ namespace TestProject; +/// +/// Test. +/// [TestClass] public class CidrClassLessUnitTest { #region IPV4 + /// + /// Test. + /// [TestMethod] public void TestTryGuessCidrNull() { @@ -21,6 +27,9 @@ public void TestTryGuessCidrNull() Assert.AreEqual(0, cidr, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryGuessCidrA() { @@ -33,6 +42,9 @@ public void TestTryGuessCidrA() Assert.AreEqual(32, cidr, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryGuessCidrB() { @@ -45,6 +57,9 @@ public void TestTryGuessCidrB() Assert.AreEqual(32, cidr, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryGuessCidrC() { @@ -57,6 +72,9 @@ public void TestTryGuessCidrC() Assert.AreEqual(32, cidr, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryGuessCidrD() { @@ -69,6 +87,9 @@ public void TestTryGuessCidrD() Assert.AreEqual(32, cidr, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryGuessCidrE() { @@ -85,6 +106,9 @@ public void TestTryGuessCidrE() #region IPV6 + /// + /// Test. + /// [TestMethod] public void TestIpV6TryGuessCidrNull() { @@ -97,6 +121,9 @@ public void TestIpV6TryGuessCidrNull() Assert.AreEqual(0, cidr, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestIpV6TryGuessCidr1() { @@ -109,6 +136,9 @@ public void TestIpV6TryGuessCidr1() Assert.AreEqual(128, cidr, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestIpV6TryGuessCidr2() { diff --git a/src/TestProject/ConsoleUnitTest.cs b/src/TestProject/ConsoleUnitTest.cs index 44a335a6..0588facf 100644 --- a/src/TestProject/ConsoleUnitTest.cs +++ b/src/TestProject/ConsoleUnitTest.cs @@ -5,9 +5,15 @@ namespace TestProject; +/// +/// Test. +/// [TestClass] public class ConsoleUnitTest { + /// + /// Test. + /// [DataTestMethod] [DataRow(new[] { "10.0.0.0/8" })] [DataRow(new[] { "-Nnmcbflu", "10.0.0.0/8" })] @@ -17,17 +23,17 @@ public class ConsoleUnitTest [DataRow(new[] { "-d", "24", "-x", "-S", "192.168.168.0/24", "192.168.169.1/24", "192.168.170.2/24", "192.168.171.3/24", - "192.168.172.3/24", "1.1.1.1" + "192.168.172.3/24", "1.1.1.1", })] [DataRow(new[] { "-i", "192.168.168.0/24", "192.168.169.1/24", "192.168.170.2/24", "192.168.171.3/24", "192.168.172.3/24", - "1.1.1.1" + "1.1.1.1", })] [DataRow(new[] { "-d", "24", "-w", "192.168.168.0/24", "192.168.169.1/24", "192.168.170.2/24", "192.168.171.3/24", - "192.168.172.3/24", "1.1.1.1" + "192.168.172.3/24", "1.1.1.1", })] [DataRow(new[] { ":" })] [DataRow(new[] { "-C", "10.0.0.0/8", "1.1.1.1" })] diff --git a/src/TestProject/ContainsUnitTest.cs b/src/TestProject/ContainsUnitTest.cs index 6d87376d..b66762f7 100644 --- a/src/TestProject/ContainsUnitTest.cs +++ b/src/TestProject/ContainsUnitTest.cs @@ -10,6 +10,12 @@ namespace TestProject; [TestClass] public class ContainsUnitTest { + /// + /// Test. + /// + /// The network. + /// The netmask. + /// The result. [DataTestMethod] [DataRow("192.168.0.1/24", "192.168.0.1/24", true)] [DataRow("192.168.0.1/16", "192.168.1.1/24", true)] @@ -25,6 +31,12 @@ public void TestContainsNetwork(string network1, string networkOrAddress, bool e Assert.AreEqual(expected, result, "contains"); } + /// + /// Test. + /// + /// The network. + /// An address in the netmask. + /// Contained. [DataTestMethod] [DataRow("192.168.0.1/24", "192.168.0.100", true)] [DataRow("192.168.0.1/24", "10.10.10.10", false)] @@ -38,6 +50,9 @@ public void TestContainsAdrress(string network1, string networkOrAddress, bool e Assert.AreEqual(expected, result, "contains"); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestContainsStatic3() @@ -50,6 +65,9 @@ public void TestContainsStatic3() #pragma warning restore 0618 } + /// + /// Test. + /// [TestMethod] public void TestContainsStatic4() { @@ -63,6 +81,9 @@ public void TestContainsStatic4() Assert.IsTrue(result, "result"); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestContains8() @@ -73,6 +94,9 @@ public void TestContains8() bool result = ipnetwork.Contains(ipnetwork2); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestContainsStatic1() @@ -85,6 +109,9 @@ public void TestContainsStatic1() #pragma warning restore 0618 } + /// + /// Test. + /// [TestMethod] public void TestContainsStatic2() { @@ -97,6 +124,9 @@ public void TestContainsStatic2() Assert.IsTrue(result, "result"); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestContains10() @@ -107,6 +137,12 @@ public void TestContains10() bool result = ipnetwork.Contains(ipaddress); } + /// + /// Test. + /// + /// The network. + /// Contains the IPAddress. + /// Result, true if contains. [DataTestMethod] [DataRow("1.1.1.0/8", "1.1.1.1", true)] [DataRow("1.1.1.0/8", "2.1.1.1", false)] @@ -126,6 +162,12 @@ public void Test_Contains2_IPAddress_Should_Match_Contains(string contains1, str Assert.AreEqual(expected, result1, "contains1"); } + /// + /// Test. + /// + /// The network. + /// Contains the IPAddress. + /// Result, true if contains. [DataTestMethod] [DataRow("0.0.0.0/0", "255.255.255.255", true)] [DataRow("1.1.1.0/8", "1.1.1.1", true)] diff --git a/src/TestProject/EqualsUnitTest.cs b/src/TestProject/EqualsUnitTest.cs index 24d740a7..602c80ab 100644 --- a/src/TestProject/EqualsUnitTest.cs +++ b/src/TestProject/EqualsUnitTest.cs @@ -4,11 +4,17 @@ namespace TestProject; +/// +/// Test. +/// [TestClass] public class EqualsUnitTest { #region Equals IPv6 vs IPv4 + /// + /// Test. + /// [TestMethod] public void TestEquals_ipv6_ipv4_0() { @@ -24,6 +30,9 @@ public void TestEquals_ipv6_ipv4_0() #region Equals IPv4 + /// + /// Test. + /// [TestMethod] public void TestEquals_ipv4_1() { @@ -35,6 +44,9 @@ public void TestEquals_ipv4_1() Assert.AreEqual(expected, result, "equals"); } + /// + /// Test. + /// [TestMethod] public void TestEquals_ipv4_2() { @@ -46,6 +58,9 @@ public void TestEquals_ipv4_2() Assert.AreEqual(expected, result, "equals"); } + /// + /// Test. + /// [TestMethod] public void TestEquals_ipv4_3() { @@ -57,6 +72,9 @@ public void TestEquals_ipv4_3() Assert.AreEqual(expected, result, "equals"); } + /// + /// Test. + /// [TestMethod] public void TestEquals_ipv4_4() { @@ -68,6 +86,9 @@ public void TestEquals_ipv4_4() Assert.AreEqual(expected, result, "equals"); } + /// + /// Test. + /// [TestMethod] public void TestEquals_ipv4_5() { @@ -83,6 +104,9 @@ public void TestEquals_ipv4_5() #region Equals IPv6 + /// + /// Test. + /// [TestMethod] public void TestEquals_ipv6_1() { @@ -94,6 +118,9 @@ public void TestEquals_ipv6_1() Assert.AreEqual(expected, result, "equals"); } + /// + /// Test. + /// [TestMethod] public void TestEquals_ipv6_2() { @@ -105,6 +132,9 @@ public void TestEquals_ipv6_2() Assert.AreEqual(expected, result, "equals"); } + /// + /// Test. + /// [TestMethod] public void TestEquals_ipv6_3() { @@ -116,6 +146,9 @@ public void TestEquals_ipv6_3() Assert.AreEqual(expected, result, "equals"); } + /// + /// Test. + /// [TestMethod] public void TestEquals_ipv6_4() { @@ -127,6 +160,9 @@ public void TestEquals_ipv6_4() Assert.AreEqual(expected, result, "equals"); } + /// + /// Test. + /// [TestMethod] public void TestEquals_ipv6_5() { diff --git a/src/TestProject/GetHashCodeUnitTest.cs b/src/TestProject/GetHashCodeUnitTest.cs index 69563ef1..aff8b4a6 100644 --- a/src/TestProject/GetHashCodeUnitTest.cs +++ b/src/TestProject/GetHashCodeUnitTest.cs @@ -5,9 +5,15 @@ namespace TestProject; +/// +/// Test. +/// [TestClass] public class GetHashCodeUnitTest { + /// + /// Test. + /// [TestMethod] public void TestGetHashCode_SameNetwork_DifferentIpAddress1() { @@ -18,6 +24,9 @@ public void TestGetHashCode_SameNetwork_DifferentIpAddress1() Assert.AreEqual(hashCode1, hashCode2, "hashcode"); } + /// + /// Test. + /// [TestMethod] public void TestGetHashCode_SameNetwork_DifferentIpAddress2() { @@ -28,6 +37,9 @@ public void TestGetHashCode_SameNetwork_DifferentIpAddress2() Assert.AreEqual(hashCode1, hashCode2, "hashcode"); } + /// + /// Test. + /// [TestMethod] public void TestGetHashCode_Refactor__to_not_reference_mutable_fields() { @@ -39,6 +51,9 @@ public void TestGetHashCode_Refactor__to_not_reference_mutable_fields() Assert.AreEqual(hashCode1, hashCode2, "hashcode"); } + /// + /// Test. + /// [TestMethod] public void TestGetHashCode_Dictionary_failed() { @@ -66,6 +81,9 @@ public void TestGetHashCode_Dictionary_failed() #region Equals IPv6 vs IPv4 + /// + /// Test. + /// [TestMethod] public void TestGetHashCode_ipv6_ipv4_0() { @@ -82,6 +100,9 @@ public void TestGetHashCode_ipv6_ipv4_0() #region GetHashCode + /// + /// Test. + /// [TestMethod] public void TestGetHashCode1() { @@ -92,6 +113,9 @@ public void TestGetHashCode1() Assert.AreEqual(hashCode1, hashCode2, "hashcode"); } + /// + /// Test. + /// [TestMethod] public void TestGetHashCode2() { @@ -102,6 +126,9 @@ public void TestGetHashCode2() Assert.AreEqual(hashCode1, hashCode2, "hashcode"); } + /// + /// Test. + /// [TestMethod] public void TestGetHashCode3() { diff --git a/src/TestProject/HashSetUnitTest.cs b/src/TestProject/HashSetUnitTest.cs index 0b2f8652..eb4338d3 100644 --- a/src/TestProject/HashSetUnitTest.cs +++ b/src/TestProject/HashSetUnitTest.cs @@ -4,9 +4,15 @@ namespace TestProject; +/// +/// Test. +/// [TestClass] public class HashSetUnitTest { + /// + /// Test. + /// [TestMethod] public void TestGetHashCode_HashSet_Add1() { @@ -21,6 +27,9 @@ public void TestGetHashCode_HashSet_Add1() Assert.IsFalse(add2, "add2"); } + /// + /// Test. + /// [TestMethod] public void TestGetHashCode_HashSet_Add2() { diff --git a/src/TestProject/HashSetUnitTestEqualsIPv6VsIPv4.cs b/src/TestProject/HashSetUnitTestEqualsIPv6VsIPv4.cs index 0ac5bbe3..940b1df9 100644 --- a/src/TestProject/HashSetUnitTestEqualsIPv6VsIPv4.cs +++ b/src/TestProject/HashSetUnitTestEqualsIPv6VsIPv4.cs @@ -4,9 +4,15 @@ namespace TestProject; +/// +/// Test. +/// [TestClass] public class HashSetUnitTestEqualsIPv6VsIPv4 { + /// + /// Test. + /// [TestMethod] public void TestHashSet_Add_ipv6_ipv4_0() { diff --git a/src/TestProject/HashSetUnitTestHashCodeAdd3.cs b/src/TestProject/HashSetUnitTestHashCodeAdd3.cs index 82743db0..3c44a311 100644 --- a/src/TestProject/HashSetUnitTestHashCodeAdd3.cs +++ b/src/TestProject/HashSetUnitTestHashCodeAdd3.cs @@ -4,9 +4,15 @@ namespace TestProject; +/// +/// Test. +/// [TestClass] public class HashSetUnitTestHashCodeAdd3 { + /// + /// Test. + /// [TestMethod] public void TestGetHashCode_HashSet_Add3() { diff --git a/src/TestProject/IPAddressCollectionUnitTest.cs b/src/TestProject/IPAddressCollectionUnitTest.cs index a8a788e8..98b02ee3 100644 --- a/src/TestProject/IPAddressCollectionUnitTest.cs +++ b/src/TestProject/IPAddressCollectionUnitTest.cs @@ -11,6 +11,9 @@ namespace TestProject; [TestClass] public class IPAddressCollectionUnitTest { + /// + /// Test. + /// [TestMethod] public void Test_Usable_AtIndexIPAddress() { @@ -26,6 +29,9 @@ public void Test_Usable_AtIndexIPAddress() } } + /// + /// Test. + /// [TestMethod] public void Test_Usable_IteratorIPAddress() { @@ -41,6 +47,9 @@ public void Test_Usable_IteratorIPAddress() } } + /// + /// Test. + /// [TestMethod] public void Test_Usable_AtIndexIPAddress_31() { @@ -51,6 +60,9 @@ public void Test_Usable_AtIndexIPAddress_31() } } + /// + /// Test. + /// [TestMethod] public void Test_Usable_AtIndexIPAddress_32() { @@ -61,6 +73,9 @@ public void Test_Usable_AtIndexIPAddress_32() } } + /// + /// Test. + /// [TestMethod] public void Test_All_AtIndexIPAddress() { @@ -80,6 +95,9 @@ public void Test_All_AtIndexIPAddress() #region ListIPAddress + /// + /// Test. + /// [TestMethod] public void TestAtIndexIPAddress() { @@ -97,6 +115,9 @@ public void TestAtIndexIPAddress() } } + /// + /// Test. + /// [TestMethod] public void TestAtIndexIPAddress2() { @@ -116,6 +137,9 @@ public void TestAtIndexIPAddress2() } } + /// + /// Test. + /// [TestMethod] public void TestIterateIPAddress() { @@ -144,6 +168,9 @@ public void TestIterateIPAddress() } } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestOutOfRangeIPAddress() @@ -155,6 +182,9 @@ public void TestOutOfRangeIPAddress() } } + /// + /// Test. + /// [TestMethod] public void TestCountIPAddress() { @@ -165,6 +195,9 @@ public void TestCountIPAddress() } } + /// + /// Test. + /// [TestMethod] public void TestReset() { @@ -175,6 +208,9 @@ public void TestReset() } } + /// + /// Test. + /// [TestMethod] public void TestResetEnumerator() { @@ -195,6 +231,9 @@ public void TestResetEnumerator() } } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestEnumeratorFailed() @@ -212,6 +251,9 @@ public void TestEnumeratorFailed() } } + /// + /// Test. + /// [TestMethod] public void TestEnumeratorMoveNext() { @@ -231,6 +273,9 @@ public void TestEnumeratorMoveNext() } } + /// + /// Test. + /// [TestMethod] public void TestEnumeratorMoveNext2() { @@ -247,6 +292,9 @@ public void TestEnumeratorMoveNext2() } } + /// + /// Test. + /// [TestMethod] public void TestEnumerableCurrent() { @@ -255,6 +303,9 @@ public void TestEnumerableCurrent() Assert.IsNotNull(ips.GetEnumerator()); } + /// + /// Test. + /// [TestMethod] public void TestEnumeratorCurrent() { @@ -267,6 +318,9 @@ public void TestEnumeratorCurrent() Assert.IsFalse(ips.MoveNext()); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestEnumeratorCurrentOor() @@ -281,6 +335,9 @@ public void TestEnumeratorCurrentOor() Console.WriteLine("This is out of range : {0} ", ips.Current); } + /// + /// Test. + /// [TestMethod] public void TestEnumeratorIterate() { @@ -296,6 +353,9 @@ public void TestEnumeratorIterate() #region IPv6 + /// + /// Test. + /// [TestMethod] public void Test_ipv6_AtIndexIPAddress() { @@ -313,6 +373,9 @@ public void Test_ipv6_AtIndexIPAddress() } } + /// + /// Test. + /// [TestMethod] public void Test_ipv6_IterateIPAddress() { @@ -341,6 +404,9 @@ public void Test_ipv6_IterateIPAddress() } } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void Test_ipv6_OutOfRangeIPAddress() @@ -352,6 +418,9 @@ public void Test_ipv6_OutOfRangeIPAddress() } } + /// + /// Test. + /// [TestMethod] public void Test_ipv6_CountIPAddress() { @@ -362,6 +431,9 @@ public void Test_ipv6_CountIPAddress() } } + /// + /// Test. + /// [TestMethod] public void Test_ipv6_CountIPAddress2() { @@ -373,6 +445,9 @@ public void Test_ipv6_CountIPAddress2() } } + /// + /// Test. + /// [TestMethod] public void Test_ipv6_Reset() { @@ -383,6 +458,9 @@ public void Test_ipv6_Reset() } } + /// + /// Test. + /// [TestMethod] public void Tes_ipv6_tResetEnumerator() { @@ -403,6 +481,9 @@ public void Tes_ipv6_tResetEnumerator() } } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void Test_ipv6_EnumeratorFailed() @@ -420,6 +501,9 @@ public void Test_ipv6_EnumeratorFailed() } } + /// + /// Test. + /// [TestMethod] public void Test_ipv6_EnumeratorMoveNext() { @@ -439,6 +523,9 @@ public void Test_ipv6_EnumeratorMoveNext() } } + /// + /// Test. + /// [TestMethod] public void Test_ipv6_EnumeratorMoveNext2() { @@ -455,6 +542,9 @@ public void Test_ipv6_EnumeratorMoveNext2() } } + /// + /// Test. + /// [TestMethod] public void Test_ipv6_EnumeratorCurrent() { @@ -467,6 +557,9 @@ public void Test_ipv6_EnumeratorCurrent() Assert.IsFalse(ips.MoveNext()); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void Test_ipv6_EnumeratorCurrentOor() @@ -481,6 +574,9 @@ public void Test_ipv6_EnumeratorCurrentOor() Console.WriteLine("This is out of range : {0} ", ips.Current); } + /// + /// Test. + /// [TestMethod] public void Test_ipv6_EnumeratorIterate() { @@ -492,6 +588,9 @@ public void Test_ipv6_EnumeratorIterate() } } + /// + /// Test. + /// [TestMethod] public void Test_ipv6_DefaultNetmask() { diff --git a/src/TestProject/IPAddressExtensionTests.cs b/src/TestProject/IPAddressExtensionTests.cs index 671e1ad2..d621963c 100644 --- a/src/TestProject/IPAddressExtensionTests.cs +++ b/src/TestProject/IPAddressExtensionTests.cs @@ -13,6 +13,9 @@ public class IPAddressExtensionTests /// /// Test converting a variety of IPv4 addreses into single-address networks. /// + /// + /// Test. + /// [TestMethod] public void IPAddressToIPNetwork_SingleAddress_IPv4() { diff --git a/src/TestProject/IPNetworkCollectionCtorTests.cs b/src/TestProject/IPNetworkCollectionCtorTests.cs index 379c64ed..58fdbea6 100644 --- a/src/TestProject/IPNetworkCollectionCtorTests.cs +++ b/src/TestProject/IPNetworkCollectionCtorTests.cs @@ -4,20 +4,29 @@ namespace TestProject; +/// +/// Test constructor af IPNetworkCollection +/// [TestClass] public class IPNetworkCollectionCtorTests { + /// + /// Test ctor with too big cidr. + /// [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestCtor1() { - var ipn = new IPNetworkCollection(IPNetwork2.IANA_ABLK_RESERVED1, 33); - } + var ipn = new IPNetworkCollection(IPNetwork2.IANA_ABLK_RESERVED1, 33); + } + /// + /// Test with invalid params. + /// [TestMethod] [ExpectedException(typeof(ArgumentException))] public void TestCtor2() { - var ipn = new IPNetworkCollection(IPNetwork2.IANA_ABLK_RESERVED1, 2); - } + var ipn = new IPNetworkCollection(IPNetwork2.IANA_ABLK_RESERVED1, 2); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkCollectionCurrentTests.cs b/src/TestProject/IPNetworkCollectionCurrentTests.cs index bef039bd..79ce1022 100644 --- a/src/TestProject/IPNetworkCollectionCurrentTests.cs +++ b/src/TestProject/IPNetworkCollectionCurrentTests.cs @@ -4,9 +4,15 @@ namespace TestProject; +/// +/// Test IPNetworkCollection Current +/// [TestClass] public class IPNetworkCollectionCurrentTests { + /// + /// Test. + /// [TestMethod] public void TestCurrent() { diff --git a/src/TestProject/IPNetworkCollectionEnumeratorTests.cs b/src/TestProject/IPNetworkCollectionEnumeratorTests.cs index 26956b60..c72d7a40 100644 --- a/src/TestProject/IPNetworkCollectionEnumeratorTests.cs +++ b/src/TestProject/IPNetworkCollectionEnumeratorTests.cs @@ -4,9 +4,15 @@ namespace TestProject; +/// +/// Test. +/// [TestClass] public class IPNetworkCollectionEnumeratorTests { + /// + /// Test. + /// [TestMethod] public void TestEnumerator() { diff --git a/src/TestProject/IPNetworkCollectionMoveNextTests.cs b/src/TestProject/IPNetworkCollectionMoveNextTests.cs index 0ed960bf..8dd076fd 100644 --- a/src/TestProject/IPNetworkCollectionMoveNextTests.cs +++ b/src/TestProject/IPNetworkCollectionMoveNextTests.cs @@ -4,9 +4,15 @@ namespace TestProject; +/// +/// Test. +/// [TestClass] public class IPNetworkCollectionMoveNextTests { + /// + /// Test. + /// [TestMethod] public void MoveNext1() { @@ -18,6 +24,9 @@ public void MoveNext1() } } + /// + /// Test. + /// [TestMethod] public void MoveNext2() { diff --git a/src/TestProject/IPNetworkCollectionResetTests.cs b/src/TestProject/IPNetworkCollectionResetTests.cs index e9f0694f..d28a991d 100644 --- a/src/TestProject/IPNetworkCollectionResetTests.cs +++ b/src/TestProject/IPNetworkCollectionResetTests.cs @@ -4,9 +4,15 @@ namespace TestProject; +/// +/// Test. +/// [TestClass] public class IPNetworkCollectionResetTests { + /// + /// Test. + /// [TestMethod] public void TestReset1() { diff --git a/src/TestProject/IPNetworkTest/IPNetworkCompareTests.cs b/src/TestProject/IPNetworkTest/IPNetworkCompareTests.cs index 19e3abf6..23761d6c 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkCompareTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkCompareTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Test compare methods. +/// [TestClass] public class IPNetworkCompareTests { @@ -63,6 +66,9 @@ public void TestCompareTo4() Assert.AreEqual(1, comparison, "compare"); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentException))] public void TestCompareTo5() diff --git a/src/TestProject/IPNetworkTest/IPNetworkCtorTests.cs b/src/TestProject/IPNetworkTest/IPNetworkCtorTests.cs index 1a576c83..37abcd3b 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkCtorTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkCtorTests.cs @@ -4,9 +4,15 @@ namespace TestProject.IPNetworkTest; +/// +/// Test Ctor. +/// [TestClass] public class IPNetworkCtorTests { + /// + /// Test Ctor with too big of a CIDR. + /// [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestCtor1() diff --git a/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs index 6c2284cb..402b1c1b 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Test Ctor. +/// [TestClass] public class IPNetworkCtorWithIpAndCidrTests { @@ -19,6 +22,9 @@ public void CtorWithIpAndCidr1() Assert.AreEqual("192.168.168.0/24", ipnetwork.ToString(), "network"); } + /// + /// Tests Ctor With null ip. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void CtorWithIpAndCidr2() @@ -27,6 +33,9 @@ public void CtorWithIpAndCidr2() var ipnetwork = new IPNetwork2(ip, 24); } + /// + /// Tests Ctor With too big cidr. + /// [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void CtorWithIpAndCidr3() diff --git a/src/TestProject/IPNetworkTest/IPNetworkExamplesTests.cs b/src/TestProject/IPNetworkTest/IPNetworkExamplesTests.cs index 21cc6870..f9d80401 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkExamplesTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkExamplesTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Tests that show how to use the lib. +/// [TestClass] public class IPNetworkExamplesTests { diff --git a/src/TestProject/IPNetworkTest/IPNetworkIanaBlocksTests.cs b/src/TestProject/IPNetworkTest/IPNetworkIanaBlocksTests.cs index 93397e1f..748010c7 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkIanaBlocksTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkIanaBlocksTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Tests with the IANA blocks. +/// [TestClass] public class IPNetworkIanaBlocksTests { @@ -85,6 +88,9 @@ public void TestIana6() Assert.AreEqual(expected, result, "IANA"); } + /// + /// Test is a null ipaddress is in IANA block. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestIana7() @@ -93,6 +99,9 @@ public void TestIana7() IPNetwork2.IsIANAReserved(ipaddress); } + /// + /// Test is a null ipnetwork is in IANA block. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestIana8() diff --git a/src/TestProject/IPNetworkTest/IPNetworkOperatorTests.cs b/src/TestProject/IPNetworkTest/IPNetworkOperatorTests.cs index 3e4de18f..8aea3564 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkOperatorTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkOperatorTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Tests with operators. +/// [TestClass] public class IPNetworkOperatorTests { diff --git a/src/TestProject/IPNetworkTest/IPNetworkOverlapTests.cs b/src/TestProject/IPNetworkTest/IPNetworkOverlapTests.cs index f3f082be..d5318f25 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkOverlapTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkOverlapTests.cs @@ -4,9 +4,15 @@ namespace TestProject.IPNetworkTest; +/// +/// Test overlap. +/// [TestClass] public class IPNetworkOverlapTests { + /// + /// Test overlap. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestOverlap1() @@ -35,6 +41,9 @@ public void TestOverlapStatic2() Assert.IsTrue(result, "result"); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestOverlap2() diff --git a/src/TestProject/IPNetworkTest/IPNetworkParseIpIpTests.cs b/src/TestProject/IPNetworkTest/IPNetworkParseIpIpTests.cs index 6b8940a4..494bd0a5 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkParseIpIpTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkParseIpIpTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Test parse ip +/// [TestClass] public class IPNetworkParseIpIpTests { @@ -21,6 +24,9 @@ public void ParseIpIp1() Assert.AreEqual("192.168.168.0/24", ipnetwork.ToString(), "network"); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void ParseIpIp2() @@ -30,6 +36,9 @@ public void ParseIpIp2() var ipnetwork = IPNetwork2.Parse(ip, netm); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void ParseIpIp3() diff --git a/src/TestProject/IPNetworkTest/IPNetworkParseStringStringTests.cs b/src/TestProject/IPNetworkTest/IPNetworkParseStringStringTests.cs index 45c45b9c..2d8e3ee0 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkParseStringStringTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkParseStringStringTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Test parse string. +/// [TestClass] public class IPNetworkParseStringStringTests { @@ -20,6 +23,9 @@ public void TestParseStringString1() Assert.AreEqual("192.168.168.0/24", ipnetwork.ToString(), "network"); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestParseStringString2() @@ -30,6 +36,9 @@ public void TestParseStringString2() var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestParseStringString3() @@ -40,6 +49,9 @@ public void TestParseStringString3() var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestParseStringString4() @@ -50,6 +62,9 @@ public void TestParseStringString4() var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestParseStringString5() diff --git a/src/TestProject/IPNetworkTest/IPNetworkParseTests.cs b/src/TestProject/IPNetworkTest/IPNetworkParseTests.cs index 9fdb09b4..a5b65cd3 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkParseTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkParseTests.cs @@ -4,9 +4,15 @@ namespace TestProject.IPNetworkTest; +/// +/// Test. +/// [TestClass] public class IPNetworkParseTests { + /// + /// Test parse ip and netmask and network. + /// [TestMethod] [TestCategory("Parse")] [ExpectedException(typeof(ArgumentNullException))] @@ -16,6 +22,9 @@ public void TestParseIPAddressNetmaskAne2() IPNetwork2.Parse(ip, ip); } + /// + /// Test. + /// [TestMethod] [TestCategory("Parse")] [ExpectedException(typeof(ArgumentNullException))] @@ -24,6 +33,9 @@ public void TestParseIPAddressNetmaskAne3() IPNetwork2.Parse(string.Empty, 0); } + /// + /// Test. + /// [TestMethod] [TestCategory("Parse")] [ExpectedException(typeof(ArgumentNullException))] @@ -32,6 +44,9 @@ public void TestParseIPAddressNetmaskAne4() IPNetwork2.Parse(null, 0); } + /// + /// Test. + /// [TestMethod] [TestCategory("Parse")] [ExpectedException(typeof(ArgumentNullException))] @@ -41,6 +56,9 @@ public void TestParseIPAddressNetmaskAne5() IPNetwork2.Parse(n, n); } + /// + /// Test. + /// [TestMethod] [TestCategory("Parse")] [ExpectedException(typeof(ArgumentException))] @@ -49,6 +67,9 @@ public void TestParseIPAddressNetmaskAne8() var ipnet = IPNetwork2.Parse("x.x.x.x", "x.x.x.x"); } + /// + /// Test. + /// [TestMethod] [TestCategory("Parse")] [ExpectedException(typeof(ArgumentException))] @@ -57,6 +78,9 @@ public void TestParseIPAddressNetmaskAne9() var ipnet = IPNetwork2.Parse("0.0.0.0", "x.x.x.x"); } + /// + /// Test. + /// [TestMethod] [TestCategory("Parse")] [ExpectedException(typeof(ArgumentException))] @@ -65,6 +89,9 @@ public void TestParseIPAddressNetmaskAne10() var ipnet = IPNetwork2.Parse("x.x.x.x", 0); } + /// + /// Test. + /// [TestMethod] [TestCategory("Parse")] [ExpectedException(typeof(ArgumentException))] @@ -73,10 +100,10 @@ public void TestParseIPAddressNetmaskAne11() var ipnet = IPNetwork2.Parse("0.0.0.0", 33); } - [TestCategory("Parse")] /// /// Tests Parse functionality with Parse IPAddress Netmask. /// + [TestCategory("Parse")] [TestMethod] public void TestParseIPAddressNetmask() { @@ -100,10 +127,10 @@ public void TestParseIPAddressNetmask() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestCategory("Parse")] /// /// Tests Parse functionality with Parse String1. /// + [TestCategory("Parse")] [TestMethod] public void TestParseString1() { @@ -127,10 +154,10 @@ public void TestParseString1() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestCategory("Parse")] /// /// Tests Parse functionality with Parse String2. /// + [TestCategory("Parse")] [TestMethod] public void TestParseString2() { @@ -154,10 +181,10 @@ public void TestParseString2() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestCategory("Parse")] /// /// Tests Parse functionality with Parse String3. /// + [TestCategory("Parse")] [TestMethod] public void TestParseString3() { @@ -181,10 +208,10 @@ public void TestParseString3() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestCategory("Parse")] /// /// Tests Parse functionality with Parse String4. /// + [TestCategory("Parse")] [TestMethod] public void TestParseString4() { @@ -208,10 +235,10 @@ public void TestParseString4() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestCategory("Parse")] /// /// Tests Parse functionality with Parse String5. /// + [TestCategory("Parse")] [TestMethod] public void TestParseString5() { @@ -235,10 +262,10 @@ public void TestParseString5() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestCategory("Parse")] /// /// Tests Parse functionality with Parse IPAddress No Netmask1. /// + [TestCategory("Parse")] [TestMethod] public void TestParseIPAddressNoNetmask1() { @@ -543,6 +570,9 @@ public void TestParseIPAddressNoNetmask127001() Assert.AreEqual(result.Cidr, 8); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentException))] public void TestParseStringAe1() @@ -551,6 +581,9 @@ public void TestParseStringAe1() var ipnetwork = IPNetwork2.Parse(ipaddress); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentException))] public void TestParseStringAe2() @@ -559,6 +592,9 @@ public void TestParseStringAe2() var ipnetwork = IPNetwork2.Parse(ipaddress); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestParseStringAne1() diff --git a/src/TestProject/IPNetworkTest/IPNetworkPrintTests.cs b/src/TestProject/IPNetworkTest/IPNetworkPrintTests.cs index 37397ece..017552fc 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkPrintTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkPrintTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Test. +/// [TestClass] public class IPNetworkPrintTests { @@ -28,6 +31,9 @@ public void Print() Assert.AreEqual(expected, print, "Print"); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void PrintNull() diff --git a/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs b/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs index 3761aa88..2a07b873 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs @@ -4,9 +4,15 @@ namespace TestProject.IPNetworkTest; +/// +/// Test resize fuctionnalities. +/// [TestClass] public class IPNetworkResizeTests { + /// + /// Resize a too big ipnetowkr + /// [TestMethod] [ExpectedException(typeof(ArgumentException))] public void TestResize1() diff --git a/src/TestProject/IPNetworkTest/IPNetworkSortTests.cs b/src/TestProject/IPNetworkTest/IPNetworkSortTests.cs index 9cba5109..c1de933d 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkSortTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkSortTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Test. +/// [TestClass] public class IPNetworkSortTests { diff --git a/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs index cf874e3c..7b0fc6cc 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs @@ -4,9 +4,15 @@ namespace TestProject.IPNetworkTest; +/// +/// Test. +/// [TestClass] public class IPNetworkSubnetTests { + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestSubnet1() @@ -33,6 +39,9 @@ public void TestSubnetStatic1() #pragma warning restore 0618 } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestSubnet3() @@ -43,6 +52,9 @@ public void TestSubnet3() IPNetworkCollection subnets = ipnetwork.Subnet(cidr); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentException))] public void TestSubnet4() @@ -196,6 +208,9 @@ public void TestSubnet12() } } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestSubnet13() diff --git a/src/TestProject/IPNetworkTest/IPNetworkSupernetArrayTests.cs b/src/TestProject/IPNetworkTest/IPNetworkSupernetArrayTests.cs index 2bb0d5a7..089410a0 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkSupernetArrayTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkSupernetArrayTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Test. +/// [TestClass] public class IPNetworkSupernetArrayTests { @@ -41,6 +44,9 @@ public void TestTrySupernetArray1() Assert.AreEqual(expected.Length, result.Length, "supernetarray"); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestTrySupernetArray2() @@ -138,14 +144,14 @@ public void TestTrySupernetArray7() IPNetwork2.Parse("192.168.1.0/24"), IPNetwork2.Parse("192.168.2.0/24"), IPNetwork2.Parse("10.0.1.1/24"), - IPNetwork2.Parse("192.168.3.0/24") + IPNetwork2.Parse("192.168.3.0/24"), }; IPNetwork2[] expected = { IPNetwork2.Parse("10.0.1.0/24"), IPNetwork2.Parse("10.0.2.0/24"), - IPNetwork2.Parse("192.168.0/22") + IPNetwork2.Parse("192.168.0/22"), }; IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); @@ -170,13 +176,13 @@ public void TestTrySupernetArray8() IPNetwork2.Parse("192.168.2.0/24"), IPNetwork2.Parse("10.0.1.1/24"), IPNetwork2.Parse("192.168.3.0/24"), - IPNetwork2.Parse("10.6.6.6/8") + IPNetwork2.Parse("10.6.6.6/8"), }; IPNetwork2[] expected = { IPNetwork2.Parse("10.0.0.0/8"), - IPNetwork2.Parse("192.168.0/22") + IPNetwork2.Parse("192.168.0/22"), }; IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); @@ -202,14 +208,14 @@ public void TestTrySupernetArray9() IPNetwork2.Parse("192.168.3.0/24"), IPNetwork2.Parse("10.6.6.6/8"), IPNetwork2.Parse("11.6.6.6/8"), - IPNetwork2.Parse("12.6.6.6/8") + IPNetwork2.Parse("12.6.6.6/8"), }; IPNetwork2[] expected = { IPNetwork2.Parse("10.0.0.0/7"), IPNetwork2.Parse("12.0.0.0/8"), - IPNetwork2.Parse("192.168.0/22") + IPNetwork2.Parse("192.168.0/22"), }; IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); @@ -229,12 +235,12 @@ public void TestTrySupernetArray10() IPNetwork2[] ipnetworks = { IPNetwork2.Parse("10.0.2.2/24"), - IPNetwork2.Parse("10.0.2.2/23") + IPNetwork2.Parse("10.0.2.2/23"), }; IPNetwork2[] expected = { - IPNetwork2.Parse("10.0.2.2/23") + IPNetwork2.Parse("10.0.2.2/23"), }; IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); diff --git a/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs index 04cd46f3..b38b9f81 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Tests Supernet functionality. +/// [TestClass] public class IPNetworkSupernetTests { @@ -13,12 +16,15 @@ public class IPNetworkSupernetTests [TestMethod] public void TestSupernetInternal1() { - IPNetwork2 result; - IPNetwork2.InternalSupernet(true, null, null, out result); + IPNetwork2 result; + IPNetwork2.InternalSupernet(true, null, null, out result); - Assert.AreEqual(null, result, "supernet"); - } + Assert.AreEqual(null, result, "supernet"); + } + /// + /// Tests Supernet functionality with null. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestSupernetInternal2() @@ -27,6 +33,10 @@ public void TestSupernetInternal2() IPNetwork2.InternalSupernet(false, null, null, out result); } + + /// + /// Tests Supernet functionality with Issue33__TestSupernet__Bug_or_default_behavior. + /// [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void Issue33__TestSupernet__Bug_or_default_behavior() @@ -83,6 +93,9 @@ public void TestSupernet1() Assert.AreEqual(expected, supernet, "supernet"); } + /// + /// Test to supernet a null network1. + /// [TestMethod] [ExpectedException(typeof(NullReferenceException))] public void TestSupernet2() @@ -91,7 +104,10 @@ public void TestSupernet2() var network2 = IPNetwork2.Parse("192.168.1.1/24"); IPNetwork2 supernet = network1.Supernet(network2); } - + + /// + /// Test to supernet a null network2. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestSupernet3() @@ -101,6 +117,9 @@ public void TestSupernet3() IPNetwork2 supernet = network1.Supernet(network2); } + /// + /// Test to supernet overlapping networks. + /// [TestMethod] [ExpectedException(typeof(ArgumentException))] public void TestSupernet4() @@ -110,6 +129,9 @@ public void TestSupernet4() IPNetwork2 supernet = network1.Supernet(network2); } + /// + /// Test to supernet non overlapping networks. + /// [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestSupernet5() @@ -163,6 +185,9 @@ public void TestSupernetStatic1() Assert.AreEqual(expected, supernet, "supernet"); } + /// + /// Test to supernet continuous networks. + /// [TestMethod] [ExpectedException(typeof(ArgumentException))] public void TestSupernet8() diff --git a/src/TestProject/IPNetworkTest/IPNetworkToBigIntegerTests.cs b/src/TestProject/IPNetworkTest/IPNetworkToBigIntegerTests.cs index 838fcda1..2be7bc55 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkToBigIntegerTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkToBigIntegerTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Test BigInterger conversions. +/// [TestClass] public class IPNetworkToBigIntegerTests { @@ -72,6 +75,9 @@ public void TestToBigInteger0() Assert.AreEqual(uintMask, result, "uint"); } + /// + /// Try to convert from null. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestToBigIntegerAne() @@ -79,6 +85,9 @@ public void TestToBigIntegerAne() BigInteger? result = IPNetwork2.ToBigInteger(null); } + /// + /// Try to convert from null IPAddress. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestToBigIntegerAne3() @@ -98,6 +107,9 @@ public void TestToBigIntegerAne2() Assert.AreEqual(expected, result, "result"); } + /// + /// Try to convert from invalid cidr. + /// [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestToBigIntegerByte() @@ -149,6 +161,9 @@ public void TestToBigIntegerInternal2() Assert.AreEqual(null, result, "result"); } + /// + /// Try to convert from invalid IPV6 cidr. + /// [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestToBigIntegerInternal3() @@ -157,6 +172,9 @@ public void TestToBigIntegerInternal3() IPNetwork2.InternalToBigInteger(false, 129, AddressFamily.InterNetworkV6, out result); } + /// + /// Try to convert from invalid AddressFamily. + /// [TestMethod] [ExpectedException(typeof(NotSupportedException))] public void TestToBigIntegerInternal4() diff --git a/src/TestProject/IPNetworkTest/IPNetworkToCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkToCidrTests.cs index 38ecd0c0..3c51e7e9 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkToCidrTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkToCidrTests.cs @@ -4,9 +4,15 @@ namespace TestProject.IPNetworkTest; +/// +/// Test. +/// [TestClass] public class IPNetworkToCidrTests { + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestToCidrAne() @@ -24,6 +30,9 @@ public void TestToCidrAe() Assert.AreEqual(0, cidr, "cidr"); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentException))] public void TestToCidrAe2() diff --git a/src/TestProject/IPNetworkTest/IPNetworkToIPAddressTests.cs b/src/TestProject/IPNetworkTest/IPNetworkToIPAddressTests.cs index dab4d83a..e6a0534e 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkToIPAddressTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkToIPAddressTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Test. +/// [TestClass] public class IPNetworkToIPAddressTests { @@ -18,6 +21,9 @@ public void TestToIPAddress() Assert.AreEqual(IPAddress.Any, result, "ToIPAddress"); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentException))] public void TestToIPAddress2() @@ -26,6 +32,9 @@ public void TestToIPAddress2() var result = IPNetwork2.ToIPAddress(ip, AddressFamily.AppleTalk); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentException))] public void TestToIPAddress3() @@ -40,7 +49,7 @@ public void TestToIPAddress3() 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }); var result = IPNetwork2.ToIPAddress(ip, AddressFamily.AppleTalk); } diff --git a/src/TestProject/IPNetworkTest/IPNetworkToNetmaskTests.cs b/src/TestProject/IPNetworkTest/IPNetworkToNetmaskTests.cs index 26a797e6..62201ca9 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkToNetmaskTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkToNetmaskTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Test netmaks conversion from x.x.x.x to cidr. +/// [TestClass] public class IPNetworkToNetmaskTests { @@ -13,29 +16,46 @@ public class IPNetworkToNetmaskTests [TestMethod] public void ToNetmask32() { - byte cidr = 32; - string netmask = "255.255.255.255"; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); + byte cidr = 32; + string netmask = "255.255.255.255"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); - Assert.AreEqual(netmask, result, "netmask"); - } + Assert.AreEqual(netmask, result, "netmask"); + } + /// + /// Test with wrong AddressFamily. + /// [TestMethod] [ExpectedException(typeof(ArgumentException))] public void ToNetmaskNonInet() { - byte cidr = 0; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.AppleTalk).ToString(); - } + byte cidr = 0; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.AppleTalk).ToString(); + } + /// + /// Test with overflowed cidr. + /// [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void ToNetmaskNegative() { - byte cidr = 0; - cidr--; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); - } + byte cidr = 0; + cidr--; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); + } + + /// + /// Test with too big of a cidr + /// + [TestMethod] + [ExpectedException(typeof(ArgumentOutOfRangeException))] + public void ToNetmaskOore1() + { + byte cidr = 33; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); + } /// /// Tests To Netmask functionality with a /1 network. @@ -43,10 +63,10 @@ public void ToNetmaskNegative() [TestMethod] public void ToNetmaskInternal1() { - IPAddress result; - IPNetwork2.InternalToNetmask(true, 0, AddressFamily.AppleTalk, out result); - Assert.AreEqual(null, result); - } + IPAddress result; + IPNetwork2.InternalToNetmask(true, 0, AddressFamily.AppleTalk, out result); + Assert.AreEqual(null, result); + } /// /// Tests To Netmask functionality with a /31 network. @@ -54,12 +74,12 @@ public void ToNetmaskInternal1() [TestMethod] public void ToNetmask31() { - byte cidr = 31; - string netmask = "255.255.255.254"; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); + byte cidr = 31; + string netmask = "255.255.255.254"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); - Assert.AreEqual(netmask, result, "netmask"); - } + Assert.AreEqual(netmask, result, "netmask"); + } /// /// Tests To Netmask functionality with a /30 network. @@ -67,12 +87,12 @@ public void ToNetmask31() [TestMethod] public void ToNetmask30() { - byte cidr = 30; - string netmask = "255.255.255.252"; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); + byte cidr = 30; + string netmask = "255.255.255.252"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); - Assert.AreEqual(netmask, result, "netmask"); - } + Assert.AreEqual(netmask, result, "netmask"); + } /// /// Tests To Netmask functionality with a /29 network. @@ -80,12 +100,12 @@ public void ToNetmask30() [TestMethod] public void ToNetmask29() { - byte cidr = 29; - string netmask = "255.255.255.248"; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); + byte cidr = 29; + string netmask = "255.255.255.248"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); - Assert.AreEqual(netmask, result, "netmask"); - } + Assert.AreEqual(netmask, result, "netmask"); + } /// /// Tests To Netmask functionality with a /1 network. @@ -93,12 +113,12 @@ public void ToNetmask29() [TestMethod] public void ToNetmask1() { - byte cidr = 1; - string netmask = "128.0.0.0"; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); + byte cidr = 1; + string netmask = "128.0.0.0"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); - Assert.AreEqual(netmask, result, "netmask"); - } + Assert.AreEqual(netmask, result, "netmask"); + } /// /// Tests To Netmask functionality with a /0 network. @@ -106,18 +126,10 @@ public void ToNetmask1() [TestMethod] public void ToNetmask0() { - byte cidr = 0; - string netmask = "0.0.0.0"; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); - - Assert.AreEqual(netmask, result, "netmask"); - } + byte cidr = 0; + string netmask = "0.0.0.0"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); - [TestMethod] - [ExpectedException(typeof(ArgumentOutOfRangeException))] - public void ToNetmaskOore1() - { - byte cidr = 33; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); - } + Assert.AreEqual(netmask, result, "netmask"); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkToStringTests.cs b/src/TestProject/IPNetworkTest/IPNetworkToStringTests.cs index 0298360d..ddc016cb 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkToStringTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkToStringTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Test. +/// [TestClass] public class IPNetworkToStringTests { diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryGuessCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryGuessCidrTests.cs index 92885841..4590f319 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryGuessCidrTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryGuessCidrTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Test. +/// [TestClass] public class IPNetworkTryGuessCidrTests { diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryParseCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryParseCidrTests.cs index bbac6c70..d2b2003a 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryParseCidrTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryParseCidrTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Test. +/// [TestClass] public class IPNetworkTryParseCidrTests { diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs index ef033d3b..a0c2a144 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Test. +/// [TestClass] public class IPNetworkTryParseTests { diff --git a/src/TestProject/IPNetworkTest/IPNetworkTrySubnetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTrySubnetTests.cs index 54fb3414..5df0f416 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTrySubnetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTrySubnetTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Test parsing of collection of subnet. +/// [TestClass] public class IPNetworkTrySubnetTests { @@ -18,6 +21,9 @@ public void TestInternalSubnet1() Assert.AreEqual(null, subnets, "subnets"); } + /// + /// Test a null collection. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestInternalSubnet2() @@ -26,6 +32,9 @@ public void TestInternalSubnet2() IPNetwork2.InternalSubnet(false, null, 0, out subnets); } + /// + /// Test a null network + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestTrySubnet1() @@ -33,9 +42,8 @@ public void TestTrySubnet1() IPNetwork2 ipnetwork = null; byte cidr = 9; - IPNetworkCollection subnets = null; #pragma warning disable 0618 - bool subnetted = IPNetwork2.TrySubnet(ipnetwork, cidr, out subnets); + bool subnetted = IPNetwork2.TrySubnet(ipnetwork, cidr, out var _); #pragma warning restore 0618 } diff --git a/src/TestProject/IPNetworkTest/IPNetworkTrySupernetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTrySupernetTests.cs index 0ff0df83..fb56166f 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTrySupernetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTrySupernetTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Test. +/// [TestClass] public class IPNetworkTrySupernetTests { @@ -24,6 +27,9 @@ public void TestTrySupernet1() Assert.AreEqual(parsed, result, "parsed"); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestTrySupernet2() diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryToBigIntegerTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryToBigIntegerTests.cs index 30587339..6ea33970 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryToBigIntegerTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryToBigIntegerTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Test. +/// [TestClass] public class IPNetworkTryToBigIntegerTests { diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryToCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryToCidrTests.cs index 2b51b02e..68c18676 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryToCidrTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryToCidrTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Test. +/// [TestClass] public class IPNetworkTryToCidrTests { diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryToNetmaskTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryToNetmaskTests.cs index b5ef7ba8..94ed7e51 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryToNetmaskTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryToNetmaskTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Test. +/// [TestClass] public class IPNetworkTryToNetmaskTests { diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryToUintTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryToUintTests.cs index 83503aba..54ba71ab 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryToUintTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryToUintTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Test. +/// [TestClass] public class IPNetworkTryToUintTests { diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryWideSubnetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryWideSubnetTests.cs index 27237fa7..275149e2 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryWideSubnetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryWideSubnetTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Test. +/// [TestClass] public class IPNetworkTryWideSubnetTests { diff --git a/src/TestProject/IPNetworkTest/IPNetworkUsableTests.cs b/src/TestProject/IPNetworkTest/IPNetworkUsableTests.cs index 73272cbf..11317e4b 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkUsableTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkUsableTests.cs @@ -4,6 +4,9 @@ namespace TestProject.IPNetworkTest; +/// +/// Test. +/// [TestClass] public class IPNetworkUsableTests { diff --git a/src/TestProject/IPNetworkTest/IPNetworkValidNetmaskTests.cs b/src/TestProject/IPNetworkTest/IPNetworkValidNetmaskTests.cs index 5f7e2acb..79786976 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkValidNetmaskTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkValidNetmaskTests.cs @@ -4,15 +4,21 @@ namespace TestProject.IPNetworkTest; +/// +/// Test parse netmask that are invalid. +/// [TestClass] public class IPNetworkValidNetmaskTests { + /// + /// Test invalid AddressFamily. + /// [TestMethod] [ExpectedException(typeof(ArgumentException))] public void TestValidNetmaskInvalid1() { - bool resut = IPNetwork2.InternalValidNetmask(BigInteger.Zero, AddressFamily.AppleTalk); - } + bool resut = IPNetwork2.InternalValidNetmask(BigInteger.Zero, AddressFamily.AppleTalk); + } /// /// Tests Valid Netmask functionality with Valid Netmask0. @@ -20,12 +26,12 @@ public void TestValidNetmaskInvalid1() [TestMethod] public void TestValidNetmask0() { - var mask = IPAddress.Parse("255.255.255.255"); - bool expected = true; - bool result = IPNetwork2.ValidNetmask(mask); + var mask = IPAddress.Parse("255.255.255.255"); + bool expected = true; + bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); - } + Assert.AreEqual(expected, result, "ValidNetmask"); + } /// /// Tests Valid Netmask functionality with Valid Netmask1. @@ -33,12 +39,12 @@ public void TestValidNetmask0() [TestMethod] public void TestValidNetmask1() { - var mask = IPAddress.Parse("255.255.255.0"); - bool expected = true; - bool result = IPNetwork2.ValidNetmask(mask); + var mask = IPAddress.Parse("255.255.255.0"); + bool expected = true; + bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); - } + Assert.AreEqual(expected, result, "ValidNetmask"); + } /// /// Tests Valid Netmask functionality with Valid Netmask2. @@ -46,12 +52,12 @@ public void TestValidNetmask1() [TestMethod] public void TestValidNetmask2() { - var mask = IPAddress.Parse("255.255.0.0"); - bool expected = true; - bool result = IPNetwork2.ValidNetmask(mask); + var mask = IPAddress.Parse("255.255.0.0"); + bool expected = true; + bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); - } + Assert.AreEqual(expected, result, "ValidNetmask"); + } /// /// Tests Valid Netmask functionality with Valid Netmask EAE1. @@ -59,23 +65,26 @@ public void TestValidNetmask2() [TestMethod] public void TestValidNetmaskEae1() { - var mask = IPAddress.Parse("0.255.0.0"); - bool expected = false; - bool result = IPNetwork2.ValidNetmask(mask); + var mask = IPAddress.Parse("0.255.0.0"); + bool expected = false; + bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); - } + Assert.AreEqual(expected, result, "ValidNetmask"); + } + /// + /// Test null mask. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestValidNetmaskEae2() { - IPAddress mask = null; - bool expected = true; - bool result = IPNetwork2.ValidNetmask(mask); + IPAddress mask = null; + bool expected = true; + bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); - } + Assert.AreEqual(expected, result, "ValidNetmask"); + } /// /// Tests Valid Netmask functionality with Valid Netmask EAE3. @@ -83,10 +92,10 @@ public void TestValidNetmaskEae2() [TestMethod] public void TestValidNetmaskEae3() { - var mask = IPAddress.Parse("255.255.0.1"); - bool expected = false; - bool result = IPNetwork2.ValidNetmask(mask); + var mask = IPAddress.Parse("255.255.0.1"); + bool expected = false; + bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); - } + Assert.AreEqual(expected, result, "ValidNetmask"); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkV6UnitTest.cs b/src/TestProject/IPNetworkV6UnitTest.cs index 8663b532..e2c4ae13 100644 --- a/src/TestProject/IPNetworkV6UnitTest.cs +++ b/src/TestProject/IPNetworkV6UnitTest.cs @@ -4,39 +4,45 @@ namespace TestProject; +/// +/// Test parsing of IPV6 IPNetworks +/// [TestClass] public class IPNetworkV6UnitTest { #region Parse - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestParseIPAddressNetmaskAne8() - { - var ipnet = IPNetwork2.Parse("xxxx::", "xxxx::"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestParseIPAddressNetmaskAne9() - { - var ipnet = IPNetwork2.Parse("::", "xxxx::"); - } - - [TestMethod] + /// + /// Test parse of IPv6 networks. + /// + /// First parameter + /// Second parameter + [DataTestMethod] + [DataRow("xxxx::", "xxxx::")] + [DataRow("::", "xxxx::")] [ExpectedException(typeof(ArgumentException))] - public void TestParseIPAddressNetmaskAne10() - { - var ipnet = IPNetwork2.Parse("xxxx::", 0); - } - - [TestMethod] + public void TestParseIPAddressNetmaskAne8(string withFirst, string andSecond) + { + var ipnet = IPNetwork2.Parse(withFirst, andSecond); + } + + /// + /// Test parse of IPv6 networks. + /// + /// First parameter + /// Second parameter + [DataTestMethod] + [DataRow("xxxx::", 0)] + [DataRow("::", 129)] [ExpectedException(typeof(ArgumentException))] - public void TestParseIPAddressNetmaskAne11() + public void TestParseIPAddressNetmaskAne10(string withFirst, string andSecond) { - var ipnet = IPNetwork2.Parse("::", 129); + var ipnet = IPNetwork2.Parse(withFirst, andSecond); } + /// + /// Test parse of IPv& networks with 128 cidr. + /// [TestMethod] public void TestParsev6_128() { @@ -63,7 +69,10 @@ public void TestParsev6_128() Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - + + /// + /// Test parse of IPv& networks with 127 cidr. + /// [TestMethod] public void TestParsev6_127() { @@ -91,6 +100,9 @@ public void TestParsev6_127() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test parse of IPv& networks with 126 cidr. + /// [TestMethod] public void TestParsev6_126() { @@ -118,6 +130,9 @@ public void TestParsev6_126() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test parse of IPv& networks with 125 cidr. + /// [TestMethod] public void TestParsev6_125() { @@ -145,6 +160,9 @@ public void TestParsev6_125() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test parse of IPv& networks with 124 cidr. + /// [TestMethod] public void TestParsev6_124() { @@ -172,6 +190,9 @@ public void TestParsev6_124() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test parse of IPv& networks with 123 cidr. + /// [TestMethod] public void TestParsev6_123() { @@ -199,6 +220,9 @@ public void TestParsev6_123() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test parse of IPv& networks with 112 cidr. + /// [TestMethod] public void TestParsev6_112() { @@ -226,6 +250,9 @@ public void TestParsev6_112() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test parse of IPv& networks with 64 cidr. + /// [TestMethod] public void TestParsev6_64() { @@ -253,6 +280,9 @@ public void TestParsev6_64() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test parse of IPv& networks with 16 cidr. + /// [TestMethod] public void TestParsev6_16() { @@ -280,6 +310,9 @@ public void TestParsev6_16() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test parse of IPv& networks with edge cases. + /// [TestMethod] public void TestParsev6_EDGE() { @@ -309,6 +342,9 @@ public void TestParsev6_EDGE() #region ParseString + /// + /// Test ParseString. + /// [TestMethod] public void TestParseString1() { @@ -331,6 +367,9 @@ public void TestParseString1() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test ParseString. + /// [TestMethod] public void TestParseString3() { @@ -353,6 +392,9 @@ public void TestParseString3() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test ParseString. + /// [TestMethod] public void TestParseString4() { @@ -375,6 +417,9 @@ public void TestParseString4() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test ParseString. + /// [TestMethod] public void TestParseString5() { @@ -397,6 +442,9 @@ public void TestParseString5() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test ParseString. + /// [TestMethod] public void TestParseString6() { @@ -419,6 +467,9 @@ public void TestParseString6() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test ParseString uppercase lowercase. + /// [TestMethod] public void TestParseString7_Uppercase_ipv6_must_parse() { @@ -442,6 +493,9 @@ public void TestParseString7_Uppercase_ipv6_must_parse() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test ParseString uppercase lowercase. + /// [TestMethod] public void TestParseString8_Uppercase_ipv6_must_parse() { @@ -465,6 +519,9 @@ public void TestParseString8_Uppercase_ipv6_must_parse() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test ParseString uppercase lowercase. + /// [TestMethod] public void TestParseString9_Uppercase_ipv6_must_parse() { @@ -488,6 +545,9 @@ public void TestParseString9_Uppercase_ipv6_must_parse() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test ParseString uppercase lowercase. + /// [TestMethod] public void TestParseString10_Uppercase_ipv6_must_parse() { @@ -511,6 +571,9 @@ public void TestParseString10_Uppercase_ipv6_must_parse() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test ParseString uppercase lowercase. + /// [TestMethod] public void TestParseString11_Uppercase_ipv6_must_parse() { @@ -534,6 +597,9 @@ public void TestParseString11_Uppercase_ipv6_must_parse() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test ParseString uppercase lowercase. + /// [TestMethod] public void TestParseIPAddressNoNetmask1() { @@ -556,6 +622,9 @@ public void TestParseIPAddressNoNetmask1() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test ParseString uppercase lowercase. + /// [TestMethod] public void TestParseIPAddressNoNetmask4() { @@ -578,6 +647,9 @@ public void TestParseIPAddressNoNetmask4() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test ParseString uppercase lowercase. + /// [TestMethod] public void TestParseIPAddressNoNetmask5() { @@ -600,6 +672,9 @@ public void TestParseIPAddressNoNetmask5() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test ParseString uppercase lowercase. + /// [TestMethod] public void TestParseIPAddressNoNetmask1_ClassFull() { @@ -624,6 +699,9 @@ public void TestParseIPAddressNoNetmask1_ClassFull() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test ParseString uppercase lowercase. + /// [TestMethod] public void TestParseIPAddressNoNetmask4_ClassFull() { @@ -648,6 +726,9 @@ public void TestParseIPAddressNoNetmask4_ClassFull() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test ParseString ClassFull. + /// [TestMethod] public void TestParseIPAddressNoNetmask5_ClassFull() { @@ -672,6 +753,9 @@ public void TestParseIPAddressNoNetmask5_ClassFull() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test ParseString ClassLess. + /// [TestMethod] public void TestParseIPAddressNoNetmask1_ClassLess() { @@ -696,6 +780,9 @@ public void TestParseIPAddressNoNetmask1_ClassLess() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test ParseString ClassLess. + /// [TestMethod] public void TestParseIPAddressNoNetmask4_ClassLess() { @@ -720,6 +807,9 @@ public void TestParseIPAddressNoNetmask4_ClassLess() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test ParseString ClassLess. + /// [TestMethod] public void TestParseIPAddressNoNetmask5_ClassLess() { @@ -744,6 +834,9 @@ public void TestParseIPAddressNoNetmask5_ClassLess() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test ParseString garbage. + /// [TestMethod] [ExpectedException(typeof(ArgumentException))] public void TestParseStringAe1() @@ -752,6 +845,9 @@ public void TestParseStringAe1() var ipnetwork = IPNetwork2.Parse(ipaddress); } + /// + /// Test ParseString too long. + /// [TestMethod] [ExpectedException(typeof(ArgumentException))] public void TestParseStringAe2() @@ -760,6 +856,9 @@ public void TestParseStringAe2() var ipnetwork = IPNetwork2.Parse(ipaddress); } + /// + /// Test ParseString null. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestParseStringAne1() @@ -772,6 +871,9 @@ public void TestParseStringAne1() #region ParseStringString + /// + /// Test ParseString 1. + /// [TestMethod] public void TestParseStringString1() { @@ -782,6 +884,9 @@ public void TestParseStringString1() Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); } + /// + /// Test ParseString 3. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestParseStringString3() @@ -792,6 +897,9 @@ public void TestParseStringString3() var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); } + /// + /// Test ParseString with string string + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestParseStringString5() @@ -806,6 +914,9 @@ public void TestParseStringString5() #region ParseIpIp + /// + /// Test ParseString with IP + /// [TestMethod] public void ParseIpIp1() { @@ -817,6 +928,9 @@ public void ParseIpIp1() Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); } + /// + /// Test ParseString with IP + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void ParseIpIp3() @@ -831,6 +945,9 @@ public void ParseIpIp3() #region CtorWithIpAndCidr + /// + /// Test CtorWithIpAndCidr1. + /// [TestMethod] public void CtorWithIpAndCidr1() { @@ -840,6 +957,9 @@ public void CtorWithIpAndCidr1() Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); } + /// + /// Test CtorWithIpAndCidr2. + /// [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void CtorWithIpAndCidr2() @@ -853,6 +973,9 @@ public void CtorWithIpAndCidr2() #region ToCidr + /// + /// Test ToCidr. + /// [TestMethod] public void TestToCidrAe() { @@ -860,6 +983,9 @@ public void TestToCidrAe() Assert.AreEqual(0, cidr, "cidr"); } + /// + /// Test ToCidr. + /// [TestMethod] [ExpectedException(typeof(ArgumentException))] public void TestToCidrAe2() @@ -867,6 +993,9 @@ public void TestToCidrAe2() IPNetwork2.ToCidr(IPAddress.Parse("2001:db8:3:4:5:6:7:8")); } + /// + /// Test ToCidr. + /// [TestMethod] public void TestToCidr128() { @@ -877,6 +1006,9 @@ public void TestToCidr128() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test ToCidr. + /// [TestMethod] public void TestToCidr127() { @@ -887,6 +1019,9 @@ public void TestToCidr127() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test ToCidr. + /// [TestMethod] public void TestToCidr126() { @@ -897,6 +1032,9 @@ public void TestToCidr126() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test ToCidr. + /// [TestMethod] public void TestToCidr125() { @@ -907,6 +1045,9 @@ public void TestToCidr125() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test ToCidr. + /// [TestMethod] public void TestToCidr124() { @@ -917,6 +1058,9 @@ public void TestToCidr124() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test ToCidr. + /// [TestMethod] public void TestToCidr123() { @@ -927,6 +1071,9 @@ public void TestToCidr123() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test ToCidr. + /// [TestMethod] public void TestToCidr122() { @@ -937,6 +1084,9 @@ public void TestToCidr122() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test ToCidr. + /// [TestMethod] public void TestToCidr121() { @@ -947,6 +1097,9 @@ public void TestToCidr121() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test ToCidr. + /// [TestMethod] public void TestToCidr120() { @@ -957,6 +1110,9 @@ public void TestToCidr120() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test ToCidr. + /// [TestMethod] public void TestToCidr119() { @@ -967,6 +1123,9 @@ public void TestToCidr119() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test ToCidr. + /// [TestMethod] public void TestToCidr118() { @@ -977,6 +1136,9 @@ public void TestToCidr118() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test ToCidr. + /// [TestMethod] public void TestToCidr117() { @@ -987,6 +1149,9 @@ public void TestToCidr117() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test ToCidr. + /// [TestMethod] public void TestToCidr116() { @@ -997,6 +1162,9 @@ public void TestToCidr116() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestToCidr115() { @@ -1007,6 +1175,9 @@ public void TestToCidr115() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestToCidr114() { @@ -1017,6 +1188,9 @@ public void TestToCidr114() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestToCidr113() { @@ -1027,6 +1201,9 @@ public void TestToCidr113() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestToCidr112() { @@ -1037,6 +1214,9 @@ public void TestToCidr112() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestToCidr111() { @@ -1047,6 +1227,9 @@ public void TestToCidr111() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestToCidr110() { @@ -1057,6 +1240,9 @@ public void TestToCidr110() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestToCidr109() { @@ -1067,6 +1253,9 @@ public void TestToCidr109() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestToCidr108() { @@ -1077,6 +1266,9 @@ public void TestToCidr108() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestToCidr001() { @@ -1087,6 +1279,9 @@ public void TestToCidr001() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestToCidr000() { @@ -1101,6 +1296,9 @@ public void TestToCidr000() #region TryToCidr + /// + /// Test. + /// [TestMethod] public void TestTryToCidr128() { @@ -1113,6 +1311,9 @@ public void TestTryToCidr128() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryToCidr127() { @@ -1125,6 +1326,9 @@ public void TestTryToCidr127() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryToCidr126() { @@ -1137,6 +1341,9 @@ public void TestTryToCidr126() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryToCidr125() { @@ -1149,6 +1356,9 @@ public void TestTryToCidr125() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryToCidr124() { @@ -1161,6 +1371,9 @@ public void TestTryToCidr124() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryToCidr123() { @@ -1173,6 +1386,9 @@ public void TestTryToCidr123() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryToCidr122() { @@ -1185,6 +1401,9 @@ public void TestTryToCidr122() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryToCidr121() { @@ -1197,6 +1416,9 @@ public void TestTryToCidr121() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryToCidr120() { @@ -1209,6 +1431,9 @@ public void TestTryToCidr120() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryToCidr119() { @@ -1221,6 +1446,9 @@ public void TestTryToCidr119() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryToCidr118() { @@ -1233,6 +1461,9 @@ public void TestTryToCidr118() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryToCidr117() { @@ -1245,6 +1476,9 @@ public void TestTryToCidr117() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryToCidr116() { @@ -1257,6 +1491,9 @@ public void TestTryToCidr116() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryToCidr115() { @@ -1269,6 +1506,9 @@ public void TestTryToCidr115() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryToCidr114() { @@ -1281,6 +1521,9 @@ public void TestTryToCidr114() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryToCidr113() { @@ -1293,6 +1536,9 @@ public void TestTryToCidr113() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryToCidr112() { @@ -1305,6 +1551,9 @@ public void TestTryToCidr112() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryToCidr111() { @@ -1317,6 +1566,9 @@ public void TestTryToCidr111() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryToCidr110() { @@ -1329,6 +1581,9 @@ public void TestTryToCidr110() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryToCidr109() { @@ -1341,6 +1596,9 @@ public void TestTryToCidr109() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryToCidr108() { @@ -1353,6 +1611,9 @@ public void TestTryToCidr108() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryToCidr001() { @@ -1365,6 +1626,9 @@ public void TestTryToCidr001() Assert.AreEqual(cidr, result, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryToCidr000() { @@ -1381,6 +1645,9 @@ public void TestTryToCidr000() #region ToBigInteger + /// + /// Test. + /// [TestMethod] public void TestToBigInteger32() { @@ -1391,6 +1658,9 @@ public void TestToBigInteger32() Assert.AreEqual(uintMask, result, "uint"); } + /// + /// Test. + /// [TestMethod] public void TestToBigInteger24() { @@ -1401,6 +1671,9 @@ public void TestToBigInteger24() Assert.AreEqual(uintMask, result, "uint"); } + /// + /// Test. + /// [TestMethod] public void TestToBigInteger16() { @@ -1411,6 +1684,9 @@ public void TestToBigInteger16() Assert.AreEqual(uintMask, result, "uint"); } + /// + /// Test. + /// [TestMethod] public void TestToBigInteger8() { @@ -1421,6 +1697,9 @@ public void TestToBigInteger8() Assert.AreEqual(uintMask, result, "uint"); } + /// + /// Test. + /// [TestMethod] public void TestToBigInteger0() { @@ -1435,6 +1714,9 @@ public void TestToBigInteger0() #region TryToBigInteger + /// + /// Test. + /// [TestMethod] public void TestTryToBigInteger32() { @@ -1447,6 +1729,9 @@ public void TestTryToBigInteger32() Assert.AreEqual(true, parsed, "parsed"); } + /// + /// Test. + /// [TestMethod] public void TestTryToBigInteger24() { @@ -1459,6 +1744,9 @@ public void TestTryToBigInteger24() Assert.AreEqual(true, parsed, "parsed"); } + /// + /// Test. + /// [TestMethod] public void TestTryToBigInteger16() { @@ -1471,6 +1759,9 @@ public void TestTryToBigInteger16() Assert.AreEqual(true, parsed, "parsed"); } + /// + /// Test. + /// [TestMethod] public void TestTryToBigInteger8() { @@ -1484,6 +1775,9 @@ public void TestTryToBigInteger8() Assert.AreEqual(true, parsed, "parsed"); } + /// + /// Test. + /// [TestMethod] public void TestTryToBigInteger0() { @@ -1500,6 +1794,9 @@ public void TestTryToBigInteger0() #region TryToNetmask + /// + /// Test. + /// [TestMethod] public void TryToNetmask1() { @@ -1511,6 +1808,9 @@ public void TryToNetmask1() Assert.AreEqual(true, parsed, "parsed"); } + /// + /// Test. + /// [TestMethod] public void TryToNetmask2() { @@ -1526,6 +1826,9 @@ public void TryToNetmask2() #region ToNetmask + /// + /// Test. + /// [TestMethod] public void ToNetmask128() { @@ -1536,6 +1839,9 @@ public void ToNetmask128() Assert.AreEqual(netmask, result, "netmask"); } + /// + /// Test. + /// [TestMethod] public void ToNetmask31() { @@ -1546,6 +1852,9 @@ public void ToNetmask31() Assert.AreEqual(netmask, result, "netmask"); } + /// + /// Test. + /// [TestMethod] public void ToNetmask30() { @@ -1556,6 +1865,9 @@ public void ToNetmask30() Assert.AreEqual(netmask, result, "netmask"); } + /// + /// Test. + /// [TestMethod] public void ToNetmask1() { @@ -1566,6 +1878,9 @@ public void ToNetmask1() Assert.AreEqual(netmask, result, "netmask"); } + /// + /// Test. + /// [TestMethod] public void ToNetmask0() { @@ -1576,6 +1891,9 @@ public void ToNetmask0() Assert.AreEqual(netmask, result, "netmask"); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void ToNetmaskOore1() @@ -1588,6 +1906,9 @@ public void ToNetmaskOore1() #region ValidNetmask + /// + /// Test. + /// [TestMethod] public void TestValidNetmask0() { @@ -1598,6 +1919,9 @@ public void TestValidNetmask0() Assert.AreEqual(expected, result, "ValidNetmask"); } + /// + /// Test. + /// [TestMethod] public void TestValidNetmask1() { @@ -1608,6 +1932,9 @@ public void TestValidNetmask1() Assert.AreEqual(expected, result, "ValidNetmask"); } + /// + /// Test. + /// [TestMethod] public void TestValidNetmask2() { @@ -1618,6 +1945,9 @@ public void TestValidNetmask2() Assert.AreEqual(expected, result, "ValidNetmask"); } + /// + /// Test. + /// [TestMethod] public void TestValidNetmaskEae1() { @@ -1628,6 +1958,9 @@ public void TestValidNetmaskEae1() Assert.AreEqual(expected, result, "ValidNetmask"); } + /// + /// Test. + /// [TestMethod] public void TestValidNetmaskEae3() { @@ -1642,6 +1975,9 @@ public void TestValidNetmaskEae3() #region BitsSet + /// + /// Test. + /// [TestMethod] public void TestBitsSet128() { @@ -1652,6 +1988,9 @@ public void TestBitsSet128() Assert.AreEqual(bits, result, "BitsSet"); } + /// + /// Test. + /// [TestMethod] public void TestBitsSet120() { @@ -1662,6 +2001,9 @@ public void TestBitsSet120() Assert.AreEqual(bits, result, "BitsSet"); } + /// + /// Test. + /// [TestMethod] public void TestBitsSet16() { @@ -1672,6 +2014,9 @@ public void TestBitsSet16() Assert.AreEqual(bits, result, "BitsSet"); } + /// + /// Test. + /// [TestMethod] public void TestBitsSet4() { @@ -1686,6 +2031,9 @@ public void TestBitsSet4() #region Contains + /// + /// Test. + /// [TestMethod] public void TestContains1() { @@ -1698,6 +2046,9 @@ public void TestContains1() Assert.AreEqual(expected, result, "contains"); } + /// + /// Test. + /// [TestMethod] public void TestContains2() { @@ -1710,6 +2061,9 @@ public void TestContains2() Assert.AreEqual(expected, result, "contains"); } + /// + /// Test. + /// [TestMethod] public void TestContains3() { @@ -1722,6 +2076,9 @@ public void TestContains3() Assert.AreEqual(expected, result, "contains"); } + /// + /// Test. + /// [TestMethod] public void TestContains4() { @@ -1734,6 +2091,9 @@ public void TestContains4() Assert.AreEqual(expected, result, "contains"); } + /// + /// Test. + /// [TestMethod] public void TestContains5() { @@ -1746,6 +2106,9 @@ public void TestContains5() Assert.AreEqual(expected, result, "contains"); } + /// + /// Test. + /// [TestMethod] public void TestContains6() { @@ -1758,6 +2121,9 @@ public void TestContains6() Assert.AreEqual(expected, result, "contains"); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestContains10() @@ -1768,6 +2134,9 @@ public void TestContains10() bool result = ipnetwork.Contains(ipaddress); } + /// + /// Test. + /// [TestMethod] public void TestContains11_different_address_family_returns_false() { @@ -1782,6 +2151,9 @@ public void TestContains11_different_address_family_returns_false() #region Overlap + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestOverlap2() @@ -1791,6 +2163,9 @@ public void TestOverlap2() network1.Overlap(network2); } + /// + /// Test. + /// [TestMethod] public void TestOverlap3() { @@ -1802,6 +2177,9 @@ public void TestOverlap3() Assert.AreEqual(expected, result, "overlap"); } + /// + /// Test. + /// [TestMethod] public void TestOverlap4() { @@ -1813,6 +2191,9 @@ public void TestOverlap4() Assert.AreEqual(expected, result, "overlap"); } + /// + /// Test. + /// [TestMethod] public void TestOverlap5() { @@ -1824,6 +2205,9 @@ public void TestOverlap5() Assert.AreEqual(expected, result, "overlap"); } + /// + /// Test. + /// [TestMethod] public void TestOverlap6() { @@ -1839,6 +2223,9 @@ public void TestOverlap6() #region Examples + /// + /// Test. + /// [TestMethod] public void Example1() { @@ -1853,6 +2240,9 @@ public void Example1() Console.WriteLine("Cidr : {0}", ipnetwork.Cidr); } + /// + /// Test. + /// [TestMethod] public void Example2() { @@ -1881,6 +2271,9 @@ public void Example2() Console.WriteLine("{0} overlap {1} : {2}", ipnetwork, ipnetwork3, overlap2); } + /// + /// Test. + /// [TestMethod] public void Example4() { @@ -1899,6 +2292,9 @@ public void Example4() } } + /// + /// Test. + /// [TestMethod] public void Example5() { @@ -1909,6 +2305,9 @@ public void Example5() Console.WriteLine("{0} + {1} = {2}", ipnetwork1, ipnetwork2, ipnetwork3[0]); } + /// + /// Test. + /// [TestMethod] public void Example6() { @@ -1924,6 +2323,9 @@ public void Example6() Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress2, contains2); } + /// + /// Test. + /// [TestMethod] public void Example8() { @@ -1936,6 +2338,9 @@ public void Example8() } } + /// + /// Test. + /// [TestMethod] public void Example11() { @@ -1952,6 +2357,9 @@ public void Example11() #region ToString + /// + /// Test. + /// [TestMethod] public void TestToString() { @@ -1962,6 +2370,9 @@ public void TestToString() Assert.AreEqual(expected, result, "ToString"); } + /// + /// Test. + /// [TestMethod] public void TestToString1() { @@ -1972,6 +2383,9 @@ public void TestToString1() Assert.AreEqual(expected, result, "ToString"); } + /// + /// Test. + /// [TestMethod] public void TestToString2() { @@ -1982,6 +2396,9 @@ public void TestToString2() Assert.AreEqual(expected, result, "ToString"); } + /// + /// Test. + /// [TestMethod] public void TestToString3() { @@ -1996,6 +2413,9 @@ public void TestToString3() #region Subnet + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestSubnet3() @@ -2006,6 +2426,9 @@ public void TestSubnet3() IPNetworkCollection subnets = ipnetwork.Subnet(cidr); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentException))] public void TestSubnet4() @@ -2016,6 +2439,9 @@ public void TestSubnet4() IPNetworkCollection subnets = ipnetwork.Subnet(cidr); } + /// + /// Test. + /// [TestMethod] public void TestSubnet5() { @@ -2028,6 +2454,9 @@ public void TestSubnet5() Assert.AreEqual("1:1:1:1:8000::/65", subnets[1].ToString(), "subnet2"); } + /// + /// Test. + /// [TestMethod] public void TestSubnet6() { @@ -2054,6 +2483,9 @@ public void TestSubnet6() Assert.AreEqual("1:1:1:1:f000::/68", subnets[15].ToString(), "subnet16"); } + /// + /// Test. + /// [TestMethod] public void TestSubnet7() { @@ -2066,6 +2498,9 @@ public void TestSubnet7() Assert.AreEqual("1:1:1:1:ff00::/72", subnets[255].ToString(), "subnet256"); } + /// + /// Test. + /// [TestMethod] public void TestSubnet9() { @@ -2079,6 +2514,9 @@ public void TestSubnet9() Assert.AreEqual("2001:db08:1:1:ffff:ffff:ffff:ffff/128", subnets[count - 1].ToString(), "last"); } + /// + /// Test. + /// [TestMethod] public void TestSubnet10() { @@ -2093,6 +2531,9 @@ public void TestSubnet10() Assert.AreEqual("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128", subnets[count - 1].ToString(), "last"); } + /// + /// Test. + /// [TestMethod] public void TestSubnet12() { @@ -2107,6 +2548,9 @@ public void TestSubnet12() } } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestSubnet13() @@ -2117,6 +2561,9 @@ public void TestSubnet13() IPNetwork2 error = subnets[1000]; } + /// + /// Test. + /// [TestMethod] public void TestSubnet14() { @@ -2137,6 +2584,9 @@ public void TestSubnet14() #region TrySubnet + /// + /// Test. + /// [TestMethod] public void TestTrySubnet3() { @@ -2149,6 +2599,9 @@ public void TestTrySubnet3() Assert.AreEqual(false, subnetted, "subnetted"); } + /// + /// Test. + /// [TestMethod] public void TestTrySubnet4() { @@ -2161,6 +2614,9 @@ public void TestTrySubnet4() Assert.AreEqual(false, subnetted, "subnetted"); } + /// + /// Test. + /// [TestMethod] public void TestTrySubnet5() { @@ -2176,6 +2632,9 @@ public void TestTrySubnet5() Assert.AreEqual("2001:db8:0:0:8000::/65", subnets[1].ToString(), "subnet2"); } + /// + /// Test. + /// [TestMethod] public void TestTrySubnet6() { @@ -2209,6 +2668,9 @@ public void TestTrySubnet6() #region TrySupernet + /// + /// Test try supernet. + /// [TestMethod] public void TestTrySupernet1() { @@ -2223,6 +2685,9 @@ public void TestTrySupernet1() Assert.AreEqual(supernetExpected, supernet, "supernet"); } + /// + /// Test. + /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestTrySupernet2() @@ -2235,6 +2700,9 @@ public void TestTrySupernet2() #pragma warning restore 0618 } + /// + /// Test. + /// [TestMethod] public void TestTrySupernet3() { @@ -2249,6 +2717,9 @@ public void TestTrySupernet3() Assert.AreEqual(parsed, result, "parsed"); } + /// + /// Test. + /// [TestMethod] public void TestTrySupernet4() { @@ -2263,6 +2734,9 @@ public void TestTrySupernet4() Assert.AreEqual(parsed, result, "parsed"); } + /// + /// Test. + /// [TestMethod] public void TestTrySupernet5() { @@ -2277,6 +2751,9 @@ public void TestTrySupernet5() Assert.AreEqual(parsed, result, "parsed"); } + /// + /// Test. + /// [TestMethod] public void TestTrySupernet6() { @@ -2291,6 +2768,9 @@ public void TestTrySupernet6() Assert.AreEqual(parsed, result, "parsed"); } + /// + /// Test. + /// [TestMethod] public void TestTrySupernet8() { @@ -2305,6 +2785,9 @@ public void TestTrySupernet8() Assert.AreEqual(parsed, result, "parsed"); } + /// + /// Test. + /// [TestMethod] public void TestTrySupernet9() { @@ -2321,6 +2804,9 @@ public void TestTrySupernet9() Assert.AreEqual(parsed, result, "parsed"); } + /// + /// Test. + /// [TestMethod] public void TestTrySupernet10() { @@ -2336,6 +2822,9 @@ public void TestTrySupernet10() Assert.AreEqual(parsed, result, "parsed"); } + /// + /// Test. + /// [TestMethod] public void TestTrySupernet11() { @@ -2353,6 +2842,9 @@ public void TestTrySupernet11() #region TryGuessCidr + /// + /// Test TryGuessCidrNull + /// [TestMethod] public void TestTryGuessCidrNull() { @@ -2363,6 +2855,9 @@ public void TestTryGuessCidrNull() Assert.AreEqual(0, cidr, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryGuessCidr1() { @@ -2373,6 +2868,9 @@ public void TestTryGuessCidr1() Assert.AreEqual(64, cidr, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TestTryGuessCidr2() { @@ -2387,6 +2885,9 @@ public void TestTryGuessCidr2() #region Count + /// + /// Test Total32 + /// [TestMethod] public void Total32() { @@ -2395,6 +2896,9 @@ public void Total32() Assert.AreEqual(total, network.Total, "Total"); } + /// + /// Test. + /// [TestMethod] public void Total31() { @@ -2403,6 +2907,9 @@ public void Total31() Assert.AreEqual(total, network.Total, "Total"); } + /// + /// Test. + /// [TestMethod] public void Total30() { @@ -2411,6 +2918,9 @@ public void Total30() Assert.AreEqual(total, network.Total, "Total"); } + /// + /// Test. + /// [TestMethod] public void Total24() { @@ -2419,6 +2929,9 @@ public void Total24() Assert.AreEqual(total, network.Total, "Total"); } + /// + /// Test. + /// [TestMethod] public void Total16() { @@ -2427,6 +2940,9 @@ public void Total16() Assert.AreEqual(total, network.Total, "Total"); } + /// + /// Test. + /// [TestMethod] public void Total8() { @@ -2435,6 +2951,9 @@ public void Total8() Assert.AreEqual(total, network.Total, "Total"); } + /// + /// Test. + /// [TestMethod] public void Total0() { @@ -2447,6 +2966,9 @@ public void Total0() #region Usable + /// + /// Test Usable32 + /// [TestMethod] public void Usable32() { @@ -2455,6 +2977,9 @@ public void Usable32() Assert.AreEqual(usable, network.Usable, "Usable"); } + /// + /// Test. + /// [TestMethod] public void Usable31() { @@ -2463,6 +2988,9 @@ public void Usable31() Assert.AreEqual(usable, network.Usable, "Usable"); } + /// + /// Test. + /// [TestMethod] public void Usable30() { @@ -2471,6 +2999,9 @@ public void Usable30() Assert.AreEqual(usable, network.Usable, "Usable"); } + /// + /// Test. + /// [TestMethod] public void Usable24() { @@ -2479,6 +3010,9 @@ public void Usable24() Assert.AreEqual(usable, network.Usable, "Usable"); } + /// + /// Test. + /// [TestMethod] public void Usable16() { @@ -2487,6 +3021,9 @@ public void Usable16() Assert.AreEqual(usable, network.Usable, "Usable"); } + /// + /// Test. + /// [TestMethod] public void Usable8() { @@ -2495,6 +3032,9 @@ public void Usable8() Assert.AreEqual(usable, network.Usable, "Usable"); } + /// + /// Test. + /// [TestMethod] public void Usable0() { @@ -2507,6 +3047,9 @@ public void Usable0() #region TryParseCidr + /// + /// Test TryParseCidr1. + /// [TestMethod] public void TryParseCidr1() { @@ -2519,6 +3062,9 @@ public void TryParseCidr1() Assert.AreEqual(result, cidr, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TryParseCidr2() { @@ -2532,6 +3078,9 @@ public void TryParseCidr2() Assert.AreEqual(result, cidr, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TryParseCidr33() { @@ -2545,6 +3094,9 @@ public void TryParseCidr33() Assert.AreEqual(result, cidr, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TryParseCidr128() { @@ -2558,6 +3110,9 @@ public void TryParseCidr128() Assert.AreEqual(result, cidr, "cidr"); } + /// + /// Test. + /// [TestMethod] public void TryParseCidr129() { diff --git a/src/TestProject/SerializeDataContractTest.cs b/src/TestProject/SerializeDataContractTest.cs index c68ec720..5c267173 100644 --- a/src/TestProject/SerializeDataContractTest.cs +++ b/src/TestProject/SerializeDataContractTest.cs @@ -4,9 +4,15 @@ namespace TestProject; +/// +/// Test serialization with DataContractSerializeHelper. +/// [TestClass] public class SerializeDataContractTest { + /// + /// Test serilaization. + /// [TestMethod] public void Test_Serialize_DataContract() { @@ -17,7 +23,10 @@ public void Test_Serialize_DataContract() $"{Environment.NewLine} 10.0.0.0/8{Environment.NewLine}"; Assert.AreEqual(expected, result); } - + + /// + /// Test Deserilaization. + /// [TestMethod] public void Test_Deserialize_DataContract() { @@ -29,6 +38,9 @@ public void Test_Deserialize_DataContract() Assert.AreEqual(ipnetwork, result); } + /// + /// Test empty constructor. + /// [TestMethod] public void Test_Empty_Constructor() { diff --git a/src/TestProject/SerializeJsonTest.cs b/src/TestProject/SerializeJsonTest.cs index 613d5272..35ed1106 100644 --- a/src/TestProject/SerializeJsonTest.cs +++ b/src/TestProject/SerializeJsonTest.cs @@ -5,9 +5,15 @@ namespace TestProject; +/// +/// Test. +/// [TestClass] public class SerializeJsonTest { + /// + /// Test. + /// [TestMethod] public void Test_Serialize_Json() { @@ -19,6 +25,9 @@ public void Test_Serialize_Json() Assert.AreEqual(expected, result); } + /// + /// Test. + /// [TestMethod] public void Test_Deserialize_Json() { @@ -30,6 +39,9 @@ public void Test_Deserialize_Json() Assert.AreEqual(expected, result); } + /// + /// Test. + /// [TestMethod] public void Test_Serialize_Deserialize_Json() { @@ -41,6 +53,9 @@ public void Test_Serialize_Deserialize_Json() Assert.AreEqual(ipnetwork, result); } + /// + /// Test. + /// [TestMethod] [TestCategory("LongRunning")] public void Test_1_000_000_Serialize_Json() @@ -55,6 +70,9 @@ public void Test_1_000_000_Serialize_Json() // 3.06 seconds(Ad hoc). } + /// + /// Test. + /// [TestMethod] [TestCategory("LongRunning")] public void Test_1_000_000_Deserialize_Json() @@ -69,6 +87,9 @@ public void Test_1_000_000_Deserialize_Json() // 10.20 seconds(Ad hoc). } + /// + /// Test. + /// [TestMethod] [TestCategory("LongRunning")] public void Test_1_000_000_Serialize_Deserialize_Json() diff --git a/src/TestProject/SerializeXmlTest.cs b/src/TestProject/SerializeXmlTest.cs index 5a3725f3..c2101375 100644 --- a/src/TestProject/SerializeXmlTest.cs +++ b/src/TestProject/SerializeXmlTest.cs @@ -4,9 +4,15 @@ namespace TestProject; +/// +/// Test. +/// [TestClass] public class SerializeXmlTest { + /// + /// Test. + /// [TestMethod] public void Test_Serialize_Xml() { @@ -25,6 +31,9 @@ public void Test_Serialize_Xml() Assert.IsTrue(ok, result); } + /// + /// Test. + /// [TestMethod] public void Test_Deserialize_Xml() { @@ -42,6 +51,9 @@ public void Test_Deserialize_Xml() Assert.AreEqual(expected, result); } + /// + /// Test. + /// [TestMethod] public void Test_Serialize_Deserialize_Xml() { @@ -61,6 +73,9 @@ public void Test_Serialize_Deserialize_Xml() Assert.AreEqual(ipnetwork, ipnetwork2); } + /// + /// Test. + /// [TestMethod] [TestCategory("LongRunning")] public void Test_1_000_000_Serialize_Xml() @@ -79,6 +94,9 @@ public void Test_1_000_000_Serialize_Xml() // 5.13 seconds(Ad hoc). } + /// + /// Test. + /// [TestMethod] [TestCategory("LongRunning")] public void Test_1_000_000_Deserialize_Xml() @@ -101,6 +119,9 @@ public void Test_1_000_000_Deserialize_Xml() // 17.98 seconds(Ad hoc). } + /// + /// Test. + /// [TestMethod] [TestCategory("LongRunning")] public void Test_1_000_000_Serialize_Deserialize_Xml() diff --git a/src/TestProject/TestProject.csproj b/src/TestProject/TestProject.csproj index 4810e76e..1a9ec3e4 100644 --- a/src/TestProject/TestProject.csproj +++ b/src/TestProject/TestProject.csproj @@ -4,7 +4,7 @@ net9.0 false True - false + true ..\System.Net.IPNetwork.snk true 3.1.0 diff --git a/src/TestProject/TryParseUnitTest.cs b/src/TestProject/TryParseUnitTest.cs index 2ac1fde0..6fda831b 100644 --- a/src/TestProject/TryParseUnitTest.cs +++ b/src/TestProject/TryParseUnitTest.cs @@ -12,6 +12,9 @@ public class TryParseUnitTest { #region Issue294 + /// + /// Test. + /// [TestMethod] public void Test_IPNetwork_TryParse_Issue294() { @@ -23,6 +26,9 @@ public void Test_IPNetwork_TryParse_Issue294() #region TryParse IPV4 + /// + /// Test. + /// [TestMethod] public void TestTryParseIPAddressNetmaskAne2() { @@ -33,6 +39,9 @@ public void TestTryParseIPAddressNetmaskAne2() Assert.AreEqual(null, ipnet, "ipnet"); } + /// + /// Test. + /// [TestMethod] public void TestTryParseIPAddressNetmaskAne3() { @@ -42,6 +51,9 @@ public void TestTryParseIPAddressNetmaskAne3() Assert.AreEqual(null, ipnet, "ipnet"); } + /// + /// Test. + /// [TestMethod] public void TestTryParseIPAddressNetmaskAne4() { @@ -51,6 +63,9 @@ public void TestTryParseIPAddressNetmaskAne4() Assert.AreEqual(null, ipnet, "ipnet"); } + /// + /// Test. + /// [TestMethod] public void TestTryParseIPAddressNetmaskAne5() { @@ -62,6 +77,9 @@ public void TestTryParseIPAddressNetmaskAne5() Assert.AreEqual(null, ipnet, "ipnet"); } + /// + /// Test. + /// [TestMethod] public void TestTryParseIPAddressNetmaskAne6() { @@ -71,6 +89,9 @@ public void TestTryParseIPAddressNetmaskAne6() Assert.AreEqual(null, ipnet, "ipnet"); } + /// + /// Test. + /// [TestMethod] public void TestTryParseIPAddressNetmaskAne7() { @@ -80,6 +101,9 @@ public void TestTryParseIPAddressNetmaskAne7() Assert.AreEqual(null, ipnet, "ipnet"); } + /// + /// Test. + /// [TestMethod] public void TestTryParseIPAddressNetmaskAne8() { @@ -89,6 +113,9 @@ public void TestTryParseIPAddressNetmaskAne8() Assert.AreEqual(null, ipnet, "ipnet"); } + /// + /// Test. + /// [TestMethod] public void TestTryParseIPAddressNetmaskAne9() { @@ -98,6 +125,9 @@ public void TestTryParseIPAddressNetmaskAne9() Assert.AreEqual(null, ipnet, "ipnet"); } + /// + /// Test. + /// [TestMethod] public void TestTryParseIPAddressNetmaskAne10() { @@ -107,6 +137,9 @@ public void TestTryParseIPAddressNetmaskAne10() Assert.AreEqual(null, ipnet, "ipnet"); } + /// + /// Test. + /// [TestMethod] public void TestTryParseIPAddressNetmaskAne11() { @@ -116,6 +149,9 @@ public void TestTryParseIPAddressNetmaskAne11() Assert.AreEqual(null, ipnet, "ipnet"); } + /// + /// Test. + /// [TestMethod] public void TestTryParseIPAddressNetmask() { @@ -141,6 +177,9 @@ public void TestTryParseIPAddressNetmask() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test. + /// [TestMethod] public void TestTryParseString1() { @@ -166,6 +205,9 @@ public void TestTryParseString1() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test. + /// [TestMethod] public void TestTryParseString2() { @@ -191,6 +233,9 @@ public void TestTryParseString2() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test. + /// [TestMethod] public void TestTryParseString3() { @@ -216,6 +261,9 @@ public void TestTryParseString3() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test. + /// [TestMethod] public void TestTryParseString4() { @@ -241,6 +289,9 @@ public void TestTryParseString4() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test. + /// [TestMethod] public void TestTryParseString5() { @@ -266,6 +317,9 @@ public void TestTryParseString5() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } + /// + /// Test. + /// [TestMethod] public void TestTryParseStringAe1() { @@ -275,6 +329,9 @@ public void TestTryParseStringAe1() Assert.AreEqual(false, parsed, "parsed"); } + /// + /// Test. + /// [TestMethod] public void TestTryParseStringAe2() { @@ -284,6 +341,9 @@ public void TestTryParseStringAe2() Assert.AreEqual(false, parsed, "parsed"); } + /// + /// Test. + /// [TestMethod] public void TestTryParseStringAne1() { @@ -297,6 +357,9 @@ public void TestTryParseStringAne1() #region TryParse + /// + /// Test. + /// [TestMethod] public void Test_TryParse_InvalidIpv6_return_valid_ipv6network() { @@ -308,6 +371,12 @@ public void Test_TryParse_InvalidIpv6_return_valid_ipv6network() Assert.AreEqual(ipnetwork1, ipnetwork2, "ipnetwork1 == ipnetwork2"); } + /// + /// Test. + /// + /// The network to parse. + /// To sanitize or not. + /// Parse should succeed. [DataTestMethod] [DataRow("1.1.1.1/1", true, true)] [DataRow("1.1.1.1/1", false, true)] @@ -328,6 +397,11 @@ public void Test_TryParse(string ipnetwork, bool sanitanize, bool parsed) Assert.AreEqual(parsed, result, "parsed1"); } + /// + /// Test parse. + /// + /// The IPAdress to parse. + /// Should be parsed. [DataTestMethod] [DataRow("1.1.1.1", true)] [DataRow("::", true)] diff --git a/src/TestProject/WildcardMaskIPv4UnitTest.cs b/src/TestProject/WildcardMaskIPv4UnitTest.cs index 54cf852a..555be814 100644 --- a/src/TestProject/WildcardMaskIPv4UnitTest.cs +++ b/src/TestProject/WildcardMaskIPv4UnitTest.cs @@ -4,9 +4,18 @@ namespace TestProject; +/// +/// Test. +/// [TestClass] public class WildcardMaskIPv4UnitTest { + /// + /// Test. + /// + /// The cidr. + /// The resulting netmask. + /// And the resulting wildcard. [DataTestMethod] [DataRow(0, "0.0.0.0", "255.255.255.255")] [DataRow(32, "255.255.255.255", "0.0.0.0")] @@ -21,6 +30,11 @@ public void Test_WildcardMask_ipv4_mask(int cidr, string thenNetmask, string and Assert.AreEqual(andWildcardmask, wildcardmask, "wildcardmask"); } + /// + /// Test. + /// + /// The netmask. + /// The expected netmask. [DataTestMethod] [DataRow("255.255.255.255", "0.0.0.0")] [DataRow("255.255.255.254", "0.0.0.1")] @@ -66,6 +80,11 @@ public void Test_WildcardMask_ipv4(string netmask, string expected) Assert.AreEqual(expected, wildcardmask, "wildcardmask"); } + /// + /// Test. + /// + /// The cidr. + /// The resulting netmask. [DataTestMethod] [DataRow(32, "0.0.0.0")] [DataRow(31, "0.0.0.1")] diff --git a/src/TestProject/WildcardMaskIPv6UnitTest.cs b/src/TestProject/WildcardMaskIPv6UnitTest.cs index add194b6..d307b161 100644 --- a/src/TestProject/WildcardMaskIPv6UnitTest.cs +++ b/src/TestProject/WildcardMaskIPv6UnitTest.cs @@ -4,9 +4,15 @@ namespace TestProject; +/// +/// Test. +/// [TestClass] public class WildcardMaskIPv6UnitTest { + /// + /// Test. + /// [TestMethod] public void Test_WildcardMask_ipv6_mask_0() { @@ -19,6 +25,9 @@ public void Test_WildcardMask_ipv6_mask_0() Assert.AreEqual("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", wildcardmask, "wildcardmask"); } + /// + /// Test. + /// [TestMethod] public void Test_WildcardMask_ipv6_mask_128() { @@ -31,6 +40,11 @@ public void Test_WildcardMask_ipv6_mask_128() Assert.AreEqual("::", wildcardmask, "wildcardmask"); } + /// + /// Test. + /// + /// The netmask. + /// The resulting netmask. [DataTestMethod] [DataRow("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", "::")] [DataRow("ffff:ffff:ffff:ffff::", "::ffff:ffff:ffff:ffff")] @@ -46,6 +60,11 @@ public void Test_WildcardMask_ipv6(string netmask, string expected) Assert.AreEqual(expected, wildcardmask, "wildcardmask"); } + /// + /// Test. + /// + /// The cidr. + /// The resulting netmask. [DataTestMethod] [DataRow(128, "::")] [DataRow(127, "::1")] From 9507714a368caa78567e189b9d55249d8a2de4be Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sat, 29 Mar 2025 21:49:49 +0100 Subject: [PATCH 03/25] Fix: documentation and warnings --- src/ConsoleApplication/Program.cs | 6 +- src/System.Net.IPNetwork/CidrGuess.cs | 8 +- src/System.Net.IPNetwork/ICidrGuess.cs | 4 +- .../IPAddressCollection.cs | 154 +- src/System.Net.IPNetwork/IPNetwork2.cs | 262 +- .../IPNetworkCollection.cs | 54 +- src/TestProject/BigIntegerBitWiseUnitTest.cs | 19 +- src/TestProject/BigIntegerToUnitTest.cs | 5 +- src/TestProject/ConsoleUnitTest.cs | 1 - .../DataContractSerializeHelper.cs | 18 +- src/TestProject/GetHashCodeUnitTest.cs | 1 - src/TestProject/GlobalUsings.cs | 5 +- .../IPAddressCollectionUnitTest.cs | 1 - .../IPNetworkTest/IPNetworkResizeTests.cs | 2 +- .../IPNetworkTest/IPNetworkSupernetTests.cs | 163 +- .../IPNetworkTest/IPNetworkTryParseTests.cs | 2 +- .../IPNetworkTest/IPNetworkWideSubnetTests.cs | 2 +- src/TestProject/IPNetworkV6UnitTest.cs | 3064 ++++++++--------- src/TestProject/SerializeDataContractTest.cs | 30 +- src/TestProject/SerializeJsonTest.cs | 1 - src/TestProject/TryParseUnitTest.cs | 390 +-- 21 files changed, 2117 insertions(+), 2075 deletions(-) diff --git a/src/ConsoleApplication/Program.cs b/src/ConsoleApplication/Program.cs index 722cd691..f27afd33 100644 --- a/src/ConsoleApplication/Program.cs +++ b/src/ConsoleApplication/Program.cs @@ -4,21 +4,19 @@ namespace System.Net; +using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Numerics; using System.Reflection; using Gnu.Getopt; - -using System.Collections.Generic; - /// /// Console app for IPNetwork. /// public class Program { - private static readonly Dictionary Args = new(); + private static readonly Dictionary Args = new (); private static readonly ArgParsed[] ArgsList = new[] { diff --git a/src/System.Net.IPNetwork/CidrGuess.cs b/src/System.Net.IPNetwork/CidrGuess.cs index f1c86888..a2a47b2d 100644 --- a/src/System.Net.IPNetwork/CidrGuess.cs +++ b/src/System.Net.IPNetwork/CidrGuess.cs @@ -12,13 +12,13 @@ public static class CidrGuess /// /// Gets classFull guess. /// - public static ICidrGuess ClassFull { get => _cidr_classfull.Value; } + public static ICidrGuess ClassFull { get => CidrClassfull.Value; } /// /// Gets classLess guess. /// - public static ICidrGuess ClassLess { get => _cidr_classless.Value; } + public static ICidrGuess ClassLess { get => CidrClassless.Value; } - private static readonly Lazy _cidr_classless = new(() => new CidrClassLess()); - private static readonly Lazy _cidr_classfull = new(() => new CidrClassFull()); + private static readonly Lazy CidrClassless = new (() => new CidrClassLess()); + private static readonly Lazy CidrClassfull = new (() => new CidrClassFull()); } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/ICidrGuess.cs b/src/System.Net.IPNetwork/ICidrGuess.cs index 2b061c2f..78d6b146 100644 --- a/src/System.Net.IPNetwork/ICidrGuess.cs +++ b/src/System.Net.IPNetwork/ICidrGuess.cs @@ -5,12 +5,12 @@ namespace System.Net; /// -/// +/// An interface to have multiple implemntatino ao CIDR Guesser. /// public interface ICidrGuess { /// - /// + /// Try to guess the CIDR. /// /// An ip adress to guess the ip network CIDR. /// A byte representing the netmask in cidr format (/24). diff --git a/src/System.Net.IPNetwork/IPAddressCollection.cs b/src/System.Net.IPNetwork/IPAddressCollection.cs index db1598fd..ef26e041 100644 --- a/src/System.Net.IPNetwork/IPAddressCollection.cs +++ b/src/System.Net.IPNetwork/IPAddressCollection.cs @@ -17,6 +17,7 @@ public enum FilterEnum /// Every IPAdresses are returned /// All, + /// /// Returns only usable IPAdresses /// @@ -28,16 +29,21 @@ public enum FilterEnum /// public class IPAddressCollection : IEnumerable, IEnumerator { - private readonly IPNetwork2 _ipnetwork; - private readonly FilterEnum _filter; - private BigInteger _enumerator; + private readonly IPNetwork2 ipnetwork; + private readonly FilterEnum filter; + private BigInteger enumerator; + /// + /// Initializes a new instance of the class. + /// + /// The network. + /// The filter. internal IPAddressCollection(IPNetwork2 ipnetwork, FilterEnum filter) { - this._ipnetwork = ipnetwork; - this._filter = filter; - this.Reset(); - } + this.ipnetwork = ipnetwork; + this.filter = filter; + this.Reset(); + } #region Count, Array, Enumerator @@ -51,19 +57,19 @@ public BigInteger Count { get { - BigInteger count = this._ipnetwork.Total; - if (this._filter == FilterEnum.Usable) - { - count -= 2; - } - - if (count < 0) - { - count = 0; - } - - return count; + BigInteger count = this.ipnetwork.Total; + if (this.filter == FilterEnum.Usable) + { + count -= 2; } + + if (count < 0) + { + count = 0; + } + + return count; + } } /// @@ -76,22 +82,22 @@ public IPAddress this[BigInteger i] { get { - if (i >= this.Count) - { - throw new ArgumentOutOfRangeException("i"); - } - - byte width = this._ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetwork ? (byte)32 : (byte)128; - IPNetworkCollection ipn = this._ipnetwork.Subnet(width); + if (i >= this.Count) + { + throw new ArgumentOutOfRangeException("i"); + } - BigInteger index = i; - if (this._filter == FilterEnum.Usable) - { - index++; - } + byte width = this.ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetwork ? (byte)32 : (byte)128; + IPNetworkCollection ipn = this.ipnetwork.Subnet(width); - return ipn[index].Network; + BigInteger index = i; + if (this.filter == FilterEnum.Usable) + { + index++; } + + return ipn[index].Network; + } } #endregion @@ -106,101 +112,107 @@ public IPAddress Current { get { - return this[this._enumerator]; - } + return this[this.enumerator]; + } } + /// object IEnumerator.Current { get { - return this.Current; - } + return this.Current; + } } /// public bool MoveNext() { - this._enumerator++; - if (this._enumerator >= this.Count) - { - return false; - } - - return true; + this.enumerator++; + if (this.enumerator >= this.Count) + { + return false; } + return true; + } + /// public void Reset() { - this._enumerator = -1; - } + this.enumerator = -1; + } /// public void Dispose() { - // nothing to dispose - } + // nothing to dispose + } + #endregion #region Enumeration + + /// IEnumerator IEnumerable.GetEnumerator() { - return new Enumerator(this); - } + return new Enumerator(this); + } + /// IEnumerator IEnumerable.GetEnumerator() { - return new Enumerator(this); - } + return new Enumerator(this); + } private struct Enumerator : IEnumerator { - private readonly IPAddressCollection _collection; - private BigInteger _enumerator; + private readonly IPAddressCollection collection; + private BigInteger enumerator; object IEnumerator.Current { get { - return this.Current; - } + return this.Current; + } } public IPAddress Current { get { - return this._collection[this._enumerator]; - } + return this.collection[this.enumerator]; + } } public void Dispose() { - // nothing to dispose - } + // nothing to dispose + } public bool MoveNext() { - this._enumerator++; - if (this._enumerator >= this._collection.Count) - { - return false; - } - - return true; + this.enumerator++; + if (this.enumerator >= this.collection.Count) + { + return false; } + return true; + } + public void Reset() { - this._enumerator = -1; - } + this.enumerator = -1; + } public Enumerator(IPAddressCollection collection) { - this._collection = collection; - this._enumerator = -1; - } + this.collection = collection; + this.enumerator = -1; + } } + #endregion } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2.cs b/src/System.Net.IPNetwork/IPNetwork2.cs index 197d010a..4272ed84 100644 --- a/src/System.Net.IPNetwork/IPNetwork2.cs +++ b/src/System.Net.IPNetwork/IPNetwork2.cs @@ -21,13 +21,13 @@ public sealed class IPNetwork2 : IComparable, ISerializable { #region properties - private readonly object _sync = new(); - private readonly int _hashCode; - private BigInteger _ipaddress; - private byte _cidr; - private BigInteger? _cachedBroadcast; + private readonly object sync = new (); + private readonly int hashCode; + private BigInteger ipaddress; + private byte cidr; + private BigInteger? cachedBroadcast; - private AddressFamily _family; + private AddressFamily family; /// /// Gets or sets the value of the IPNetwork property. @@ -43,12 +43,12 @@ public string Value set { var ipnetwork = IPNetwork2.Parse(value); - this._ipaddress = ipnetwork._ipaddress; - this._family = ipnetwork._family; - this._cidr = ipnetwork._cidr; - lock (_sync) + this.ipaddress = ipnetwork.ipaddress; + this.family = ipnetwork.family; + this.cidr = ipnetwork.cidr; + lock (this.sync) { - this._cachedBroadcast = null; + this.cachedBroadcast = null; } } } @@ -56,15 +56,15 @@ public string Value #endregion #region accessors - + /// /// Gets the network address calculated by applying the subnet mask to the IP address. /// - internal BigInteger _network + internal BigInteger InternalNetwork { get { - BigInteger uintNetwork = this._ipaddress & this._netmask; + BigInteger uintNetwork = this.ipaddress & this.InternalNetmask; return uintNetwork; } } @@ -76,7 +76,7 @@ public IPAddress Network { get { - return IPNetwork2.ToIPAddress(this._network, this._family); + return IPNetwork2.ToIPAddress(this.InternalNetwork, this.family); } } @@ -87,18 +87,18 @@ public AddressFamily AddressFamily { get { - return this._family; + return this.family; } } /// /// Gets the netmask as a BigInteger representation based on the CIDR and address family. /// - internal BigInteger _netmask + internal BigInteger InternalNetmask { get { - return IPNetwork2.ToUint(this._cidr, this._family); + return IPNetwork2.ToUint(this.cidr, this.family); } } @@ -109,34 +109,34 @@ public IPAddress Netmask { get { - return IPNetwork2.ToIPAddress(this._netmask, this._family); + return IPNetwork2.ToIPAddress(this.InternalNetmask, this.family); } } /// /// Gets the broadcast address calculated from the network address and the netmask. /// - internal BigInteger _broadcast + internal BigInteger InternalBroadcast { get { - var cached = this._cachedBroadcast; + var cached = this.cachedBroadcast; if (cached != null) { return cached.Value; } - lock (_sync) + lock (this.sync) { - var cached2 = this._cachedBroadcast; + var cached2 = this.cachedBroadcast; if (cached2 != null) { return cached2.Value; } - var network = this._network; - var computed = CreateBroadcast(ref network, this._netmask, this._family); - this._cachedBroadcast = computed; + var network = this.InternalNetwork; + var computed = CreateBroadcast(ref network, this.InternalNetmask, this.family); + this.cachedBroadcast = computed; return computed; } } @@ -149,12 +149,12 @@ public IPAddress Broadcast { get { - if (this._family == Sockets.AddressFamily.InterNetworkV6) + if (this.family == Sockets.AddressFamily.InterNetworkV6) { return null; } - return IPNetwork2.ToIPAddress(this._broadcast, this._family); + return IPNetwork2.ToIPAddress(this.InternalBroadcast, this.family); } } @@ -165,10 +165,12 @@ public IPAddress FirstUsable { get { - BigInteger first = this._family == Sockets.AddressFamily.InterNetworkV6 - ? this._network - : (this.Usable <= 0) ? this._network : this._network + 1; - return IPNetwork2.ToIPAddress(first, this._family); + BigInteger first = this.family == Sockets.AddressFamily.InterNetworkV6 + ? this.InternalNetwork + : (this.Usable <= 0) + ? this.InternalNetwork + : this.InternalNetwork + 1; + return IPNetwork2.ToIPAddress(first, this.family); } } @@ -179,10 +181,12 @@ public IPAddress LastUsable { get { - BigInteger last = this._family == Sockets.AddressFamily.InterNetworkV6 - ? this._broadcast - : (this.Usable <= 0) ? this._network : this._broadcast - 1; - return IPNetwork2.ToIPAddress(last, this._family); + BigInteger last = this.family == Sockets.AddressFamily.InterNetworkV6 + ? this.InternalBroadcast + : (this.Usable <= 0) + ? this.InternalNetwork + : this.InternalBroadcast - 1; + return IPNetwork2.ToIPAddress(last, this.family); } } @@ -193,14 +197,14 @@ public BigInteger Usable { get { - if (this._family == Sockets.AddressFamily.InterNetworkV6) + if (this.family == Sockets.AddressFamily.InterNetworkV6) { return this.Total; } byte[] mask = new byte[] { 0xff, 0xff, 0xff, 0xff, 0x00 }; var bmask = new BigInteger(mask); - BigInteger usableIps = (this._cidr > 30) ? 0 : ((bmask >> this._cidr) - 1); + BigInteger usableIps = (this.cidr > 30) ? 0 : ((bmask >> this.cidr) - 1); return usableIps; } } @@ -212,8 +216,8 @@ public BigInteger Total { get { - int max = this._family == Sockets.AddressFamily.InterNetwork ? 32 : 128; - var count = BigInteger.Pow(2, max - this._cidr); + int max = this.family == Sockets.AddressFamily.InterNetwork ? 32 : 128; + var count = BigInteger.Pow(2, max - this.cidr); return count; } } @@ -225,7 +229,7 @@ public byte Cidr { get { - return this._cidr; + return this.cidr; } } @@ -240,14 +244,14 @@ public byte Cidr /// The address family of the network. /// The CIDR (Classless Inter-Domain Routing) notation of the network. #if TRAVISCI - public + public #else - internal + internal #endif IPNetwork2(BigInteger ipaddress, AddressFamily family, byte cidr) { this.Init(ipaddress, family, cidr); - this._hashCode = this.ComputeHashCode(); + this.hashCode = this.ComputeHashCode(); } /// @@ -267,7 +271,7 @@ public IPNetwork2(IPAddress ipaddress, byte cidr) BigInteger uintIpAddress = ToBigInteger(ipaddress); this.Init(uintIpAddress, ipaddress.AddressFamily, cidr); - this._hashCode = this.ComputeHashCode(); + this.hashCode = this.ComputeHashCode(); } private void Init(BigInteger ipaddress, AddressFamily family, byte cidr) @@ -278,9 +282,9 @@ private void Init(BigInteger ipaddress, AddressFamily family, byte cidr) throw new ArgumentOutOfRangeException("cidr"); } - this._ipaddress = ipaddress; - this._family = family; - this._cidr = cidr; + this.ipaddress = ipaddress; + this.family = family; + this.cidr = cidr; } #endregion @@ -697,11 +701,11 @@ private static void InternalParse(bool tryParse, string network, ICidrGuess cidr { throw new ArgumentNullException("network"); } - + ipnetwork = null; return; } - + if (args.Length == 1) { string cidrlessNetwork = args[0]; @@ -842,6 +846,7 @@ private static void InternalParse(bool tryParse, string ipaddress, byte cidr, ou IPNetwork2.InternalParse(tryParse, ip, mask, out ipnetwork); } + #endregion #region converters @@ -898,29 +903,29 @@ internal static void InternalToBigInteger(bool tryParse, IPAddress ipaddress, ou return; } -#if NET5_0 || NETSTANDARD2_1 - byte[] bytes = ipaddress.AddressFamily == AddressFamily.InterNetwork ? new byte[4] : new byte[16]; - Span span = bytes.AsSpan(); - if (!ipaddress.TryWriteBytes(span, out _)) +#if NETSTANDARD2_1 + byte[] bytes = ipaddress.AddressFamily == AddressFamily.InterNetwork ? new byte[4] : new byte[16]; + Span span = bytes.AsSpan(); + if (!ipaddress.TryWriteBytes(span, out _)) + { + if (tryParse == false) { - if (tryParse == false) - { - throw new ArgumentException("ipaddress"); - } - - uintIpAddress = null; - return; + throw new ArgumentException("ipaddress"); } - uintIpAddress = new BigInteger(span, isUnsigned: true, isBigEndian: true); -#elif NET45 || NET46 || NET47 || NETSTANDARD20 - byte[] bytes = ipaddress.GetAddressBytes(); - bytes.AsSpan().Reverse(); + uintIpAddress = null; + return; + } + + uintIpAddress = new BigInteger(span, isUnsigned: true, isBigEndian: true); +#elif NETSTANDARD20 + byte[] bytes = ipaddress.GetAddressBytes(); + bytes.AsSpan().Reverse(); - // add trailing 0 to make unsigned - byte[] unsigned = new byte[bytes.Length + 1]; - Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); - uintIpAddress = new BigInteger(unsigned); + // add trailing 0 to make unsigned + byte[] unsigned = new byte[bytes.Length + 1]; + Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); + uintIpAddress = new BigInteger(unsigned); #else byte[] bytes = ipaddress.GetAddressBytes(); Array.Reverse(bytes); @@ -968,7 +973,7 @@ public static bool TryToUint(byte cidr, AddressFamily family, out BigInteger? ui /// A byte representing the netmask in cidr format (/24). /// Either IPv4 or IPv6. /// A number representing the netmask. -internal static void InternalToBigInteger(bool tryParse, byte cidr, AddressFamily family, out BigInteger? uintNetmask) + internal static void InternalToBigInteger(bool tryParse, byte cidr, AddressFamily family, out BigInteger? uintNetmask) { if (family == AddressFamily.InterNetwork && cidr > 32) { @@ -1233,6 +1238,7 @@ private static byte BitsSet(BigInteger netmask, AddressFamily family) /// /// A number representing the netmask to count bits from. /// The number of bytes set to 1. + [CLSCompliant(false)] public static uint BitsSet(IPAddress netmask) { var uintNetmask = IPNetwork2.ToBigInteger(netmask); @@ -1373,8 +1379,8 @@ public bool Contains(IPAddress contains) return false; } - BigInteger uintNetwork = this._network; - BigInteger uintBroadcast = this._broadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); + BigInteger uintNetwork = this.InternalNetwork; + BigInteger uintBroadcast = this.InternalBroadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); var uintAddress = IPNetwork2.ToBigInteger(contains); bool result = uintAddress >= uintNetwork @@ -1414,11 +1420,12 @@ public bool Contains(IPNetwork2 contains) throw new ArgumentNullException("contains"); } - BigInteger uintNetwork = this._network; - BigInteger uintBroadcast = this._broadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); + BigInteger uintNetwork = this.InternalNetwork; + BigInteger uintBroadcast = this.InternalBroadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); - BigInteger uintFirst = contains._network; - BigInteger uintLast = contains._broadcast; // CreateBroadcast(ref uintFirst, network2._netmask, network2._family); + BigInteger uintFirst = contains.InternalNetwork; + BigInteger + uintLast = contains.InternalBroadcast; // CreateBroadcast(ref uintFirst, network2._netmask, network2._family); bool result = uintFirst >= uintNetwork && uintLast <= uintBroadcast; @@ -1469,11 +1476,11 @@ public bool Overlap(IPNetwork2 network2) throw new ArgumentNullException("network2"); } - BigInteger uintNetwork = this._network; - BigInteger uintBroadcast = this._broadcast; + BigInteger uintNetwork = this.InternalNetwork; + BigInteger uintBroadcast = this.InternalBroadcast; - BigInteger uintFirst = network2._network; - BigInteger uintLast = network2._broadcast; + BigInteger uintFirst = network2.InternalNetwork; + BigInteger uintLast = network2.InternalBroadcast; bool overlap = (uintFirst >= uintNetwork && uintFirst <= uintBroadcast) @@ -1520,9 +1527,9 @@ public override string ToString() #region IANA block - private static readonly Lazy _iana_ablock_reserved = new(() => IPNetwork2.Parse("10.0.0.0/8")); - private static readonly Lazy _iana_bblock_reserved = new(() => IPNetwork2.Parse("172.16.0.0/12")); - private static readonly Lazy _iana_cblock_reserved = new(() => IPNetwork2.Parse("192.168.0.0/16")); + private static readonly Lazy IanaAblockReserved = new (() => IPNetwork2.Parse("10.0.0.0/8")); + private static readonly Lazy IanaBblockReserved = new (() => IPNetwork2.Parse("172.16.0.0/12")); + private static readonly Lazy IanaCblockReserved = new (() => IPNetwork2.Parse("192.168.0.0/16")); /// /// Gets 10.0.0.0/8. @@ -1532,7 +1539,7 @@ public static IPNetwork2 IANA_ABLK_RESERVED1 { get { - return _iana_ablock_reserved.Value; + return IanaAblockReserved.Value; } } @@ -1544,7 +1551,7 @@ public static IPNetwork2 IANA_BBLK_RESERVED1 { get { - return _iana_bblock_reserved.Value; + return IanaBblockReserved.Value; } } @@ -1556,7 +1563,7 @@ public static IPNetwork2 IANA_CBLK_RESERVED1 { get { - return _iana_cblock_reserved.Value; + return IanaCblockReserved.Value; } } @@ -1679,7 +1686,7 @@ public bool TrySubnet(byte cidr, out IPNetworkCollection ipnetworkCollection) /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. /// - /// + /// The network. /// A byte representing the CIDR to be used to subnet the current IPNetwork. /// The resulting subnetted IPNetwork. /// true if network was split successfully; otherwise, false. @@ -1714,7 +1721,7 @@ internal static void InternalSubnet(bool trySubnet, IPNetwork2 network, byte cid return; } - int maxCidr = network._family == Sockets.AddressFamily.InterNetwork ? 32 : 128; + int maxCidr = network.family == Sockets.AddressFamily.InterNetwork ? 32 : 128; if (cidr > maxCidr) { if (trySubnet == false) @@ -1765,7 +1772,7 @@ public IPNetwork2 Supernet(IPNetwork2 network2) /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. /// - /// + /// the network. /// The network to supernet with. /// A supernetted IP Network. [Obsolete("static Supernet is deprecated, please use instance Supernet.")] @@ -1797,7 +1804,7 @@ public bool TrySupernet(IPNetwork2 network2, out IPNetwork2 supernet) /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. /// - /// + /// the network. /// The network to supernet with. /// The resulting IPNetwork. /// true if network2 was supernetted successfully; otherwise, false. @@ -1819,7 +1826,11 @@ public static bool TrySupernet(IPNetwork2 network, IPNetwork2 network2, out IPNe /// The first IP network. /// The second IP network. /// The resulting supernet if the merge is successful; otherwise, null. - internal static void InternalSupernet(bool trySupernet, IPNetwork2 network1, IPNetwork2 network2, out IPNetwork2 supernet) + internal static void InternalSupernet( + bool trySupernet, + IPNetwork2 network1, + IPNetwork2 network2, + out IPNetwork2 supernet) { if (network1 == null) { @@ -1845,17 +1856,17 @@ internal static void InternalSupernet(bool trySupernet, IPNetwork2 network1, IPN if (network1.Contains(network2)) { - supernet = new IPNetwork2(network1._network, network1._family, network1.Cidr); + supernet = new IPNetwork2(network1.InternalNetwork, network1.family, network1.Cidr); return; } if (network2.Contains(network1)) { - supernet = new IPNetwork2(network2._network, network2._family, network2.Cidr); + supernet = new IPNetwork2(network2.InternalNetwork, network2.family, network2.Cidr); return; } - if (network1._cidr != network2._cidr) + if (network1.cidr != network2.cidr) { if (trySupernet == false) { @@ -1866,8 +1877,8 @@ internal static void InternalSupernet(bool trySupernet, IPNetwork2 network1, IPN return; } - IPNetwork2 first = (network1._network < network2._network) ? network1 : network2; - IPNetwork2 last = (network1._network > network2._network) ? network1 : network2; + IPNetwork2 first = (network1.InternalNetwork < network2.InternalNetwork) ? network1 : network2; + IPNetwork2 last = (network1.InternalNetwork > network2.InternalNetwork) ? network1 : network2; // Starting from here : // network1 and network2 have the same cidr, @@ -1875,7 +1886,7 @@ internal static void InternalSupernet(bool trySupernet, IPNetwork2 network1, IPN // network2 does not contain network1, // first is the lower subnet // last is the higher subnet - if ((first._broadcast + 1) != last._network) + if ((first.InternalBroadcast + 1) != last.InternalNetwork) { if (trySupernet == false) { @@ -1886,11 +1897,11 @@ internal static void InternalSupernet(bool trySupernet, IPNetwork2 network1, IPN return; } - BigInteger uintSupernet = first._network; - byte cidrSupernet = (byte)(first._cidr - 1); + BigInteger uintSupernet = first.InternalNetwork; + byte cidrSupernet = (byte)(first.cidr - 1); - var networkSupernet = new IPNetwork2(uintSupernet, first._family, cidrSupernet); - if (networkSupernet._network != first._network) + var networkSupernet = new IPNetwork2(uintSupernet, first.family, cidrSupernet); + if (networkSupernet.InternalNetwork != first.InternalNetwork) { if (trySupernet == false) { @@ -1912,7 +1923,7 @@ internal static void InternalSupernet(bool trySupernet, IPNetwork2 network1, IPN /// public override int GetHashCode() { - return this._hashCode; + return this.hashCode; } /// @@ -1924,9 +1935,9 @@ private int ComputeHashCode() { return string.Format( "{0}|{1}|{2}", - this._family.GetHashCode(), - this._network.GetHashCode(), - this._cidr.GetHashCode()).GetHashCode(); + this.family.GetHashCode(), + this.InternalNetwork.GetHashCode(), + this.cidr.GetHashCode()).GetHashCode(); } #endregion @@ -2045,10 +2056,10 @@ private static List Array2List(IPNetwork2[] array) ipns.Sort(new Comparison( delegate(IPNetwork2 ipn1, IPNetwork2 ipn2) { - int networkCompare = ipn1._network.CompareTo(ipn2._network); + int networkCompare = ipn1.InternalNetwork.CompareTo(ipn2.InternalNetwork); if (networkCompare == 0) { - int cidrCompare = ipn1._cidr.CompareTo(ipn2._cidr); + int cidrCompare = ipn1.cidr.CompareTo(ipn2.cidr); return cidrCompare; } @@ -2201,22 +2212,22 @@ internal static void InternalWideSubnet(bool tryWide, IPNetwork2[] ipnetworks, o Array.Sort(nnin); IPNetwork2 nnin0 = nnin[0]; - BigInteger uintNnin0 = nnin0._ipaddress; + BigInteger uintNnin0 = nnin0.ipaddress; IPNetwork2 nninX = nnin[nnin.Length - 1]; IPAddress ipaddressX = nninX.Broadcast; - AddressFamily family = ipnetworks[0]._family; + AddressFamily family = ipnetworks[0].family; foreach (IPNetwork2 ipnx in ipnetworks) { - if (ipnx._family != family) + if (ipnx.family != family) { throw new ArgumentException("MixedAddressFamily"); } } var ipn = new IPNetwork2(0, family, 0); - for (byte cidr = nnin0._cidr; cidr >= 0; cidr--) + for (byte cidr = nnin0.cidr; cidr >= 0; cidr--) { var wideSubnet = new IPNetwork2(uintNnin0, family, cidr); if (wideSubnet.Contains(ipaddressX)) @@ -2258,7 +2269,9 @@ public string Print() /// /// Print an ipnetwork in a clear representation string. /// + /// The ipnetwork. /// Dump an IPNetwork representation as string. + /// When arg is null. [Obsolete("static Print is deprecated, please use instance Print.")] public static string Print(IPNetwork2 ipnetwork) { @@ -2377,21 +2390,21 @@ public static int Compare(IPNetwork2 left, IPNetwork2 right) } // first test family - int result = left._family.CompareTo(right._family); + int result = left.family.CompareTo(right.family); if (result != 0) { return result; } // second test the network - result = left._network.CompareTo(right._network); + result = left.InternalNetwork.CompareTo(right.InternalNetwork); if (result != 0) { return result; } // then test the cidr - result = left._cidr.CompareTo(right._cidr); + result = left.cidr.CompareTo(right.cidr); return result; } @@ -2532,7 +2545,7 @@ public IPNetwork2() #endregion #region ISerializable - + /// /// Represents an internal structure to hold an IP address, its CIDR value, and address family. /// Used for internal operations within the IPNetwork2 class. @@ -2543,12 +2556,12 @@ internal struct IPNetworkInteral /// Represents the IP address value. /// public BigInteger IPAddress; - + /// /// Represents the CIDR (Classless Inter-Domain Routing) value. /// public byte Cidr; - + /// /// Represents the address family (IPv4 or IPv6). /// @@ -2560,9 +2573,9 @@ private IPNetwork2(SerializationInfo info, StreamingContext context) string sipnetwork = (string)info.GetValue("IPNetwork", typeof(string)); var ipnetwork = IPNetwork2.Parse(sipnetwork); - this._ipaddress = ipnetwork._ipaddress; - this._cidr = ipnetwork._cidr; - this._family = ipnetwork._family; + this.ipaddress = ipnetwork.ipaddress; + this.cidr = ipnetwork.cidr; + this.family = ipnetwork.family; } /// @@ -2648,12 +2661,13 @@ public IPAddress WildcardMask { get { - byte cidr = this._family == AddressFamily.InterNetwork ? (byte)32 : (byte)128; - BigInteger netmask = IPNetwork2.ToUint(cidr, this._family); - BigInteger wildcardmask = netmask - this._netmask; + byte cidr = this.family == AddressFamily.InterNetwork ? (byte)32 : (byte)128; + BigInteger netmask = IPNetwork2.ToUint(cidr, this.family); + BigInteger wildcardmask = netmask - this.InternalNetmask; - return IPNetwork2.ToIPAddress(wildcardmask, this._family); + return IPNetwork2.ToIPAddress(wildcardmask, this.family); } } + #endregion } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetworkCollection.cs b/src/System.Net.IPNetwork/IPNetworkCollection.cs index 1985a0a7..3c4e1168 100644 --- a/src/System.Net.IPNetwork/IPNetworkCollection.cs +++ b/src/System.Net.IPNetwork/IPNetworkCollection.cs @@ -13,28 +13,28 @@ namespace System.Net; /// public class IPNetworkCollection : IEnumerable, IEnumerator { - private BigInteger _enumerator; - private byte _cidrSubnet; - private IPNetwork2 _ipnetwork; + private readonly byte cidrSubnet; + private readonly IPNetwork2 ipnetwork; + private BigInteger enumerator; - private byte _cidr + private byte Cidr { - get { return this._ipnetwork.Cidr; } + get { return this.ipnetwork.Cidr; } } - private BigInteger _broadcast + private BigInteger Broadcast { - get { return IPNetwork2.ToBigInteger(this._ipnetwork.Broadcast); } + get { return IPNetwork2.ToBigInteger(this.ipnetwork.Broadcast); } } - private BigInteger _lastUsable + private BigInteger LastUsable { - get { return IPNetwork2.ToBigInteger(this._ipnetwork.LastUsable); } + get { return IPNetwork2.ToBigInteger(this.ipnetwork.LastUsable); } } - private BigInteger _network + private BigInteger Network { - get { return IPNetwork2.ToBigInteger(this._ipnetwork.Network); } + get { return IPNetwork2.ToBigInteger(this.ipnetwork.Network); } } /// @@ -45,6 +45,10 @@ private BigInteger _network /// This class is used to generate a collection of IP networks by dividing the given parent IP network into subnets based on the provided subnet CIDR (Classless Inter-Domain Routing /// ) value. /// + /// The network. + /// The subnet. + /// Cidr is out of range. + /// Network is invalid. #if TRAVISCI public #else @@ -63,9 +67,9 @@ private BigInteger _network throw new ArgumentException("cidrSubnet"); } - this._cidrSubnet = cidrSubnet; - this._ipnetwork = ipnetwork; - this._enumerator = -1; + this.cidrSubnet = cidrSubnet; + this.ipnetwork = ipnetwork; + this.enumerator = -1; } #region Count, Array, Enumerator @@ -77,7 +81,7 @@ public BigInteger Count { get { - var count = BigInteger.Pow(2, this._cidrSubnet - this._cidr); + var count = BigInteger.Pow(2, this.cidrSubnet - this.Cidr); return count; } } @@ -99,12 +103,12 @@ public IPNetwork2 this[BigInteger i] throw new ArgumentOutOfRangeException("i"); } - BigInteger last = this._ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetworkV6 - ? this._lastUsable - : this._broadcast; - BigInteger increment = (last - this._network) / this.Count; - BigInteger uintNetwork = this._network + ((increment + 1) * i); - var ipn = new IPNetwork2(uintNetwork, this._ipnetwork.AddressFamily, this._cidrSubnet); + BigInteger last = this.ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetworkV6 + ? this.LastUsable + : this.Broadcast; + BigInteger increment = (last - this.Network) / this.Count; + BigInteger uintNetwork = this.Network + ((increment + 1) * i); + var ipn = new IPNetwork2(uintNetwork, this.ipnetwork.AddressFamily, this.cidrSubnet); return ipn; } } @@ -130,7 +134,7 @@ IEnumerator IEnumerable.GetEnumerator() /// public IPNetwork2 Current { - get { return this[this._enumerator]; } + get { return this[this.enumerator]; } } #endregion @@ -172,8 +176,8 @@ object IEnumerator.Current /// public bool MoveNext() { - this._enumerator++; - if (this._enumerator >= this.Count) + this.enumerator++; + if (this.enumerator >= this.Count) { return false; } @@ -186,7 +190,7 @@ public bool MoveNext() /// public void Reset() { - this._enumerator = -1; + this.enumerator = -1; } #endregion diff --git a/src/TestProject/BigIntegerBitWiseUnitTest.cs b/src/TestProject/BigIntegerBitWiseUnitTest.cs index 5fbd8d91..84481c2f 100644 --- a/src/TestProject/BigIntegerBitWiseUnitTest.cs +++ b/src/TestProject/BigIntegerBitWiseUnitTest.cs @@ -15,18 +15,17 @@ public class BigIntegerBitWiseUnitTest /// [TestMethod] [DataRow(new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0x00 }, 4, new byte[] { 0x0 })] - [DataRow(new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0x00 }, 8, - new byte[] { 0x0, 0x0, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0 })] + [DataRow(new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0x00 }, 8, new byte[] { 0x0, 0x0, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, })] public void Test1(byte[] bytes, int reverseLength, byte[] expected) { - var reverseme = new BigInteger(bytes); - BigInteger reversed = reverseme.PositiveReverse(reverseLength); - byte[] result = reversed.ToByteArray(); - Assert.AreEqual(expected.Length, result.Length); + var reverseme = new BigInteger(bytes); + BigInteger reversed = reverseme.PositiveReverse(reverseLength); + byte[] result = reversed.ToByteArray(); + Assert.AreEqual(expected.Length, result.Length); - for (int i = 0; i < expected.Length; i++) - { - Assert.AreEqual(expected[i], result[i], i.ToString()); - } + for (int i = 0; i < expected.Length; i++) + { + Assert.AreEqual(expected[i], result[i], i.ToString()); } + } } \ No newline at end of file diff --git a/src/TestProject/BigIntegerToUnitTest.cs b/src/TestProject/BigIntegerToUnitTest.cs index d38d8e74..c7423f42 100644 --- a/src/TestProject/BigIntegerToUnitTest.cs +++ b/src/TestProject/BigIntegerToUnitTest.cs @@ -139,7 +139,10 @@ public void TestToBinaryString2() public void TestToBinaryString3() { byte[] bytes = - { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; + { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + }; var convertme = new BigInteger(bytes); string result = convertme.ToBinaryString(); diff --git a/src/TestProject/ConsoleUnitTest.cs b/src/TestProject/ConsoleUnitTest.cs index 0588facf..73fc3a6d 100644 --- a/src/TestProject/ConsoleUnitTest.cs +++ b/src/TestProject/ConsoleUnitTest.cs @@ -2,7 +2,6 @@ // Copyright (c) IPNetwork. All rights reserved. // - namespace TestProject; /// diff --git a/src/TestProject/DataContractSerializeHelper.cs b/src/TestProject/DataContractSerializeHelper.cs index 96ed67c2..58ae54ad 100644 --- a/src/TestProject/DataContractSerializeHelper.cs +++ b/src/TestProject/DataContractSerializeHelper.cs @@ -4,8 +4,18 @@ namespace TestProject; +/// +/// Test serialization. +/// public static class DataContractSerializeHelper { + /// + /// Serialize. + /// + /// The object to serialize. + /// Should it be formtted. + /// Type of object. + /// A string representing the object. public static string Serialize(T obj, bool formatting = true) where T : new() { @@ -18,7 +28,7 @@ public static string Serialize(T obj, bool formatting = true) var settings = new XmlWriterSettings { OmitXmlDeclaration = true, - Indent = formatting + Indent = formatting, }; using (var textWriter = new StringWriter()) { @@ -32,6 +42,12 @@ public static string Serialize(T obj, bool formatting = true) } } + /// + /// Deserialize. + /// + /// The xml string representing the object. + /// The type of the object. + /// The object. public static T Deserialize(string xml) where T : new() { diff --git a/src/TestProject/GetHashCodeUnitTest.cs b/src/TestProject/GetHashCodeUnitTest.cs index aff8b4a6..1558e8d6 100644 --- a/src/TestProject/GetHashCodeUnitTest.cs +++ b/src/TestProject/GetHashCodeUnitTest.cs @@ -2,7 +2,6 @@ // Copyright (c) IPNetwork. All rights reserved. // - namespace TestProject; /// diff --git a/src/TestProject/GlobalUsings.cs b/src/TestProject/GlobalUsings.cs index e04593d2..a72f9107 100644 --- a/src/TestProject/GlobalUsings.cs +++ b/src/TestProject/GlobalUsings.cs @@ -3,19 +3,20 @@ // #pragma warning disable SA1200 + global using System; global using System.Collections; global using System.Collections.Generic; global using System.IO; +global using System.Linq; global using System.Net; global using System.Net.Sockets; global using System.Numerics; global using System.Runtime.Serialization; +global using System.Security.Cryptography; global using System.Text; global using System.Xml; global using System.Xml.Serialization; -global using System.Linq; -global using System.Security.Cryptography; global using Microsoft.VisualStudio.TestTools.UnitTesting; global using Newtonsoft.Json; diff --git a/src/TestProject/IPAddressCollectionUnitTest.cs b/src/TestProject/IPAddressCollectionUnitTest.cs index 98b02ee3..0b63abfa 100644 --- a/src/TestProject/IPAddressCollectionUnitTest.cs +++ b/src/TestProject/IPAddressCollectionUnitTest.cs @@ -2,7 +2,6 @@ // Copyright (c) IPNetwork. All rights reserved. // - namespace TestProject; /// diff --git a/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs b/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs index 2a07b873..0e7fadd2 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs @@ -11,7 +11,7 @@ namespace TestProject.IPNetworkTest; public class IPNetworkResizeTests { /// - /// Resize a too big ipnetowkr + /// Resize a too big network. /// [TestMethod] [ExpectedException(typeof(ArgumentException))] diff --git a/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs index b38b9f81..b35b19b4 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs @@ -29,10 +29,9 @@ public void TestSupernetInternal1() [ExpectedException(typeof(ArgumentNullException))] public void TestSupernetInternal2() { - IPNetwork2 result; - IPNetwork2.InternalSupernet(false, null, null, out result); - } - + IPNetwork2 result; + IPNetwork2.InternalSupernet(false, null, null, out result); + } /// /// Tests Supernet functionality with Issue33__TestSupernet__Bug_or_default_behavior. @@ -41,13 +40,13 @@ public void TestSupernetInternal2() [ExpectedException(typeof(ArgumentOutOfRangeException))] public void Issue33__TestSupernet__Bug_or_default_behavior() { - var network1 = IPNetwork2.Parse("192.168.0.0/24"); - var network2 = IPNetwork2.Parse("192.168.2.0/24"); - var expected = IPNetwork2.Parse("192.168.0.0/23"); - IPNetwork2 supernet = network1.Supernet(network2); + var network1 = IPNetwork2.Parse("192.168.0.0/24"); + var network2 = IPNetwork2.Parse("192.168.2.0/24"); + var expected = IPNetwork2.Parse("192.168.0.0/23"); + IPNetwork2 supernet = network1.Supernet(network2); - Assert.AreEqual(expected, supernet, "supernet"); - } + Assert.AreEqual(expected, supernet, "supernet"); + } /// /// Tests Supernet functionality. @@ -55,13 +54,13 @@ public void Issue33__TestSupernet__Bug_or_default_behavior() [TestMethod] public void Issue33__TestWideSubnet__Bug_or_default_behavior() { - var network1 = IPNetwork2.Parse("192.168.0.0/24"); - var network2 = IPNetwork2.Parse("192.168.2.0/24"); - var expected = IPNetwork2.Parse("192.168.0.0/22"); - var widenetwork = IPNetwork2.WideSubnet(new[] { network1, network2 }); + var network1 = IPNetwork2.Parse("192.168.0.0/24"); + var network2 = IPNetwork2.Parse("192.168.2.0/24"); + var expected = IPNetwork2.Parse("192.168.0.0/22"); + var widenetwork = IPNetwork2.WideSubnet(new[] { network1, network2 }); - Assert.AreEqual(expected, widenetwork, "widesubnet"); - } + Assert.AreEqual(expected, widenetwork, "widesubnet"); + } /// /// Tests Supernet functionality. @@ -69,15 +68,15 @@ public void Issue33__TestWideSubnet__Bug_or_default_behavior() [TestMethod] public void Issue162__Test_IPrangeToCIDRnotation() { - string network1 = "172.64.0.0"; - string network2 = "172.71.255.255"; + string network1 = "172.64.0.0"; + string network2 = "172.71.255.255"; - var final = IPNetwork2.WideSubnet(network1, network2); - string result = final.ToString(); + var final = IPNetwork2.WideSubnet(network1, network2); + string result = final.ToString(); - string expected = "172.64.0.0/13"; - Assert.AreEqual(expected, result, "Supernet"); - } + string expected = "172.64.0.0/13"; + Assert.AreEqual(expected, result, "Supernet"); + } /// /// Tests Supernet functionality with Supernet1. @@ -85,13 +84,13 @@ public void Issue162__Test_IPrangeToCIDRnotation() [TestMethod] public void TestSupernet1() { - var network1 = IPNetwork2.Parse("192.168.0.1/24"); - var network2 = IPNetwork2.Parse("192.168.1.1/24"); - var expected = IPNetwork2.Parse("192.168.0.0/23"); - IPNetwork2 supernet = network1.Supernet(network2); + var network1 = IPNetwork2.Parse("192.168.0.1/24"); + var network2 = IPNetwork2.Parse("192.168.1.1/24"); + var expected = IPNetwork2.Parse("192.168.0.0/23"); + IPNetwork2 supernet = network1.Supernet(network2); - Assert.AreEqual(expected, supernet, "supernet"); - } + Assert.AreEqual(expected, supernet, "supernet"); + } /// /// Test to supernet a null network1. @@ -100,11 +99,11 @@ public void TestSupernet1() [ExpectedException(typeof(NullReferenceException))] public void TestSupernet2() { - IPNetwork2 network1 = null; - var network2 = IPNetwork2.Parse("192.168.1.1/24"); - IPNetwork2 supernet = network1.Supernet(network2); - } - + IPNetwork2 network1 = null; + var network2 = IPNetwork2.Parse("192.168.1.1/24"); + IPNetwork2 supernet = network1.Supernet(network2); + } + /// /// Test to supernet a null network2. /// @@ -112,10 +111,10 @@ public void TestSupernet2() [ExpectedException(typeof(ArgumentNullException))] public void TestSupernet3() { - var network1 = IPNetwork2.Parse("192.168.1.1/24"); - IPNetwork2 network2 = null; - IPNetwork2 supernet = network1.Supernet(network2); - } + var network1 = IPNetwork2.Parse("192.168.1.1/24"); + IPNetwork2 network2 = null; + IPNetwork2 supernet = network1.Supernet(network2); + } /// /// Test to supernet overlapping networks. @@ -124,10 +123,10 @@ public void TestSupernet3() [ExpectedException(typeof(ArgumentException))] public void TestSupernet4() { - var network1 = IPNetwork2.Parse("192.168.0.1/24"); - var network2 = IPNetwork2.Parse("192.168.1.1/25"); - IPNetwork2 supernet = network1.Supernet(network2); - } + var network1 = IPNetwork2.Parse("192.168.0.1/24"); + var network2 = IPNetwork2.Parse("192.168.1.1/25"); + IPNetwork2 supernet = network1.Supernet(network2); + } /// /// Test to supernet non overlapping networks. @@ -136,10 +135,10 @@ public void TestSupernet4() [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestSupernet5() { - var network1 = IPNetwork2.Parse("192.168.0.1/24"); - var network2 = IPNetwork2.Parse("192.168.5.1/24"); - IPNetwork2 supernet = network1.Supernet(network2); - } + var network1 = IPNetwork2.Parse("192.168.0.1/24"); + var network2 = IPNetwork2.Parse("192.168.5.1/24"); + IPNetwork2 supernet = network1.Supernet(network2); + } /// /// Tests Supernet functionality with Supernet6. @@ -147,13 +146,13 @@ public void TestSupernet5() [TestMethod] public void TestSupernet6() { - var network1 = IPNetwork2.Parse("192.168.0.1/24"); - var network2 = IPNetwork2.Parse("192.168.0.1/25"); - var expected = IPNetwork2.Parse("192.168.0.0/24"); - IPNetwork2 supernet = network1.Supernet(network2); + var network1 = IPNetwork2.Parse("192.168.0.1/24"); + var network2 = IPNetwork2.Parse("192.168.0.1/25"); + var expected = IPNetwork2.Parse("192.168.0.0/24"); + IPNetwork2 supernet = network1.Supernet(network2); - Assert.AreEqual(expected, supernet, "supernet"); - } + Assert.AreEqual(expected, supernet, "supernet"); + } /// /// Tests Supernet functionality with Supernet7. @@ -161,13 +160,13 @@ public void TestSupernet6() [TestMethod] public void TestSupernet7() { - var network1 = IPNetwork2.Parse("192.168.0.1/25"); - var network2 = IPNetwork2.Parse("192.168.0.1/24"); - var expected = IPNetwork2.Parse("192.168.0.0/24"); - IPNetwork2 supernet = network1.Supernet(network2); + var network1 = IPNetwork2.Parse("192.168.0.1/25"); + var network2 = IPNetwork2.Parse("192.168.0.1/24"); + var expected = IPNetwork2.Parse("192.168.0.0/24"); + IPNetwork2 supernet = network1.Supernet(network2); - Assert.AreEqual(expected, supernet, "supernet"); - } + Assert.AreEqual(expected, supernet, "supernet"); + } /// /// Tests Supernet functionality with Supernet Static1. @@ -175,15 +174,15 @@ public void TestSupernet7() [TestMethod] public void TestSupernetStatic1() { - var network1 = IPNetwork2.Parse("192.168.0.1/25"); - var network2 = IPNetwork2.Parse("192.168.0.1/24"); - var expected = IPNetwork2.Parse("192.168.0.0/24"); + var network1 = IPNetwork2.Parse("192.168.0.1/25"); + var network2 = IPNetwork2.Parse("192.168.0.1/24"); + var expected = IPNetwork2.Parse("192.168.0.0/24"); #pragma warning disable CS0618 // Type or member is obsolete - var supernet = IPNetwork2.Supernet(network1, network2); + var supernet = IPNetwork2.Supernet(network1, network2); #pragma warning restore CS0618 // Type or member is obsolete - Assert.AreEqual(expected, supernet, "supernet"); - } + Assert.AreEqual(expected, supernet, "supernet"); + } /// /// Test to supernet continuous networks. @@ -192,10 +191,10 @@ public void TestSupernetStatic1() [ExpectedException(typeof(ArgumentException))] public void TestSupernet8() { - var network1 = IPNetwork2.Parse("192.168.1.1/24"); - var network2 = IPNetwork2.Parse("192.168.2.1/24"); - IPNetwork2 supernet = network1.Supernet(network2); - } + var network1 = IPNetwork2.Parse("192.168.1.1/24"); + var network2 = IPNetwork2.Parse("192.168.2.1/24"); + IPNetwork2 supernet = network1.Supernet(network2); + } /// /// Tests Supernet functionality with Supernet9. @@ -203,16 +202,16 @@ public void TestSupernet8() [TestMethod] public void TestSupernet9() { - var ipnetwork1 = IPNetwork2.Parse("200.16.0.0/24"); - var ipnetwork2 = IPNetwork2.Parse("200.16.1.0/24"); - var ipnetwork3 = IPNetwork2.Parse("200.16.2.0/24"); - var ipnetwork4 = IPNetwork2.Parse("200.16.3.0/24"); + var ipnetwork1 = IPNetwork2.Parse("200.16.0.0/24"); + var ipnetwork2 = IPNetwork2.Parse("200.16.1.0/24"); + var ipnetwork3 = IPNetwork2.Parse("200.16.2.0/24"); + var ipnetwork4 = IPNetwork2.Parse("200.16.3.0/24"); - IPNetwork2 result = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2, ipnetwork3, ipnetwork4 })[0]; - var expected = IPNetwork2.Parse("200.16.0.0/22"); + IPNetwork2 result = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2, ipnetwork3, ipnetwork4 })[0]; + var expected = IPNetwork2.Parse("200.16.0.0/22"); - Assert.AreEqual(expected, result, "supernet"); - } + Assert.AreEqual(expected, result, "supernet"); + } /// /// Tests Supernet functionality with Supernet10. @@ -220,12 +219,12 @@ public void TestSupernet9() [TestMethod] public void TestSupernet10() { - var ipnetwork1 = IPNetwork2.Parse("1.1.0.0/24"); - var ipnetwork2 = IPNetwork2.Parse("1.2.1.0/24"); + var ipnetwork1 = IPNetwork2.Parse("1.1.0.0/24"); + var ipnetwork2 = IPNetwork2.Parse("1.2.1.0/24"); - IPNetwork2 result = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2 })[0]; - var expected = IPNetwork2.Parse("1.1.0.0/24"); + IPNetwork2 result = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2 })[0]; + var expected = IPNetwork2.Parse("1.1.0.0/24"); - Assert.AreEqual(expected, result, "supernet"); - } + Assert.AreEqual(expected, result, "supernet"); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs index a0c2a144..6ed27924 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs @@ -83,7 +83,7 @@ public void TestTryParseIPAddressNetmaskAne6() public void TestTryParseIPAddressNetmaskAne7() { IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse("0.0.0.0", netmask:null, out ipnet); + bool parsed = IPNetwork2.TryParse("0.0.0.0", netmask: null, out ipnet); Assert.AreEqual(false, parsed, "parsed"); Assert.AreEqual(null, ipnet, "ipnet"); diff --git a/src/TestProject/IPNetworkTest/IPNetworkWideSubnetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkWideSubnetTests.cs index 1fc974a2..2c7a79b4 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkWideSubnetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkWideSubnetTests.cs @@ -93,7 +93,7 @@ public void WideSubnetMixed() var ipns = new List { IPNetwork2.IANA_ABLK_RESERVED1, - IPNetwork2.Parse("2001:0db8::/64") + IPNetwork2.Parse("2001:0db8::/64"), }; var ipnetwork = IPNetwork2.WideSubnet(ipns.ToArray()); } diff --git a/src/TestProject/IPNetworkV6UnitTest.cs b/src/TestProject/IPNetworkV6UnitTest.cs index e2c4ae13..db13ebbf 100644 --- a/src/TestProject/IPNetworkV6UnitTest.cs +++ b/src/TestProject/IPNetworkV6UnitTest.cs @@ -23,9 +23,9 @@ public class IPNetworkV6UnitTest [ExpectedException(typeof(ArgumentException))] public void TestParseIPAddressNetmaskAne8(string withFirst, string andSecond) { - var ipnet = IPNetwork2.Parse(withFirst, andSecond); - } - + var ipnet = IPNetwork2.Parse(withFirst, andSecond); + } + /// /// Test parse of IPv6 networks. /// @@ -37,8 +37,8 @@ public void TestParseIPAddressNetmaskAne8(string withFirst, string andSecond) [ExpectedException(typeof(ArgumentException))] public void TestParseIPAddressNetmaskAne10(string withFirst, string andSecond) { - var ipnet = IPNetwork2.Parse(withFirst, andSecond); - } + var ipnet = IPNetwork2.Parse(withFirst, andSecond); + } /// /// Test parse of IPv& networks with 128 cidr. @@ -46,59 +46,59 @@ public void TestParseIPAddressNetmaskAne10(string withFirst, string andSecond) [TestMethod] public void TestParsev6_128() { - IPNetwork2 ipnetwork = null; - string ipaddress = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - - string network = "2001:db8::"; - string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - - // string broadcast = "2001:db8::"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::"; - byte cidr = 128; - BigInteger usable = 1; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - + IPNetwork2 ipnetwork = null; + string ipaddress = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + + string network = "2001:db8::"; + string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + + // string broadcast = "2001:db8::"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::"; + byte cidr = 128; + BigInteger usable = 1; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + /// /// Test parse of IPv& networks with 127 cidr. /// [TestMethod] public void TestParsev6_127() { - IPNetwork2 ipnetwork = null; - string ipaddress = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; - - string network = "2001:db8::"; - string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; - - // string broadcast = "2001:db8::1"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::1"; - byte cidr = 127; - BigInteger usable = 2; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; + + string network = "2001:db8::"; + string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; + + // string broadcast = "2001:db8::1"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::1"; + byte cidr = 127; + BigInteger usable = 2; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with 126 cidr. @@ -106,29 +106,29 @@ public void TestParsev6_127() [TestMethod] public void TestParsev6_126() { - IPNetwork2 ipnetwork = null; - string ipaddress = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; - - string network = "2001:db8::"; - string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; - - // string broadcast = "2001:db8::3"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::3"; - byte cidr = 126; - BigInteger usable = 4; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; + + string network = "2001:db8::"; + string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; + + // string broadcast = "2001:db8::3"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::3"; + byte cidr = 126; + BigInteger usable = 4; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with 125 cidr. @@ -136,29 +136,29 @@ public void TestParsev6_126() [TestMethod] public void TestParsev6_125() { - IPNetwork2 ipnetwork = null; - string ipaddress = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"; - - string network = "2001:db8::"; - string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"; - - // string broadcast = "2001:db8::7"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::7"; - byte cidr = 125; - BigInteger usable = 8; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"; + + string network = "2001:db8::"; + string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"; + + // string broadcast = "2001:db8::7"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::7"; + byte cidr = 125; + BigInteger usable = 8; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with 124 cidr. @@ -166,29 +166,29 @@ public void TestParsev6_125() [TestMethod] public void TestParsev6_124() { - IPNetwork2 ipnetwork = null; - string ipaddress = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; - - string network = "2001:db8::"; - string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; - - // string broadcast = "2001:db8::f"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::f"; - byte cidr = 124; - BigInteger usable = 16; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; + + string network = "2001:db8::"; + string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; + + // string broadcast = "2001:db8::f"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::f"; + byte cidr = 124; + BigInteger usable = 16; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with 123 cidr. @@ -196,29 +196,29 @@ public void TestParsev6_124() [TestMethod] public void TestParsev6_123() { - IPNetwork2 ipnetwork = null; - string ipaddress = "2001:0db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"; - - string network = "2001:db8::"; - string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"; - - // string broadcast = "2001:db8::1f"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::1f"; - byte cidr = 123; - BigInteger usable = 32; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "2001:0db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"; + + string network = "2001:db8::"; + string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"; + + // string broadcast = "2001:db8::1f"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::1f"; + byte cidr = 123; + BigInteger usable = 32; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with 112 cidr. @@ -226,29 +226,29 @@ public void TestParsev6_123() [TestMethod] public void TestParsev6_112() { - IPNetwork2 ipnetwork = null; - string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"; - - string network = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0"; - string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0"; - - // string broadcast = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0"; - string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 112; - uint usable = 65536; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"; + + string network = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0"; + string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0"; + + // string broadcast = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0"; + string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 112; + uint usable = 65536; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with 64 cidr. @@ -256,29 +256,29 @@ public void TestParsev6_112() [TestMethod] public void TestParsev6_64() { - IPNetwork2 ipnetwork = null; - string ipaddress = "ffff:ffff:ffff:ffff:1234:1234:1234:1234"; - string netmask = "ffff:ffff:ffff:ffff:0000:0000:0000:0000"; - - string network = "ffff:ffff:ffff:ffff::"; - string netmask2 = "ffff:ffff:ffff:ffff::"; - - // string broadcast = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "ffff:ffff:ffff:ffff::"; - string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 64; - var usable = BigInteger.Pow(2, 128 - cidr); - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "ffff:ffff:ffff:ffff:1234:1234:1234:1234"; + string netmask = "ffff:ffff:ffff:ffff:0000:0000:0000:0000"; + + string network = "ffff:ffff:ffff:ffff::"; + string netmask2 = "ffff:ffff:ffff:ffff::"; + + // string broadcast = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "ffff:ffff:ffff:ffff::"; + string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 64; + var usable = BigInteger.Pow(2, 128 - cidr); + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with 16 cidr. @@ -286,29 +286,29 @@ public void TestParsev6_64() [TestMethod] public void TestParsev6_16() { - IPNetwork2 ipnetwork = null; - string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string netmask = "ffff:0000:0000:0000:0000:0000:0000:0000"; - - string network = "ffff::"; - string netmask2 = "ffff::"; - - // string broadcast = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "ffff::"; - string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 16; - var usable = BigInteger.Pow(2, 128 - cidr); - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string netmask = "ffff:0000:0000:0000:0000:0000:0000:0000"; + + string network = "ffff::"; + string netmask2 = "ffff::"; + + // string broadcast = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "ffff::"; + string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 16; + var usable = BigInteger.Pow(2, 128 - cidr); + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with edge cases. @@ -316,27 +316,27 @@ public void TestParsev6_16() [TestMethod] public void TestParsev6_EDGE() { - IPNetwork2 ipnetwork = null; - string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - - string network = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 128; - uint usable = 1; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + + string network = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 128; + uint usable = 1; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } #endregion @@ -348,24 +348,24 @@ public void TestParsev6_EDGE() [TestMethod] public void TestParseString1() { - string ipaddress = "2001:0db8:: ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; - - string network = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::f"; - byte cidr = 124; - uint usable = 16; - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "2001:0db8:: ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; + + string network = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::f"; + byte cidr = 124; + uint usable = 16; + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString. @@ -373,24 +373,24 @@ public void TestParseString1() [TestMethod] public void TestParseString3() { - string ipaddress = ":: ::"; - - string network = "::"; - string netmask = "::"; - string firstUsable = "::"; - string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 0; - var usable = BigInteger.Pow(2, 128 - cidr); - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = ":: ::"; + + string network = "::"; + string netmask = "::"; + string firstUsable = "::"; + string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 0; + var usable = BigInteger.Pow(2, 128 - cidr); + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString. @@ -398,24 +398,24 @@ public void TestParseString3() [TestMethod] public void TestParseString4() { - string ipaddress = "::/0"; - - string network = "::"; - string netmask = "::"; - string firstUsable = "::"; - string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 0; - var usable = BigInteger.Pow(2, 128 - cidr); - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "::/0"; + + string network = "::"; + string netmask = "::"; + string firstUsable = "::"; + string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 0; + var usable = BigInteger.Pow(2, 128 - cidr); + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString. @@ -423,24 +423,24 @@ public void TestParseString4() [TestMethod] public void TestParseString5() { - string ipaddress = "::/32"; - - string network = "::"; - string netmask = "ffff:ffff::"; - string firstUsable = "::"; - string lastUsable = "::ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 32; - var usable = BigInteger.Pow(2, 128 - cidr); - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "::/32"; + + string network = "::"; + string netmask = "ffff:ffff::"; + string firstUsable = "::"; + string lastUsable = "::ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 32; + var usable = BigInteger.Pow(2, 128 - cidr); + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString. @@ -448,24 +448,24 @@ public void TestParseString5() [TestMethod] public void TestParseString6() { - string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128"; - - string network = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 128; - uint usable = 1; - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128"; + + string network = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 128; + uint usable = 1; + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -473,25 +473,25 @@ public void TestParseString6() [TestMethod] public void TestParseString7_Uppercase_ipv6_must_parse() { - string ipaddress = "2FFF:FFFF:123::/60"; + string ipaddress = "2FFF:FFFF:123::/60"; - string network = "2fff:ffff:123::"; - string netmask = "ffff:ffff:ffff:fff0::"; - string firstUsable = "2fff:ffff:123::"; - string lastUsable = "2fff:ffff:123:f:ffff:ffff:ffff:ffff"; - byte cidr = 60; + string network = "2fff:ffff:123::"; + string netmask = "ffff:ffff:ffff:fff0::"; + string firstUsable = "2fff:ffff:123::"; + string lastUsable = "2fff:ffff:123:f:ffff:ffff:ffff:ffff"; + byte cidr = 60; - // BigInteger usable = 295147905179352825856; - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + // BigInteger usable = 295147905179352825856; + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -499,25 +499,25 @@ public void TestParseString7_Uppercase_ipv6_must_parse() [TestMethod] public void TestParseString8_Uppercase_ipv6_must_parse() { - string ipaddress = "2FFF:FFFE:123::/60"; + string ipaddress = "2FFF:FFFE:123::/60"; - string network = "2fff:fffe:123::"; - string netmask = "ffff:ffff:ffff:fff0::"; - string firstUsable = "2fff:fffe:123::"; - string lastUsable = "2fff:fffe:123:f:ffff:ffff:ffff:ffff"; - byte cidr = 60; + string network = "2fff:fffe:123::"; + string netmask = "ffff:ffff:ffff:fff0::"; + string firstUsable = "2fff:fffe:123::"; + string lastUsable = "2fff:fffe:123:f:ffff:ffff:ffff:ffff"; + byte cidr = 60; - // BigInteger usable = 295147905179352825856; - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + // BigInteger usable = 295147905179352825856; + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -525,25 +525,25 @@ public void TestParseString8_Uppercase_ipv6_must_parse() [TestMethod] public void TestParseString9_Uppercase_ipv6_must_parse() { - string ipaddress = "2FFF:FFFC:123::/60"; + string ipaddress = "2FFF:FFFC:123::/60"; - string network = "2fff:fffc:123::"; - string netmask = "ffff:ffff:ffff:fff0::"; - string firstUsable = "2fff:fffc:123::"; - string lastUsable = "2fff:fffc:123:f:ffff:ffff:ffff:ffff"; - byte cidr = 60; + string network = "2fff:fffc:123::"; + string netmask = "ffff:ffff:ffff:fff0::"; + string firstUsable = "2fff:fffc:123::"; + string lastUsable = "2fff:fffc:123:f:ffff:ffff:ffff:ffff"; + byte cidr = 60; - // BigInteger usable = 295147905179352825856; - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + // BigInteger usable = 295147905179352825856; + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -551,25 +551,25 @@ public void TestParseString9_Uppercase_ipv6_must_parse() [TestMethod] public void TestParseString10_Uppercase_ipv6_must_parse() { - string ipaddress = "2FFF:FFFA:123::/60"; + string ipaddress = "2FFF:FFFA:123::/60"; - string network = "2fff:fffa:123::"; - string netmask = "ffff:ffff:ffff:fff0::"; - string firstUsable = "2fff:fffa:123::"; - string lastUsable = "2fff:fffa:123:f:ffff:ffff:ffff:ffff"; - byte cidr = 60; + string network = "2fff:fffa:123::"; + string netmask = "ffff:ffff:ffff:fff0::"; + string firstUsable = "2fff:fffa:123::"; + string lastUsable = "2fff:fffa:123:f:ffff:ffff:ffff:ffff"; + byte cidr = 60; - // BigInteger usable = 295147905179352825856; - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + // BigInteger usable = 295147905179352825856; + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -577,25 +577,25 @@ public void TestParseString10_Uppercase_ipv6_must_parse() [TestMethod] public void TestParseString11_Uppercase_ipv6_must_parse() { - string ipaddress = "FFFF:FFF1:123::/60"; + string ipaddress = "FFFF:FFF1:123::/60"; - string network = "ffff:fff1:123::"; - string netmask = "ffff:ffff:ffff:fff0::"; - string firstUsable = "ffff:fff1:123::"; - string lastUsable = "ffff:fff1:123:f:ffff:ffff:ffff:ffff"; - byte cidr = 60; + string network = "ffff:fff1:123::"; + string netmask = "ffff:ffff:ffff:fff0::"; + string firstUsable = "ffff:fff1:123::"; + string lastUsable = "ffff:fff1:123:f:ffff:ffff:ffff:ffff"; + byte cidr = 60; - // BigInteger usable = 295147905179352825856; - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + // BigInteger usable = 295147905179352825856; + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -603,24 +603,24 @@ public void TestParseString11_Uppercase_ipv6_must_parse() [TestMethod] public void TestParseIPAddressNoNetmask1() { - string ipaddress = "2001:0db8::"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - - string network = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff::"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; - byte cidr = 64; - var usable = BigInteger.Pow(2, 64); - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "2001:0db8::"; + var ipnetwork = IPNetwork2.Parse(ipaddress); + + string network = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff::"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; + byte cidr = 64; + var usable = BigInteger.Pow(2, 64); + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -628,24 +628,24 @@ public void TestParseIPAddressNoNetmask1() [TestMethod] public void TestParseIPAddressNoNetmask4() { - string ipaddress = "::"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - - string network = "::"; - string netmask = "ffff:ffff:ffff:ffff::"; - string firstUsable = "::"; - string lastUsable = "::ffff:ffff:ffff:ffff"; - byte cidr = 64; - var usable = BigInteger.Pow(2, 64); - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "::"; + var ipnetwork = IPNetwork2.Parse(ipaddress); + + string network = "::"; + string netmask = "ffff:ffff:ffff:ffff::"; + string firstUsable = "::"; + string lastUsable = "::ffff:ffff:ffff:ffff"; + byte cidr = 64; + var usable = BigInteger.Pow(2, 64); + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -653,24 +653,24 @@ public void TestParseIPAddressNoNetmask4() [TestMethod] public void TestParseIPAddressNoNetmask5() { - string ipaddress = "2001:0db8::1"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - - string network = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff::"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; - byte cidr = 64; - var usable = BigInteger.Pow(2, 64); - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "2001:0db8::1"; + var ipnetwork = IPNetwork2.Parse(ipaddress); + + string network = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff::"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; + byte cidr = 64; + var usable = BigInteger.Pow(2, 64); + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -678,26 +678,26 @@ public void TestParseIPAddressNoNetmask5() [TestMethod] public void TestParseIPAddressNoNetmask1_ClassFull() { - string ipaddress = "2001:0db8::"; - ICidrGuess cidrGess = CidrGuess.ClassFull; - - var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); - - string network = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff::"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; - byte cidr = 64; - var usable = BigInteger.Pow(2, 64); - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "2001:0db8::"; + ICidrGuess cidrGess = CidrGuess.ClassFull; + + var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); + + string network = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff::"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; + byte cidr = 64; + var usable = BigInteger.Pow(2, 64); + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -705,26 +705,26 @@ public void TestParseIPAddressNoNetmask1_ClassFull() [TestMethod] public void TestParseIPAddressNoNetmask4_ClassFull() { - string ipaddress = "::"; - ICidrGuess cidrGess = CidrGuess.ClassFull; - - var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); - - string network = "::"; - string netmask = "ffff:ffff:ffff:ffff::"; - string firstUsable = "::"; - string lastUsable = "::ffff:ffff:ffff:ffff"; - byte cidr = 64; - var usable = BigInteger.Pow(2, 64); - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "::"; + ICidrGuess cidrGess = CidrGuess.ClassFull; + + var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); + + string network = "::"; + string netmask = "ffff:ffff:ffff:ffff::"; + string firstUsable = "::"; + string lastUsable = "::ffff:ffff:ffff:ffff"; + byte cidr = 64; + var usable = BigInteger.Pow(2, 64); + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString ClassFull. @@ -732,26 +732,26 @@ public void TestParseIPAddressNoNetmask4_ClassFull() [TestMethod] public void TestParseIPAddressNoNetmask5_ClassFull() { - string ipaddress = "2001:0db8::1"; - ICidrGuess cidrGess = CidrGuess.ClassFull; - - var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); - - string network = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff::"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; - byte cidr = 64; - var usable = BigInteger.Pow(2, 64); - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "2001:0db8::1"; + ICidrGuess cidrGess = CidrGuess.ClassFull; + + var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); + + string network = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff::"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; + byte cidr = 64; + var usable = BigInteger.Pow(2, 64); + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString ClassLess. @@ -759,26 +759,26 @@ public void TestParseIPAddressNoNetmask5_ClassFull() [TestMethod] public void TestParseIPAddressNoNetmask1_ClassLess() { - string ipaddress = "2001:0db8::"; - ICidrGuess cidrGess = CidrGuess.ClassLess; - - var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); - - string network = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::"; - byte cidr = 128; - int usable = 1; - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "2001:0db8::"; + ICidrGuess cidrGess = CidrGuess.ClassLess; + + var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); + + string network = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::"; + byte cidr = 128; + int usable = 1; + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString ClassLess. @@ -786,26 +786,26 @@ public void TestParseIPAddressNoNetmask1_ClassLess() [TestMethod] public void TestParseIPAddressNoNetmask4_ClassLess() { - string ipaddress = "::"; - ICidrGuess cidrGess = CidrGuess.ClassLess; - - var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); - - string network = "::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "::"; - string lastUsable = "::"; - byte cidr = 128; - int usable = 1; - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "::"; + ICidrGuess cidrGess = CidrGuess.ClassLess; + + var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); + + string network = "::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "::"; + string lastUsable = "::"; + byte cidr = 128; + int usable = 1; + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString ClassLess. @@ -813,26 +813,26 @@ public void TestParseIPAddressNoNetmask4_ClassLess() [TestMethod] public void TestParseIPAddressNoNetmask5_ClassLess() { - string ipaddress = "2001:0db8::1"; - ICidrGuess cidrGess = CidrGuess.ClassLess; - - var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); - - string network = "2001:db8::1"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "2001:db8::1"; - string lastUsable = "2001:db8::1"; - byte cidr = 128; - int usable = 1; - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "2001:0db8::1"; + ICidrGuess cidrGess = CidrGuess.ClassLess; + + var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); + + string network = "2001:db8::1"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "2001:db8::1"; + string lastUsable = "2001:db8::1"; + byte cidr = 128; + int usable = 1; + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString garbage. @@ -841,9 +841,9 @@ public void TestParseIPAddressNoNetmask5_ClassLess() [ExpectedException(typeof(ArgumentException))] public void TestParseStringAe1() { - string ipaddress = "garbage"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - } + string ipaddress = "garbage"; + var ipnetwork = IPNetwork2.Parse(ipaddress); + } /// /// Test ParseString too long. @@ -852,9 +852,9 @@ public void TestParseStringAe1() [ExpectedException(typeof(ArgumentException))] public void TestParseStringAe2() { - string ipaddress = "0:0:0:0:0:0:1:0:0 0:1:2:3:4:5:6:7:8"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - } + string ipaddress = "0:0:0:0:0:0:1:0:0 0:1:2:3:4:5:6:7:8"; + var ipnetwork = IPNetwork2.Parse(ipaddress); + } /// /// Test ParseString null. @@ -863,9 +863,9 @@ public void TestParseStringAe2() [ExpectedException(typeof(ArgumentNullException))] public void TestParseStringAne1() { - string ipaddress = null; - var ipnetwork = IPNetwork2.Parse(ipaddress); - } + string ipaddress = null; + var ipnetwork = IPNetwork2.Parse(ipaddress); + } #endregion @@ -877,12 +877,12 @@ public void TestParseStringAne1() [TestMethod] public void TestParseStringString1() { - string ipaddress = "2001:0db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; + string ipaddress = "2001:0db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); - Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); - } + var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); + } /// /// Test ParseString 3. @@ -891,11 +891,11 @@ public void TestParseStringString1() [ExpectedException(typeof(ArgumentNullException))] public void TestParseStringString3() { - string ipaddress = "2001:0db8::"; - string netmask = null; + string ipaddress = "2001:0db8::"; + string netmask = null; - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); - } + var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + } /// /// Test ParseString with string string @@ -904,11 +904,11 @@ public void TestParseStringString3() [ExpectedException(typeof(ArgumentNullException))] public void TestParseStringString5() { - string ipaddress = "2001:0db8::"; - string netmask = string.Empty; + string ipaddress = "2001:0db8::"; + string netmask = string.Empty; - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); - } + var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + } #endregion @@ -920,13 +920,13 @@ public void TestParseStringString5() [TestMethod] public void ParseIpIp1() { - string ipaddress = "2001:0db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; - var ip = IPAddress.Parse(ipaddress); - var netm = IPAddress.Parse(netmask); - var ipnetwork = IPNetwork2.Parse(ip, netm); - Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); - } + string ipaddress = "2001:0db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; + var ip = IPAddress.Parse(ipaddress); + var netm = IPAddress.Parse(netmask); + var ipnetwork = IPNetwork2.Parse(ip, netm); + Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); + } /// /// Test ParseString with IP @@ -935,11 +935,11 @@ public void ParseIpIp1() [ExpectedException(typeof(ArgumentNullException))] public void ParseIpIp3() { - string ipaddress = "2001:0db8::"; - var ip = IPAddress.Parse(ipaddress); - IPAddress netm = null; - var ipnetwork = IPNetwork2.Parse(ip, netm); - } + string ipaddress = "2001:0db8::"; + var ip = IPAddress.Parse(ipaddress); + IPAddress netm = null; + var ipnetwork = IPNetwork2.Parse(ip, netm); + } #endregion @@ -951,11 +951,11 @@ public void ParseIpIp3() [TestMethod] public void CtorWithIpAndCidr1() { - string ipaddress = "2001:0db8::"; - var ip = IPAddress.Parse(ipaddress); - var ipnetwork = new IPNetwork2(ip, 124); - Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); - } + string ipaddress = "2001:0db8::"; + var ip = IPAddress.Parse(ipaddress); + var ipnetwork = new IPNetwork2(ip, 124); + Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); + } /// /// Test CtorWithIpAndCidr2. @@ -964,10 +964,10 @@ public void CtorWithIpAndCidr1() [ExpectedException(typeof(ArgumentOutOfRangeException))] public void CtorWithIpAndCidr2() { - string ipaddress = "2001:db8::"; - var ip = IPAddress.Parse(ipaddress); - var ipnetwork = new IPNetwork2(ip, 129); - } + string ipaddress = "2001:db8::"; + var ip = IPAddress.Parse(ipaddress); + var ipnetwork = new IPNetwork2(ip, 129); + } #endregion @@ -979,9 +979,9 @@ public void CtorWithIpAndCidr2() [TestMethod] public void TestToCidrAe() { - byte cidr = IPNetwork2.ToCidr(IPAddress.IPv6Any); - Assert.AreEqual(0, cidr, "cidr"); - } + byte cidr = IPNetwork2.ToCidr(IPAddress.IPv6Any); + Assert.AreEqual(0, cidr, "cidr"); + } /// /// Test ToCidr. @@ -990,8 +990,8 @@ public void TestToCidrAe() [ExpectedException(typeof(ArgumentException))] public void TestToCidrAe2() { - IPNetwork2.ToCidr(IPAddress.Parse("2001:db8:3:4:5:6:7:8")); - } + IPNetwork2.ToCidr(IPAddress.Parse("2001:db8:3:4:5:6:7:8")); + } /// /// Test ToCidr. @@ -999,12 +999,12 @@ public void TestToCidrAe2() [TestMethod] public void TestToCidr128() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); - byte cidr = 128; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); + byte cidr = 128; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1012,12 +1012,12 @@ public void TestToCidr128() [TestMethod] public void TestToCidr127() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"); - byte cidr = 127; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"); + byte cidr = 127; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1025,12 +1025,12 @@ public void TestToCidr127() [TestMethod] public void TestToCidr126() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"); - byte cidr = 126; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"); + byte cidr = 126; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1038,12 +1038,12 @@ public void TestToCidr126() [TestMethod] public void TestToCidr125() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"); - byte cidr = 125; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"); + byte cidr = 125; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1051,12 +1051,12 @@ public void TestToCidr125() [TestMethod] public void TestToCidr124() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); - byte cidr = 124; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); + byte cidr = 124; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1064,12 +1064,12 @@ public void TestToCidr124() [TestMethod] public void TestToCidr123() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"); - byte cidr = 123; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"); + byte cidr = 123; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1077,12 +1077,12 @@ public void TestToCidr123() [TestMethod] public void TestToCidr122() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffc0"); - byte cidr = 122; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffc0"); + byte cidr = 122; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1090,12 +1090,12 @@ public void TestToCidr122() [TestMethod] public void TestToCidr121() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff80"); - byte cidr = 121; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff80"); + byte cidr = 121; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1103,12 +1103,12 @@ public void TestToCidr121() [TestMethod] public void TestToCidr120() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00"); - byte cidr = 120; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00"); + byte cidr = 120; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1116,12 +1116,12 @@ public void TestToCidr120() [TestMethod] public void TestToCidr119() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fe00"); - byte cidr = 119; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fe00"); + byte cidr = 119; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1129,12 +1129,12 @@ public void TestToCidr119() [TestMethod] public void TestToCidr118() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fc00"); - byte cidr = 118; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fc00"); + byte cidr = 118; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1142,12 +1142,12 @@ public void TestToCidr118() [TestMethod] public void TestToCidr117() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f800"); - byte cidr = 117; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f800"); + byte cidr = 117; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1155,12 +1155,12 @@ public void TestToCidr117() [TestMethod] public void TestToCidr116() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f000"); - byte cidr = 116; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f000"); + byte cidr = 116; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1168,12 +1168,12 @@ public void TestToCidr116() [TestMethod] public void TestToCidr115() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:e000"); - byte cidr = 115; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:e000"); + byte cidr = 115; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1181,12 +1181,12 @@ public void TestToCidr115() [TestMethod] public void TestToCidr114() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:c000"); - byte cidr = 114; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:c000"); + byte cidr = 114; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1194,12 +1194,12 @@ public void TestToCidr114() [TestMethod] public void TestToCidr113() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:8000"); - byte cidr = 113; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:8000"); + byte cidr = 113; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1207,12 +1207,12 @@ public void TestToCidr113() [TestMethod] public void TestToCidr112() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); - byte cidr = 112; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); + byte cidr = 112; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1220,12 +1220,12 @@ public void TestToCidr112() [TestMethod] public void TestToCidr111() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffe:0"); - byte cidr = 111; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffe:0"); + byte cidr = 111; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1233,12 +1233,12 @@ public void TestToCidr111() [TestMethod] public void TestToCidr110() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffc:0"); - byte cidr = 110; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffc:0"); + byte cidr = 110; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1246,12 +1246,12 @@ public void TestToCidr110() [TestMethod] public void TestToCidr109() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff8:0"); - byte cidr = 109; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff8:0"); + byte cidr = 109; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1259,12 +1259,12 @@ public void TestToCidr109() [TestMethod] public void TestToCidr108() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff0:0"); - byte cidr = 108; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff0:0"); + byte cidr = 108; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1272,12 +1272,12 @@ public void TestToCidr108() [TestMethod] public void TestToCidr001() { - var mask = IPAddress.Parse("8000::"); - byte cidr = 1; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("8000::"); + byte cidr = 1; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1285,12 +1285,12 @@ public void TestToCidr001() [TestMethod] public void TestToCidr000() { - var mask = IPAddress.Parse("::"); - byte cidr = 0; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("::"); + byte cidr = 0; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } #endregion @@ -1302,14 +1302,14 @@ public void TestToCidr000() [TestMethod] public void TestTryToCidr128() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); - byte cidr = 128; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); + byte cidr = 128; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1317,14 +1317,14 @@ public void TestTryToCidr128() [TestMethod] public void TestTryToCidr127() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"); - byte cidr = 127; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"); + byte cidr = 127; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1332,14 +1332,14 @@ public void TestTryToCidr127() [TestMethod] public void TestTryToCidr126() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"); - byte cidr = 126; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"); + byte cidr = 126; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1347,14 +1347,14 @@ public void TestTryToCidr126() [TestMethod] public void TestTryToCidr125() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"); - byte cidr = 125; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"); + byte cidr = 125; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1362,14 +1362,14 @@ public void TestTryToCidr125() [TestMethod] public void TestTryToCidr124() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); - byte cidr = 124; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); + byte cidr = 124; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1377,14 +1377,14 @@ public void TestTryToCidr124() [TestMethod] public void TestTryToCidr123() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"); - byte cidr = 123; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"); + byte cidr = 123; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1392,14 +1392,14 @@ public void TestTryToCidr123() [TestMethod] public void TestTryToCidr122() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffc0"); - byte cidr = 122; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffc0"); + byte cidr = 122; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1407,14 +1407,14 @@ public void TestTryToCidr122() [TestMethod] public void TestTryToCidr121() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff80"); - byte cidr = 121; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff80"); + byte cidr = 121; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1422,14 +1422,14 @@ public void TestTryToCidr121() [TestMethod] public void TestTryToCidr120() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00"); - byte cidr = 120; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00"); + byte cidr = 120; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1437,14 +1437,14 @@ public void TestTryToCidr120() [TestMethod] public void TestTryToCidr119() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fe00"); - byte cidr = 119; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fe00"); + byte cidr = 119; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1452,14 +1452,14 @@ public void TestTryToCidr119() [TestMethod] public void TestTryToCidr118() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fc00"); - byte cidr = 118; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fc00"); + byte cidr = 118; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1467,14 +1467,14 @@ public void TestTryToCidr118() [TestMethod] public void TestTryToCidr117() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f800"); - byte cidr = 117; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f800"); + byte cidr = 117; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1482,14 +1482,14 @@ public void TestTryToCidr117() [TestMethod] public void TestTryToCidr116() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f000"); - byte cidr = 116; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f000"); + byte cidr = 116; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1497,14 +1497,14 @@ public void TestTryToCidr116() [TestMethod] public void TestTryToCidr115() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:e000"); - byte cidr = 115; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:e000"); + byte cidr = 115; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1512,14 +1512,14 @@ public void TestTryToCidr115() [TestMethod] public void TestTryToCidr114() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:c000"); - byte cidr = 114; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:c000"); + byte cidr = 114; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1527,14 +1527,14 @@ public void TestTryToCidr114() [TestMethod] public void TestTryToCidr113() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:8000"); - byte cidr = 113; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:8000"); + byte cidr = 113; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1542,14 +1542,14 @@ public void TestTryToCidr113() [TestMethod] public void TestTryToCidr112() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); - byte cidr = 112; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); + byte cidr = 112; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1557,14 +1557,14 @@ public void TestTryToCidr112() [TestMethod] public void TestTryToCidr111() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffe:0"); - byte cidr = 111; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffe:0"); + byte cidr = 111; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1572,14 +1572,14 @@ public void TestTryToCidr111() [TestMethod] public void TestTryToCidr110() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffc:0"); - byte cidr = 110; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffc:0"); + byte cidr = 110; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1587,14 +1587,14 @@ public void TestTryToCidr110() [TestMethod] public void TestTryToCidr109() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff8:0"); - byte cidr = 109; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff8:0"); + byte cidr = 109; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1602,14 +1602,14 @@ public void TestTryToCidr109() [TestMethod] public void TestTryToCidr108() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff0:0"); - byte cidr = 108; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff0:0"); + byte cidr = 108; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1617,14 +1617,14 @@ public void TestTryToCidr108() [TestMethod] public void TestTryToCidr001() { - var mask = IPAddress.Parse("8000::"); - byte cidr = 1; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("8000::"); + byte cidr = 1; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1632,14 +1632,14 @@ public void TestTryToCidr001() [TestMethod] public void TestTryToCidr000() { - var mask = IPAddress.Parse("::"); - byte cidr = 0; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("::"); + byte cidr = 0; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } #endregion @@ -1651,12 +1651,12 @@ public void TestTryToCidr000() [TestMethod] public void TestToBigInteger32() { - var mask = IPAddress.Parse("::f"); - uint uintMask = 0xf; - var result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("::f"); + uint uintMask = 0xf; + var result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } /// /// Test. @@ -1664,12 +1664,12 @@ public void TestToBigInteger32() [TestMethod] public void TestToBigInteger24() { - var mask = IPAddress.Parse("::fff"); - uint uintMask = 0xfff; - BigInteger? result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("::fff"); + uint uintMask = 0xfff; + BigInteger? result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } /// /// Test. @@ -1677,12 +1677,12 @@ public void TestToBigInteger24() [TestMethod] public void TestToBigInteger16() { - var mask = IPAddress.Parse("::ff"); - uint uintMask = 0xff; - BigInteger? result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("::ff"); + uint uintMask = 0xff; + BigInteger? result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } /// /// Test. @@ -1690,12 +1690,12 @@ public void TestToBigInteger16() [TestMethod] public void TestToBigInteger8() { - var mask = IPAddress.Parse("::ff00:0"); - uint uintMask = 0xff000000; - BigInteger? result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("::ff00:0"); + uint uintMask = 0xff000000; + BigInteger? result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } /// /// Test. @@ -1703,12 +1703,12 @@ public void TestToBigInteger8() [TestMethod] public void TestToBigInteger0() { - var mask = IPAddress.Parse("::"); - uint uintMask = 0x00000000; - BigInteger? result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("::"); + uint uintMask = 0x00000000; + BigInteger? result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } #endregion @@ -1720,14 +1720,14 @@ public void TestToBigInteger0() [TestMethod] public void TestTryToBigInteger32() { - var mask = IPAddress.Parse("::ffff:ffff"); - uint uintMask = 0xffffffff; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + var mask = IPAddress.Parse("::ffff:ffff"); + uint uintMask = 0xffffffff; + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(mask, out result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Test. @@ -1735,14 +1735,14 @@ public void TestTryToBigInteger32() [TestMethod] public void TestTryToBigInteger24() { - var mask = IPAddress.Parse("::ffff:ff00"); - uint uintMask = 0xffffff00; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + var mask = IPAddress.Parse("::ffff:ff00"); + uint uintMask = 0xffffff00; + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(mask, out result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Test. @@ -1750,14 +1750,14 @@ public void TestTryToBigInteger24() [TestMethod] public void TestTryToBigInteger16() { - var mask = IPAddress.Parse("::ffff:0"); - uint uintMask = 0xffff0000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + var mask = IPAddress.Parse("::ffff:0"); + uint uintMask = 0xffff0000; + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(mask, out result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Test. @@ -1765,15 +1765,15 @@ public void TestTryToBigInteger16() [TestMethod] public void TestTryToBigInteger8() { - var mask = IPAddress.Parse("::ff00:0"); - uint uintMask = 0xff000000; + var mask = IPAddress.Parse("::ff00:0"); + uint uintMask = 0xff000000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(mask, out result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Test. @@ -1781,14 +1781,14 @@ public void TestTryToBigInteger8() [TestMethod] public void TestTryToBigInteger0() { - var mask = IPAddress.Parse("::"); - uint uintMask = 0x00000000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + var mask = IPAddress.Parse("::"); + uint uintMask = 0x00000000; + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(mask, out result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } #endregion @@ -1800,13 +1800,13 @@ public void TestTryToBigInteger0() [TestMethod] public void TryToNetmask1() { - IPAddress result = null; - bool parsed = IPNetwork2.TryToNetmask(0, AddressFamily.InterNetworkV6, out result); - var expected = IPAddress.Parse("::"); + IPAddress result = null; + bool parsed = IPNetwork2.TryToNetmask(0, AddressFamily.InterNetworkV6, out result); + var expected = IPAddress.Parse("::"); - Assert.AreEqual(expected, result, "Netmask"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(expected, result, "Netmask"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Test. @@ -1814,13 +1814,13 @@ public void TryToNetmask1() [TestMethod] public void TryToNetmask2() { - IPAddress result = null; - bool parsed = IPNetwork2.TryToNetmask(33, AddressFamily.InterNetworkV6, out result); - var expected = IPAddress.Parse("ffff:ffff:8000::"); + IPAddress result = null; + bool parsed = IPNetwork2.TryToNetmask(33, AddressFamily.InterNetworkV6, out result); + var expected = IPAddress.Parse("ffff:ffff:8000::"); - Assert.AreEqual(expected, result, "Netmask"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(expected, result, "Netmask"); + Assert.AreEqual(true, parsed, "parsed"); + } #endregion @@ -1832,12 +1832,12 @@ public void TryToNetmask2() [TestMethod] public void ToNetmask128() { - byte cidr = 128; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); + byte cidr = 128; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); - Assert.AreEqual(netmask, result, "netmask"); - } + Assert.AreEqual(netmask, result, "netmask"); + } /// /// Test. @@ -1845,12 +1845,12 @@ public void ToNetmask128() [TestMethod] public void ToNetmask31() { - byte cidr = 127; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); + byte cidr = 127; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); - Assert.AreEqual(netmask, result, "netmask"); - } + Assert.AreEqual(netmask, result, "netmask"); + } /// /// Test. @@ -1858,12 +1858,12 @@ public void ToNetmask31() [TestMethod] public void ToNetmask30() { - byte cidr = 126; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); + byte cidr = 126; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); - Assert.AreEqual(netmask, result, "netmask"); - } + Assert.AreEqual(netmask, result, "netmask"); + } /// /// Test. @@ -1871,12 +1871,12 @@ public void ToNetmask30() [TestMethod] public void ToNetmask1() { - byte cidr = 1; - string netmask = "8000::"; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); + byte cidr = 1; + string netmask = "8000::"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); - Assert.AreEqual(netmask, result, "netmask"); - } + Assert.AreEqual(netmask, result, "netmask"); + } /// /// Test. @@ -1884,12 +1884,12 @@ public void ToNetmask1() [TestMethod] public void ToNetmask0() { - byte cidr = 0; - string netmask = "::"; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); + byte cidr = 0; + string netmask = "::"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); - Assert.AreEqual(netmask, result, "netmask"); - } + Assert.AreEqual(netmask, result, "netmask"); + } /// /// Test. @@ -1898,9 +1898,9 @@ public void ToNetmask0() [ExpectedException(typeof(ArgumentOutOfRangeException))] public void ToNetmaskOore1() { - byte cidr = 129; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); - } + byte cidr = 129; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); + } #endregion @@ -1912,12 +1912,12 @@ public void ToNetmaskOore1() [TestMethod] public void TestValidNetmask0() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); - bool expected = true; - bool result = IPNetwork2.ValidNetmask(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); + bool expected = true; + bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); - } + Assert.AreEqual(expected, result, "ValidNetmask"); + } /// /// Test. @@ -1925,12 +1925,12 @@ public void TestValidNetmask0() [TestMethod] public void TestValidNetmask1() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); - bool expected = true; - bool result = IPNetwork2.ValidNetmask(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); + bool expected = true; + bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); - } + Assert.AreEqual(expected, result, "ValidNetmask"); + } /// /// Test. @@ -1938,12 +1938,12 @@ public void TestValidNetmask1() [TestMethod] public void TestValidNetmask2() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); - bool expected = true; - bool result = IPNetwork2.ValidNetmask(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); + bool expected = true; + bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); - } + Assert.AreEqual(expected, result, "ValidNetmask"); + } /// /// Test. @@ -1951,12 +1951,12 @@ public void TestValidNetmask2() [TestMethod] public void TestValidNetmaskEae1() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:0000:ffff"); - bool expected = false; - bool result = IPNetwork2.ValidNetmask(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:0000:ffff"); + bool expected = false; + bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); - } + Assert.AreEqual(expected, result, "ValidNetmask"); + } /// /// Test. @@ -1964,12 +1964,12 @@ public void TestValidNetmaskEae1() [TestMethod] public void TestValidNetmaskEae3() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:0000:0001"); - bool expected = false; - bool result = IPNetwork2.ValidNetmask(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:0000:0001"); + bool expected = false; + bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); - } + Assert.AreEqual(expected, result, "ValidNetmask"); + } #endregion @@ -1981,12 +1981,12 @@ public void TestValidNetmaskEae3() [TestMethod] public void TestBitsSet128() { - var ip = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); - uint bits = 128; - uint result = IPNetwork2.BitsSet(ip); + var ip = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); + uint bits = 128; + uint result = IPNetwork2.BitsSet(ip); - Assert.AreEqual(bits, result, "BitsSet"); - } + Assert.AreEqual(bits, result, "BitsSet"); + } /// /// Test. @@ -1994,12 +1994,12 @@ public void TestBitsSet128() [TestMethod] public void TestBitsSet120() { - var ip = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); - uint bits = 124; - uint result = IPNetwork2.BitsSet(ip); + var ip = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); + uint bits = 124; + uint result = IPNetwork2.BitsSet(ip); - Assert.AreEqual(bits, result, "BitsSet"); - } + Assert.AreEqual(bits, result, "BitsSet"); + } /// /// Test. @@ -2007,12 +2007,12 @@ public void TestBitsSet120() [TestMethod] public void TestBitsSet16() { - var ip = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); - uint bits = 112; - uint result = IPNetwork2.BitsSet(ip); + var ip = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); + uint bits = 112; + uint result = IPNetwork2.BitsSet(ip); - Assert.AreEqual(bits, result, "BitsSet"); - } + Assert.AreEqual(bits, result, "BitsSet"); + } /// /// Test. @@ -2020,12 +2020,12 @@ public void TestBitsSet16() [TestMethod] public void TestBitsSet4() { - var ip = IPAddress.Parse("f0f0:f0f0:f0f0:f0f0:f0f0:f0f0:f0f0:f0f0"); - uint bits = 64; - uint result = IPNetwork2.BitsSet(ip); + var ip = IPAddress.Parse("f0f0:f0f0:f0f0:f0f0:f0f0:f0f0:f0f0:f0f0"); + uint bits = 64; + uint result = IPNetwork2.BitsSet(ip); - Assert.AreEqual(bits, result, "BitsSet"); - } + Assert.AreEqual(bits, result, "BitsSet"); + } #endregion @@ -2037,14 +2037,14 @@ public void TestBitsSet4() [TestMethod] public void TestContains1() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - var ipaddress = IPAddress.Parse("2001:0db8::1"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipaddress = IPAddress.Parse("2001:0db8::1"); - bool result = ipnetwork.Contains(ipaddress); - bool expected = true; + bool result = ipnetwork.Contains(ipaddress); + bool expected = true; - Assert.AreEqual(expected, result, "contains"); - } + Assert.AreEqual(expected, result, "contains"); + } /// /// Test. @@ -2052,14 +2052,14 @@ public void TestContains1() [TestMethod] public void TestContains2() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - var ipaddress = IPAddress.Parse("2001:0db8:0:1::"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipaddress = IPAddress.Parse("2001:0db8:0:1::"); - bool result = ipnetwork.Contains(ipaddress); - bool expected = false; + bool result = ipnetwork.Contains(ipaddress); + bool expected = false; - Assert.AreEqual(expected, result, "contains"); - } + Assert.AreEqual(expected, result, "contains"); + } /// /// Test. @@ -2067,14 +2067,14 @@ public void TestContains2() [TestMethod] public void TestContains3() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/64"); - bool result = ipnetwork.Contains(ipnetwork2); - bool expected = true; + bool result = ipnetwork.Contains(ipnetwork2); + bool expected = true; - Assert.AreEqual(expected, result, "contains"); - } + Assert.AreEqual(expected, result, "contains"); + } /// /// Test. @@ -2082,14 +2082,14 @@ public void TestContains3() [TestMethod] public void TestContains4() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/65"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/65"); - bool result = ipnetwork.Contains(ipnetwork2); - bool expected = true; + bool result = ipnetwork.Contains(ipnetwork2); + bool expected = true; - Assert.AreEqual(expected, result, "contains"); - } + Assert.AreEqual(expected, result, "contains"); + } /// /// Test. @@ -2097,14 +2097,14 @@ public void TestContains4() [TestMethod] public void TestContains5() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - var ipnetwork2 = IPNetwork2.Parse("2001:0db8:1::/65"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork2 = IPNetwork2.Parse("2001:0db8:1::/65"); - bool result = ipnetwork.Contains(ipnetwork2); - bool expected = false; + bool result = ipnetwork.Contains(ipnetwork2); + bool expected = false; - Assert.AreEqual(expected, result, "contains"); - } + Assert.AreEqual(expected, result, "contains"); + } /// /// Test. @@ -2112,14 +2112,14 @@ public void TestContains5() [TestMethod] public void TestContains6() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/63"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/63"); - bool result = ipnetwork.Contains(ipnetwork2); - bool expected = false; + bool result = ipnetwork.Contains(ipnetwork2); + bool expected = false; - Assert.AreEqual(expected, result, "contains"); - } + Assert.AreEqual(expected, result, "contains"); + } /// /// Test. @@ -2128,11 +2128,11 @@ public void TestContains6() [ExpectedException(typeof(ArgumentNullException))] public void TestContains10() { - var ipnetwork = IPNetwork2.Parse("::/0"); - IPAddress ipaddress = null; + var ipnetwork = IPNetwork2.Parse("::/0"); + IPAddress ipaddress = null; - bool result = ipnetwork.Contains(ipaddress); - } + bool result = ipnetwork.Contains(ipaddress); + } /// /// Test. @@ -2140,12 +2140,12 @@ public void TestContains10() [TestMethod] public void TestContains11_different_address_family_returns_false() { - var ipnetwork = IPNetwork2.Parse("::1"); // IPv6 - var ipaddress = IPAddress.Parse("127.0.0.1"); // IPv4 + var ipnetwork = IPNetwork2.Parse("::1"); // IPv6 + var ipaddress = IPAddress.Parse("127.0.0.1"); // IPv4 - bool result = ipnetwork.Contains(ipaddress); - Assert.AreEqual(false, result, "contains"); - } + bool result = ipnetwork.Contains(ipaddress); + Assert.AreEqual(false, result, "contains"); + } #endregion @@ -2158,10 +2158,10 @@ public void TestContains11_different_address_family_returns_false() [ExpectedException(typeof(ArgumentNullException))] public void TestOverlap2() { - var network1 = IPNetwork2.Parse("2001:0db8::/0"); - IPNetwork2 network2 = null; - network1.Overlap(network2); - } + var network1 = IPNetwork2.Parse("2001:0db8::/0"); + IPNetwork2 network2 = null; + network1.Overlap(network2); + } /// /// Test. @@ -2169,13 +2169,13 @@ public void TestOverlap2() [TestMethod] public void TestOverlap3() { - var network1 = IPNetwork2.Parse("2001:0db8::/64"); - var network2 = IPNetwork2.Parse("2001:0db8::/64"); - bool result = network1.Overlap(network2); - bool expected = true; + var network1 = IPNetwork2.Parse("2001:0db8::/64"); + var network2 = IPNetwork2.Parse("2001:0db8::/64"); + bool result = network1.Overlap(network2); + bool expected = true; - Assert.AreEqual(expected, result, "overlap"); - } + Assert.AreEqual(expected, result, "overlap"); + } /// /// Test. @@ -2183,13 +2183,13 @@ public void TestOverlap3() [TestMethod] public void TestOverlap4() { - var network1 = IPNetwork2.Parse("2001:0db8::/64"); - var network2 = IPNetwork2.Parse("2001:0db8:0:0:1::/65"); - bool result = network1.Overlap(network2); - bool expected = true; + var network1 = IPNetwork2.Parse("2001:0db8::/64"); + var network2 = IPNetwork2.Parse("2001:0db8:0:0:1::/65"); + bool result = network1.Overlap(network2); + bool expected = true; - Assert.AreEqual(expected, result, "overlap"); - } + Assert.AreEqual(expected, result, "overlap"); + } /// /// Test. @@ -2197,13 +2197,13 @@ public void TestOverlap4() [TestMethod] public void TestOverlap5() { - var network1 = IPNetwork2.Parse("2001:0db8:0:1::/68"); - var network2 = IPNetwork2.Parse("2001:0db8:0:2::/68"); - bool result = network1.Overlap(network2); - bool expected = false; + var network1 = IPNetwork2.Parse("2001:0db8:0:1::/68"); + var network2 = IPNetwork2.Parse("2001:0db8:0:2::/68"); + bool result = network1.Overlap(network2); + bool expected = false; - Assert.AreEqual(expected, result, "overlap"); - } + Assert.AreEqual(expected, result, "overlap"); + } /// /// Test. @@ -2211,13 +2211,13 @@ public void TestOverlap5() [TestMethod] public void TestOverlap6() { - var network1 = IPNetwork2.Parse("2001:0db8:0:1::/68"); - var network2 = IPNetwork2.Parse("2001:0db8:0:2::/62"); - bool result = network1.Overlap(network2); - bool expected = true; + var network1 = IPNetwork2.Parse("2001:0db8:0:1::/68"); + var network2 = IPNetwork2.Parse("2001:0db8:0:2::/62"); + bool result = network1.Overlap(network2); + bool expected = true; - Assert.AreEqual(expected, result, "overlap"); - } + Assert.AreEqual(expected, result, "overlap"); + } #endregion @@ -2229,16 +2229,16 @@ public void TestOverlap6() [TestMethod] public void Example1() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - Console.WriteLine("Network : {0}", ipnetwork.Network); - Console.WriteLine("Netmask : {0}", ipnetwork.Netmask); - Console.WriteLine("Broadcast : {0}", ipnetwork.Broadcast); - Console.WriteLine("FirstUsable : {0}", ipnetwork.FirstUsable); - Console.WriteLine("LastUsable : {0}", ipnetwork.LastUsable); - Console.WriteLine("Usable : {0}", ipnetwork.Usable); - Console.WriteLine("Cidr : {0}", ipnetwork.Cidr); - } + Console.WriteLine("Network : {0}", ipnetwork.Network); + Console.WriteLine("Netmask : {0}", ipnetwork.Netmask); + Console.WriteLine("Broadcast : {0}", ipnetwork.Broadcast); + Console.WriteLine("FirstUsable : {0}", ipnetwork.FirstUsable); + Console.WriteLine("LastUsable : {0}", ipnetwork.LastUsable); + Console.WriteLine("Usable : {0}", ipnetwork.Usable); + Console.WriteLine("Cidr : {0}", ipnetwork.Cidr); + } /// /// Test. @@ -2246,30 +2246,30 @@ public void Example1() [TestMethod] public void Example2() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - var ipaddress = IPAddress.Parse("2001:0db8::1"); - var ipaddress2 = IPAddress.Parse("2001:0db9::1"); + var ipaddress = IPAddress.Parse("2001:0db8::1"); + var ipaddress2 = IPAddress.Parse("2001:0db9::1"); - var ipnetwork2 = IPNetwork2.Parse("2001:0db8::1/128"); - var ipnetwork3 = IPNetwork2.Parse("2001:0db9::1/64"); + var ipnetwork2 = IPNetwork2.Parse("2001:0db8::1/128"); + var ipnetwork3 = IPNetwork2.Parse("2001:0db9::1/64"); - bool contains1 = ipnetwork.Contains(ipaddress); - bool contains2 = ipnetwork.Contains(ipaddress2); - bool contains3 = ipnetwork.Contains(ipnetwork2); - bool contains4 = ipnetwork.Contains(ipnetwork3); + bool contains1 = ipnetwork.Contains(ipaddress); + bool contains2 = ipnetwork.Contains(ipaddress2); + bool contains3 = ipnetwork.Contains(ipnetwork2); + bool contains4 = ipnetwork.Contains(ipnetwork3); - bool overlap1 = ipnetwork.Overlap(ipnetwork2); - bool overlap2 = ipnetwork.Overlap(ipnetwork3); + bool overlap1 = ipnetwork.Overlap(ipnetwork2); + bool overlap2 = ipnetwork.Overlap(ipnetwork3); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress, contains1); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress2, contains2); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipnetwork2, contains3); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipnetwork3, contains4); + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress, contains1); + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress2, contains2); + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipnetwork2, contains3); + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipnetwork3, contains4); - Console.WriteLine("{0} overlap {1} : {2}", ipnetwork, ipnetwork2, overlap1); - Console.WriteLine("{0} overlap {1} : {2}", ipnetwork, ipnetwork3, overlap2); - } + Console.WriteLine("{0} overlap {1} : {2}", ipnetwork, ipnetwork2, overlap1); + Console.WriteLine("{0} overlap {1} : {2}", ipnetwork, ipnetwork3, overlap2); + } /// /// Test. @@ -2277,20 +2277,20 @@ public void Example2() [TestMethod] public void Example4() { - var wholeInternet = IPNetwork2.Parse("::/0"); - byte newCidr = 2; - IPNetworkCollection subneted = wholeInternet.Subnet(newCidr); + var wholeInternet = IPNetwork2.Parse("::/0"); + byte newCidr = 2; + IPNetworkCollection subneted = wholeInternet.Subnet(newCidr); - Console.WriteLine("{0} was subnetted into {1} subnets", wholeInternet, subneted.Count); - Console.WriteLine("First: {0}", subneted[0]); - Console.WriteLine("Last : {0}", subneted[subneted.Count - 1]); - Console.WriteLine("All :"); + Console.WriteLine("{0} was subnetted into {1} subnets", wholeInternet, subneted.Count); + Console.WriteLine("First: {0}", subneted[0]); + Console.WriteLine("Last : {0}", subneted[subneted.Count - 1]); + Console.WriteLine("All :"); - foreach (IPNetwork2 ipnetwork in subneted) - { - Console.WriteLine("{0}", ipnetwork); - } + foreach (IPNetwork2 ipnetwork in subneted) + { + Console.WriteLine("{0}", ipnetwork); } + } /// /// Test. @@ -2298,12 +2298,12 @@ public void Example4() [TestMethod] public void Example5() { - var ipnetwork1 = IPNetwork2.Parse("2001:0db8::/64"); - var ipnetwork2 = IPNetwork2.Parse("2001:0db9::/64"); - IPNetwork2[] ipnetwork3 = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2 }); + var ipnetwork1 = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork2 = IPNetwork2.Parse("2001:0db9::/64"); + IPNetwork2[] ipnetwork3 = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2 }); - Console.WriteLine("{0} + {1} = {2}", ipnetwork1, ipnetwork2, ipnetwork3[0]); - } + Console.WriteLine("{0} + {1} = {2}", ipnetwork1, ipnetwork2, ipnetwork3[0]); + } /// /// Test. @@ -2311,17 +2311,17 @@ public void Example5() [TestMethod] public void Example6() { - var ipnetwork = IPNetwork2.Parse("fe80::202:b3ff:fe1e:8329/24"); + var ipnetwork = IPNetwork2.Parse("fe80::202:b3ff:fe1e:8329/24"); - var ipaddress = IPAddress.Parse("2001:db8::"); - var ipaddress2 = IPAddress.Parse("fe80::202:b3ff:fe1e:1"); + var ipaddress = IPAddress.Parse("2001:db8::"); + var ipaddress2 = IPAddress.Parse("fe80::202:b3ff:fe1e:1"); - bool contains1 = ipnetwork.Contains(ipaddress); - bool contains2 = ipnetwork.Contains(ipaddress2); + bool contains1 = ipnetwork.Contains(ipaddress); + bool contains2 = ipnetwork.Contains(ipaddress2); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress, contains1); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress2, contains2); - } + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress, contains1); + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress2, contains2); + } /// /// Test. @@ -2329,14 +2329,14 @@ public void Example6() [TestMethod] public void Example8() { - var network = IPNetwork2.Parse("::/124"); - IPNetworkCollection ips = network.Subnet(128); + var network = IPNetwork2.Parse("::/124"); + IPNetworkCollection ips = network.Subnet(128); - foreach (IPNetwork2 ip in ips) - { - Console.WriteLine("{0}", ip); - } + foreach (IPNetwork2 ip in ips) + { + Console.WriteLine("{0}", ip); } + } /// /// Test. @@ -2344,14 +2344,14 @@ public void Example8() [TestMethod] public void Example11() { - var defaultParse = IPNetwork2.Parse("::1"); - var classFullParse = IPNetwork2.Parse("::1", CidrGuess.ClassFull); - var classLessParse = IPNetwork2.Parse("::1", CidrGuess.ClassLess); + var defaultParse = IPNetwork2.Parse("::1"); + var classFullParse = IPNetwork2.Parse("::1", CidrGuess.ClassFull); + var classLessParse = IPNetwork2.Parse("::1", CidrGuess.ClassLess); - Console.WriteLine("IPV6 Default Parse : {0}", defaultParse); - Console.WriteLine("IPV6 ClassFull Parse : {0}", classFullParse); - Console.WriteLine("IPV6 ClassLess Parse : {0}", classLessParse); - } + Console.WriteLine("IPV6 Default Parse : {0}", defaultParse); + Console.WriteLine("IPV6 ClassFull Parse : {0}", classFullParse); + Console.WriteLine("IPV6 ClassLess Parse : {0}", classLessParse); + } #endregion @@ -2363,12 +2363,12 @@ public void Example11() [TestMethod] public void TestToString() { - var ipnetwork = IPNetwork2.Parse("2001:0db8:0000:0000:0000:0000:0000:0000/32"); - string expected = "2001:db8::/32"; - string result = ipnetwork.ToString(); + var ipnetwork = IPNetwork2.Parse("2001:0db8:0000:0000:0000:0000:0000:0000/32"); + string expected = "2001:db8::/32"; + string result = ipnetwork.ToString(); - Assert.AreEqual(expected, result, "ToString"); - } + Assert.AreEqual(expected, result, "ToString"); + } /// /// Test. @@ -2376,12 +2376,12 @@ public void TestToString() [TestMethod] public void TestToString1() { - var ipnetwork = IPNetwork2.Parse("2001:0db8:1:2:3:4:5:6/32"); - string expected = "2001:db8::/32"; - string result = ipnetwork.ToString(); + var ipnetwork = IPNetwork2.Parse("2001:0db8:1:2:3:4:5:6/32"); + string expected = "2001:db8::/32"; + string result = ipnetwork.ToString(); - Assert.AreEqual(expected, result, "ToString"); - } + Assert.AreEqual(expected, result, "ToString"); + } /// /// Test. @@ -2389,12 +2389,12 @@ public void TestToString1() [TestMethod] public void TestToString2() { - var ipnetwork = IPNetwork2.Parse("2001:0db8:1:2:3:4:5:6/64"); - string expected = "2001:db8:1:2::/64"; - string result = ipnetwork.ToString(); + var ipnetwork = IPNetwork2.Parse("2001:0db8:1:2:3:4:5:6/64"); + string expected = "2001:db8:1:2::/64"; + string result = ipnetwork.ToString(); - Assert.AreEqual(expected, result, "ToString"); - } + Assert.AreEqual(expected, result, "ToString"); + } /// /// Test. @@ -2402,12 +2402,12 @@ public void TestToString2() [TestMethod] public void TestToString3() { - var ipnetwork = IPNetwork2.Parse("2001:0db8:1:2:3:4:5:6/100"); - string expected = "2001:db8:1:2:3:4::/100"; - string result = ipnetwork.ToString(); + var ipnetwork = IPNetwork2.Parse("2001:0db8:1:2:3:4:5:6/100"); + string expected = "2001:db8:1:2:3:4::/100"; + string result = ipnetwork.ToString(); - Assert.AreEqual(expected, result, "ToString"); - } + Assert.AreEqual(expected, result, "ToString"); + } #endregion @@ -2420,11 +2420,11 @@ public void TestToString3() [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestSubnet3() { - var ipnetwork = IPNetwork2.Parse("::"); - byte cidr = 129; + var ipnetwork = IPNetwork2.Parse("::"); + byte cidr = 129; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - } + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + } /// /// Test. @@ -2433,11 +2433,11 @@ public void TestSubnet3() [ExpectedException(typeof(ArgumentException))] public void TestSubnet4() { - var ipnetwork = IPNetwork2.Parse("::"); - byte cidr = 1; + var ipnetwork = IPNetwork2.Parse("::"); + byte cidr = 1; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - } + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + } /// /// Test. @@ -2445,14 +2445,14 @@ public void TestSubnet4() [TestMethod] public void TestSubnet5() { - var ipnetwork = IPNetwork2.Parse("1:1:1:1:1:1:1:1"); - byte cidr = 65; + var ipnetwork = IPNetwork2.Parse("1:1:1:1:1:1:1:1"); + byte cidr = 65; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - Assert.AreEqual(2, subnets.Count, "count"); - Assert.AreEqual("1:1:1:1::/65", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("1:1:1:1:8000::/65", subnets[1].ToString(), "subnet2"); - } + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + Assert.AreEqual(2, subnets.Count, "count"); + Assert.AreEqual("1:1:1:1::/65", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("1:1:1:1:8000::/65", subnets[1].ToString(), "subnet2"); + } /// /// Test. @@ -2460,28 +2460,28 @@ public void TestSubnet5() [TestMethod] public void TestSubnet6() { - var ipnetwork = IPNetwork2.Parse("1:1:1:1:1:1:1:1"); - byte cidr = 68; - - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - Assert.AreEqual(16, subnets.Count, "count"); - Assert.AreEqual("1:1:1:1::/68", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("1:1:1:1:1000::/68", subnets[1].ToString(), "subnet2"); - Assert.AreEqual("1:1:1:1:2000::/68", subnets[2].ToString(), "subnet3"); - Assert.AreEqual("1:1:1:1:3000::/68", subnets[3].ToString(), "subnet4"); - Assert.AreEqual("1:1:1:1:4000::/68", subnets[4].ToString(), "subnet5"); - Assert.AreEqual("1:1:1:1:5000::/68", subnets[5].ToString(), "subnet6"); - Assert.AreEqual("1:1:1:1:6000::/68", subnets[6].ToString(), "subnet7"); - Assert.AreEqual("1:1:1:1:7000::/68", subnets[7].ToString(), "subnet8"); - Assert.AreEqual("1:1:1:1:8000::/68", subnets[8].ToString(), "subnet9"); - Assert.AreEqual("1:1:1:1:9000::/68", subnets[9].ToString(), "subnet10"); - Assert.AreEqual("1:1:1:1:a000::/68", subnets[10].ToString(), "subnet11"); - Assert.AreEqual("1:1:1:1:b000::/68", subnets[11].ToString(), "subnet12"); - Assert.AreEqual("1:1:1:1:c000::/68", subnets[12].ToString(), "subnet13"); - Assert.AreEqual("1:1:1:1:d000::/68", subnets[13].ToString(), "subnet14"); - Assert.AreEqual("1:1:1:1:e000::/68", subnets[14].ToString(), "subnet15"); - Assert.AreEqual("1:1:1:1:f000::/68", subnets[15].ToString(), "subnet16"); - } + var ipnetwork = IPNetwork2.Parse("1:1:1:1:1:1:1:1"); + byte cidr = 68; + + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + Assert.AreEqual(16, subnets.Count, "count"); + Assert.AreEqual("1:1:1:1::/68", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("1:1:1:1:1000::/68", subnets[1].ToString(), "subnet2"); + Assert.AreEqual("1:1:1:1:2000::/68", subnets[2].ToString(), "subnet3"); + Assert.AreEqual("1:1:1:1:3000::/68", subnets[3].ToString(), "subnet4"); + Assert.AreEqual("1:1:1:1:4000::/68", subnets[4].ToString(), "subnet5"); + Assert.AreEqual("1:1:1:1:5000::/68", subnets[5].ToString(), "subnet6"); + Assert.AreEqual("1:1:1:1:6000::/68", subnets[6].ToString(), "subnet7"); + Assert.AreEqual("1:1:1:1:7000::/68", subnets[7].ToString(), "subnet8"); + Assert.AreEqual("1:1:1:1:8000::/68", subnets[8].ToString(), "subnet9"); + Assert.AreEqual("1:1:1:1:9000::/68", subnets[9].ToString(), "subnet10"); + Assert.AreEqual("1:1:1:1:a000::/68", subnets[10].ToString(), "subnet11"); + Assert.AreEqual("1:1:1:1:b000::/68", subnets[11].ToString(), "subnet12"); + Assert.AreEqual("1:1:1:1:c000::/68", subnets[12].ToString(), "subnet13"); + Assert.AreEqual("1:1:1:1:d000::/68", subnets[13].ToString(), "subnet14"); + Assert.AreEqual("1:1:1:1:e000::/68", subnets[14].ToString(), "subnet15"); + Assert.AreEqual("1:1:1:1:f000::/68", subnets[15].ToString(), "subnet16"); + } /// /// Test. @@ -2489,14 +2489,14 @@ public void TestSubnet6() [TestMethod] public void TestSubnet7() { - var ipnetwork = IPNetwork2.Parse("1:1:1:1:1:1:1:1"); - byte cidr = 72; + var ipnetwork = IPNetwork2.Parse("1:1:1:1:1:1:1:1"); + byte cidr = 72; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - Assert.AreEqual(256, subnets.Count, "count"); - Assert.AreEqual("1:1:1:1::/72", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("1:1:1:1:ff00::/72", subnets[255].ToString(), "subnet256"); - } + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + Assert.AreEqual(256, subnets.Count, "count"); + Assert.AreEqual("1:1:1:1::/72", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("1:1:1:1:ff00::/72", subnets[255].ToString(), "subnet256"); + } /// /// Test. @@ -2504,15 +2504,15 @@ public void TestSubnet7() [TestMethod] public void TestSubnet9() { - var ipnetwork = IPNetwork2.Parse("2001:db08:1:1:1:1:1:1"); - byte cidr = 128; - var count = BigInteger.Pow(2, ipnetwork.Cidr); - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - Assert.AreEqual(count, subnets.Count, "count"); - Assert.AreEqual("2001:db08:1:1::/128", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("2001:db08:1:1::ff/128", subnets[255].ToString(), "subnet256"); - Assert.AreEqual("2001:db08:1:1:ffff:ffff:ffff:ffff/128", subnets[count - 1].ToString(), "last"); - } + var ipnetwork = IPNetwork2.Parse("2001:db08:1:1:1:1:1:1"); + byte cidr = 128; + var count = BigInteger.Pow(2, ipnetwork.Cidr); + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + Assert.AreEqual(count, subnets.Count, "count"); + Assert.AreEqual("2001:db08:1:1::/128", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("2001:db08:1:1::ff/128", subnets[255].ToString(), "subnet256"); + Assert.AreEqual("2001:db08:1:1:ffff:ffff:ffff:ffff/128", subnets[count - 1].ToString(), "last"); + } /// /// Test. @@ -2520,16 +2520,16 @@ public void TestSubnet9() [TestMethod] public void TestSubnet10() { - var ipnetwork = IPNetwork2.Parse("2001:db08::/0"); - byte cidr = 128; - var count = BigInteger.Pow(2, 128 - ipnetwork.Cidr); + var ipnetwork = IPNetwork2.Parse("2001:db08::/0"); + byte cidr = 128; + var count = BigInteger.Pow(2, 128 - ipnetwork.Cidr); - // Here I spawm a OOM dragon ! beware of the beast ! - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - Assert.AreEqual(count, subnets.Count, "count"); - Assert.AreEqual("::/128", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128", subnets[count - 1].ToString(), "last"); - } + // Here I spawm a OOM dragon ! beware of the beast ! + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + Assert.AreEqual(count, subnets.Count, "count"); + Assert.AreEqual("::/128", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128", subnets[count - 1].ToString(), "last"); + } /// /// Test. @@ -2537,16 +2537,16 @@ public void TestSubnet10() [TestMethod] public void TestSubnet12() { - var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); - byte cidr = 70; - int i = -1; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - foreach (IPNetwork2 ipn in subnets) - { - i++; - Assert.AreEqual(subnets[i], ipn, "subnet"); - } + var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); + byte cidr = 70; + int i = -1; + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + foreach (IPNetwork2 ipn in subnets) + { + i++; + Assert.AreEqual(subnets[i], ipn, "subnet"); } + } /// /// Test. @@ -2555,11 +2555,11 @@ public void TestSubnet12() [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestSubnet13() { - var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); - byte cidr = 70; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - IPNetwork2 error = subnets[1000]; - } + var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); + byte cidr = 70; + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + IPNetwork2 error = subnets[1000]; + } /// /// Test. @@ -2567,18 +2567,18 @@ public void TestSubnet13() [TestMethod] public void TestSubnet14() { - var network = IPNetwork2.Parse("15.0.0.0/8"); - IPNetworkCollection subnets = network.Subnet(12); - Assert.AreEqual(subnets[0].ToString(), "15.0.0.0/12", "subnets[0]"); - Assert.AreEqual(subnets[1].ToString(), "15.16.0.0/12", "subnets[1]"); - Assert.AreEqual(subnets[2].ToString(), "15.32.0.0/12", "subnets[2]"); - Assert.AreEqual(subnets[15].ToString(), "15.240.0.0/12", "subnets[15]"); - - foreach (IPNetwork2 ipn in subnets) - { - Console.WriteLine(ipn); - } + var network = IPNetwork2.Parse("15.0.0.0/8"); + IPNetworkCollection subnets = network.Subnet(12); + Assert.AreEqual(subnets[0].ToString(), "15.0.0.0/12", "subnets[0]"); + Assert.AreEqual(subnets[1].ToString(), "15.16.0.0/12", "subnets[1]"); + Assert.AreEqual(subnets[2].ToString(), "15.32.0.0/12", "subnets[2]"); + Assert.AreEqual(subnets[15].ToString(), "15.240.0.0/12", "subnets[15]"); + + foreach (IPNetwork2 ipn in subnets) + { + Console.WriteLine(ipn); } + } #endregion @@ -2590,14 +2590,14 @@ public void TestSubnet14() [TestMethod] public void TestTrySubnet3() { - var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); - byte cidr = 255; + var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); + byte cidr = 255; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + IPNetworkCollection subnets = null; + bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); - Assert.AreEqual(false, subnetted, "subnetted"); - } + Assert.AreEqual(false, subnetted, "subnetted"); + } /// /// Test. @@ -2605,14 +2605,14 @@ public void TestTrySubnet3() [TestMethod] public void TestTrySubnet4() { - var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); - byte cidr = 63; + var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); + byte cidr = 63; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + IPNetworkCollection subnets = null; + bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); - Assert.AreEqual(false, subnetted, "subnetted"); - } + Assert.AreEqual(false, subnetted, "subnetted"); + } /// /// Test. @@ -2620,17 +2620,17 @@ public void TestTrySubnet4() [TestMethod] public void TestTrySubnet5() { - var ipnetwork = IPNetwork2.Parse("2001:db8::/64"); - byte cidr = 65; + var ipnetwork = IPNetwork2.Parse("2001:db8::/64"); + byte cidr = 65; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + IPNetworkCollection subnets = null; + bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); - Assert.AreEqual(true, subnetted, "subnetted"); - Assert.AreEqual(2, subnets.Count, "count"); - Assert.AreEqual("2001:db8::/65", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("2001:db8:0:0:8000::/65", subnets[1].ToString(), "subnet2"); - } + Assert.AreEqual(true, subnetted, "subnetted"); + Assert.AreEqual(2, subnets.Count, "count"); + Assert.AreEqual("2001:db8::/65", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("2001:db8:0:0:8000::/65", subnets[1].ToString(), "subnet2"); + } /// /// Test. @@ -2638,31 +2638,31 @@ public void TestTrySubnet5() [TestMethod] public void TestTrySubnet6() { - var ipnetwork = IPNetwork2.Parse("2001:db8::/64"); - byte cidr = 68; - - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); - - Assert.AreEqual(true, subnetted, "subnetted"); - Assert.AreEqual(16, subnets.Count, "count"); - Assert.AreEqual("2001:db8::/68", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("2001:db8:0:0:1000::/68", subnets[1].ToString(), "subnet2"); - Assert.AreEqual("2001:db8:0:0:2000::/68", subnets[2].ToString(), "subnet3"); - Assert.AreEqual("2001:db8:0:0:3000::/68", subnets[3].ToString(), "subnet4"); - Assert.AreEqual("2001:db8:0:0:4000::/68", subnets[4].ToString(), "subnet5"); - Assert.AreEqual("2001:db8:0:0:5000::/68", subnets[5].ToString(), "subnet6"); - Assert.AreEqual("2001:db8:0:0:6000::/68", subnets[6].ToString(), "subnet7"); - Assert.AreEqual("2001:db8:0:0:7000::/68", subnets[7].ToString(), "subnet8"); - Assert.AreEqual("2001:db8:0:0:8000::/68", subnets[8].ToString(), "subnet9"); - Assert.AreEqual("2001:db8:0:0:9000::/68", subnets[9].ToString(), "subnet10"); - Assert.AreEqual("2001:db8:0:0:a000::/68", subnets[10].ToString(), "subnet11"); - Assert.AreEqual("2001:db8:0:0:b000::/68", subnets[11].ToString(), "subnet12"); - Assert.AreEqual("2001:db8:0:0:c000::/68", subnets[12].ToString(), "subnet13"); - Assert.AreEqual("2001:db8:0:0:d000::/68", subnets[13].ToString(), "subnet14"); - Assert.AreEqual("2001:db8:0:0:e000::/68", subnets[14].ToString(), "subnet15"); - Assert.AreEqual("2001:db8:0:0:f000::/68", subnets[15].ToString(), "subnet16"); - } + var ipnetwork = IPNetwork2.Parse("2001:db8::/64"); + byte cidr = 68; + + IPNetworkCollection subnets = null; + bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + + Assert.AreEqual(true, subnetted, "subnetted"); + Assert.AreEqual(16, subnets.Count, "count"); + Assert.AreEqual("2001:db8::/68", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("2001:db8:0:0:1000::/68", subnets[1].ToString(), "subnet2"); + Assert.AreEqual("2001:db8:0:0:2000::/68", subnets[2].ToString(), "subnet3"); + Assert.AreEqual("2001:db8:0:0:3000::/68", subnets[3].ToString(), "subnet4"); + Assert.AreEqual("2001:db8:0:0:4000::/68", subnets[4].ToString(), "subnet5"); + Assert.AreEqual("2001:db8:0:0:5000::/68", subnets[5].ToString(), "subnet6"); + Assert.AreEqual("2001:db8:0:0:6000::/68", subnets[6].ToString(), "subnet7"); + Assert.AreEqual("2001:db8:0:0:7000::/68", subnets[7].ToString(), "subnet8"); + Assert.AreEqual("2001:db8:0:0:8000::/68", subnets[8].ToString(), "subnet9"); + Assert.AreEqual("2001:db8:0:0:9000::/68", subnets[9].ToString(), "subnet10"); + Assert.AreEqual("2001:db8:0:0:a000::/68", subnets[10].ToString(), "subnet11"); + Assert.AreEqual("2001:db8:0:0:b000::/68", subnets[11].ToString(), "subnet12"); + Assert.AreEqual("2001:db8:0:0:c000::/68", subnets[12].ToString(), "subnet13"); + Assert.AreEqual("2001:db8:0:0:d000::/68", subnets[13].ToString(), "subnet14"); + Assert.AreEqual("2001:db8:0:0:e000::/68", subnets[14].ToString(), "subnet15"); + Assert.AreEqual("2001:db8:0:0:f000::/68", subnets[15].ToString(), "subnet16"); + } #endregion @@ -2674,16 +2674,16 @@ public void TestTrySubnet6() [TestMethod] public void TestTrySupernet1() { - var network1 = IPNetwork2.Parse("2001:db8::/65"); - var network2 = IPNetwork2.Parse("2001:db8:0:0:8000::/65"); - var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); - IPNetwork2 supernet; - bool supernetted = true; - bool result = network1.TrySupernet(network2, out supernet); + var network1 = IPNetwork2.Parse("2001:db8::/65"); + var network2 = IPNetwork2.Parse("2001:db8:0:0:8000::/65"); + var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); + IPNetwork2 supernet; + bool supernetted = true; + bool result = network1.TrySupernet(network2, out supernet); - Assert.AreEqual(supernetted, result, "supernetted"); - Assert.AreEqual(supernetExpected, supernet, "supernet"); - } + Assert.AreEqual(supernetted, result, "supernetted"); + Assert.AreEqual(supernetExpected, supernet, "supernet"); + } /// /// Test. @@ -2692,13 +2692,13 @@ public void TestTrySupernet1() [ExpectedException(typeof(ArgumentNullException))] public void TestTrySupernet2() { - IPNetwork2 network1 = null; - var network2 = IPNetwork2.Parse("2001:db8::/64"); - IPNetwork2 supernet; + IPNetwork2 network1 = null; + var network2 = IPNetwork2.Parse("2001:db8::/64"); + IPNetwork2 supernet; #pragma warning disable 0618 - bool result = IPNetwork2.TrySupernet(network1, network2, out supernet); + bool result = IPNetwork2.TrySupernet(network1, network2, out supernet); #pragma warning restore 0618 - } + } /// /// Test. @@ -2706,16 +2706,16 @@ public void TestTrySupernet2() [TestMethod] public void TestTrySupernet3() { - var network1 = IPNetwork2.Parse("2001:db8::/64"); - IPNetwork2 network2 = null; - IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; - bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + var network1 = IPNetwork2.Parse("2001:db8::/64"); + IPNetwork2 network2 = null; + IPNetwork2 supernetExpected = null; + IPNetwork2 supernet; + bool parsed = false; + bool result = network1.TrySupernet(network2, out supernet); - Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + Assert.AreEqual(supernetExpected, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } /// /// Test. @@ -2723,16 +2723,16 @@ public void TestTrySupernet3() [TestMethod] public void TestTrySupernet4() { - var network1 = IPNetwork2.Parse("2001:db8::/64"); - var network2 = IPNetwork2.Parse("2001:db9::/65"); - IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; - bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + var network1 = IPNetwork2.Parse("2001:db8::/64"); + var network2 = IPNetwork2.Parse("2001:db9::/65"); + IPNetwork2 supernetExpected = null; + IPNetwork2 supernet; + bool parsed = false; + bool result = network1.TrySupernet(network2, out supernet); - Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + Assert.AreEqual(supernetExpected, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } /// /// Test. @@ -2740,16 +2740,16 @@ public void TestTrySupernet4() [TestMethod] public void TestTrySupernet5() { - var network1 = IPNetwork2.Parse("2001:db8::/64"); - var network2 = IPNetwork2.Parse("2001:dba::/64"); - IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; - bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + var network1 = IPNetwork2.Parse("2001:db8::/64"); + var network2 = IPNetwork2.Parse("2001:dba::/64"); + IPNetwork2 supernetExpected = null; + IPNetwork2 supernet; + bool parsed = false; + bool result = network1.TrySupernet(network2, out supernet); - Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + Assert.AreEqual(supernetExpected, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } /// /// Test. @@ -2757,16 +2757,16 @@ public void TestTrySupernet5() [TestMethod] public void TestTrySupernet6() { - var network1 = IPNetwork2.Parse("2001:db8::/64"); - var network2 = IPNetwork2.Parse("2001:db8::1/65"); - var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); - IPNetwork2 supernet; - bool parsed = true; - bool result = network1.TrySupernet(network2, out supernet); + var network1 = IPNetwork2.Parse("2001:db8::/64"); + var network2 = IPNetwork2.Parse("2001:db8::1/65"); + var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); + IPNetwork2 supernet; + bool parsed = true; + bool result = network1.TrySupernet(network2, out supernet); - Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + Assert.AreEqual(supernetExpected, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } /// /// Test. @@ -2774,16 +2774,16 @@ public void TestTrySupernet6() [TestMethod] public void TestTrySupernet8() { - var network1 = IPNetwork2.Parse("2001:db0::/64"); - var network2 = IPNetwork2.Parse("2001:dbf::/64"); - IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; - bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + var network1 = IPNetwork2.Parse("2001:db0::/64"); + var network2 = IPNetwork2.Parse("2001:dbf::/64"); + IPNetwork2 supernetExpected = null; + IPNetwork2 supernet; + bool parsed = false; + bool result = network1.TrySupernet(network2, out supernet); - Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + Assert.AreEqual(supernetExpected, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } /// /// Test. @@ -2791,18 +2791,18 @@ public void TestTrySupernet8() [TestMethod] public void TestTrySupernet9() { - var network1 = IPNetwork2.Parse("192.168.1.1/24"); - var network2 = IPNetwork2.Parse("192.168.2.1/24"); - IPNetwork2[] network3 = { network1, network2 }; - IPNetwork2[] supernetExpected = { network1, network2 }; - IPNetwork2[] supernet; - bool parsed = true; - bool result = IPNetwork2.TrySupernet(network3, out supernet); - - Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); - Assert.AreEqual(supernetExpected[1], supernet[1], "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + var network1 = IPNetwork2.Parse("192.168.1.1/24"); + var network2 = IPNetwork2.Parse("192.168.2.1/24"); + IPNetwork2[] network3 = { network1, network2 }; + IPNetwork2[] supernetExpected = { network1, network2 }; + IPNetwork2[] supernet; + bool parsed = true; + bool result = IPNetwork2.TrySupernet(network3, out supernet); + + Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); + Assert.AreEqual(supernetExpected[1], supernet[1], "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } /// /// Test. @@ -2810,17 +2810,17 @@ public void TestTrySupernet9() [TestMethod] public void TestTrySupernet10() { - var network1 = IPNetwork2.Parse("2001:db8:0000::/65"); - var network2 = IPNetwork2.Parse("2001:db8:0:0:8000::/65"); - IPNetwork2[] network3 = { network1, network2 }; - IPNetwork2[] supernetExpected = { IPNetwork2.Parse("2001:db8::/64") }; - IPNetwork2[] supernet; - bool parsed = true; - bool result = IPNetwork2.TrySupernet(network3, out supernet); + var network1 = IPNetwork2.Parse("2001:db8:0000::/65"); + var network2 = IPNetwork2.Parse("2001:db8:0:0:8000::/65"); + IPNetwork2[] network3 = { network1, network2 }; + IPNetwork2[] supernetExpected = { IPNetwork2.Parse("2001:db8::/64") }; + IPNetwork2[] supernet; + bool parsed = true; + bool result = IPNetwork2.TrySupernet(network3, out supernet); - Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } /// /// Test. @@ -2828,15 +2828,15 @@ public void TestTrySupernet10() [TestMethod] public void TestTrySupernet11() { - IPNetwork2[] network3 = null; - IPNetwork2[] supernetExpected = { IPNetwork2.Parse("2001:db8::/64") }; - IPNetwork2[] supernet; - bool parsed = false; - bool result = IPNetwork2.TrySupernet(network3, out supernet); + IPNetwork2[] network3 = null; + IPNetwork2[] supernetExpected = { IPNetwork2.Parse("2001:db8::/64") }; + IPNetwork2[] supernet; + bool parsed = false; + bool result = IPNetwork2.TrySupernet(network3, out supernet); - Assert.AreEqual(null, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + Assert.AreEqual(null, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } #endregion @@ -2848,12 +2848,12 @@ public void TestTrySupernet11() [TestMethod] public void TestTryGuessCidrNull() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr(null, out cidr); + byte cidr; + bool parsed = IPNetwork2.TryGuessCidr(null, out cidr); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(0, cidr, "cidr"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(0, cidr, "cidr"); + } /// /// Test. @@ -2861,12 +2861,12 @@ public void TestTryGuessCidrNull() [TestMethod] public void TestTryGuessCidr1() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("::", out cidr); + byte cidr; + bool parsed = IPNetwork2.TryGuessCidr("::", out cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(64, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(64, cidr, "cidr"); + } /// /// Test. @@ -2874,12 +2874,12 @@ public void TestTryGuessCidr1() [TestMethod] public void TestTryGuessCidr2() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("2001:0db8::", out cidr); + byte cidr; + bool parsed = IPNetwork2.TryGuessCidr("2001:0db8::", out cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(64, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(64, cidr, "cidr"); + } #endregion @@ -2891,10 +2891,10 @@ public void TestTryGuessCidr2() [TestMethod] public void Total32() { - var network = IPNetwork2.Parse("::/128"); - int total = 1; - Assert.AreEqual(total, network.Total, "Total"); - } + var network = IPNetwork2.Parse("::/128"); + int total = 1; + Assert.AreEqual(total, network.Total, "Total"); + } /// /// Test. @@ -2902,10 +2902,10 @@ public void Total32() [TestMethod] public void Total31() { - var network = IPNetwork2.Parse("::/127"); - int total = 2; - Assert.AreEqual(total, network.Total, "Total"); - } + var network = IPNetwork2.Parse("::/127"); + int total = 2; + Assert.AreEqual(total, network.Total, "Total"); + } /// /// Test. @@ -2913,10 +2913,10 @@ public void Total31() [TestMethod] public void Total30() { - var network = IPNetwork2.Parse("::/126"); - int total = 4; - Assert.AreEqual(total, network.Total, "Total"); - } + var network = IPNetwork2.Parse("::/126"); + int total = 4; + Assert.AreEqual(total, network.Total, "Total"); + } /// /// Test. @@ -2924,10 +2924,10 @@ public void Total30() [TestMethod] public void Total24() { - var network = IPNetwork2.Parse("::/120"); - int total = 256; - Assert.AreEqual(total, network.Total, "Total"); - } + var network = IPNetwork2.Parse("::/120"); + int total = 256; + Assert.AreEqual(total, network.Total, "Total"); + } /// /// Test. @@ -2935,10 +2935,10 @@ public void Total24() [TestMethod] public void Total16() { - var network = IPNetwork2.Parse("::/112"); - int total = 65536; - Assert.AreEqual(total, network.Total, "Total"); - } + var network = IPNetwork2.Parse("::/112"); + int total = 65536; + Assert.AreEqual(total, network.Total, "Total"); + } /// /// Test. @@ -2946,10 +2946,10 @@ public void Total16() [TestMethod] public void Total8() { - var network = IPNetwork2.Parse("::/104"); - int total = 16777216; - Assert.AreEqual(total, network.Total, "Total"); - } + var network = IPNetwork2.Parse("::/104"); + int total = 16777216; + Assert.AreEqual(total, network.Total, "Total"); + } /// /// Test. @@ -2957,10 +2957,10 @@ public void Total8() [TestMethod] public void Total0() { - var network = IPNetwork2.Parse("::/0"); - var total = BigInteger.Pow(2, 128); - Assert.AreEqual(total, network.Total, "Total"); - } + var network = IPNetwork2.Parse("::/0"); + var total = BigInteger.Pow(2, 128); + Assert.AreEqual(total, network.Total, "Total"); + } #endregion @@ -2972,10 +2972,10 @@ public void Total0() [TestMethod] public void Usable32() { - var network = IPNetwork2.Parse("::/128"); - uint usable = 1; - Assert.AreEqual(usable, network.Usable, "Usable"); - } + var network = IPNetwork2.Parse("::/128"); + uint usable = 1; + Assert.AreEqual(usable, network.Usable, "Usable"); + } /// /// Test. @@ -2983,10 +2983,10 @@ public void Usable32() [TestMethod] public void Usable31() { - var network = IPNetwork2.Parse("::/127"); - uint usable = 2; - Assert.AreEqual(usable, network.Usable, "Usable"); - } + var network = IPNetwork2.Parse("::/127"); + uint usable = 2; + Assert.AreEqual(usable, network.Usable, "Usable"); + } /// /// Test. @@ -2994,10 +2994,10 @@ public void Usable31() [TestMethod] public void Usable30() { - var network = IPNetwork2.Parse("::/126"); - uint usable = 4; - Assert.AreEqual(usable, network.Usable, "Usable"); - } + var network = IPNetwork2.Parse("::/126"); + uint usable = 4; + Assert.AreEqual(usable, network.Usable, "Usable"); + } /// /// Test. @@ -3005,10 +3005,10 @@ public void Usable30() [TestMethod] public void Usable24() { - var network = IPNetwork2.Parse("::/120"); - uint usable = 256; - Assert.AreEqual(usable, network.Usable, "Usable"); - } + var network = IPNetwork2.Parse("::/120"); + uint usable = 256; + Assert.AreEqual(usable, network.Usable, "Usable"); + } /// /// Test. @@ -3016,10 +3016,10 @@ public void Usable24() [TestMethod] public void Usable16() { - var network = IPNetwork2.Parse("::/112"); - uint usable = 65536; - Assert.AreEqual(usable, network.Usable, "Usable"); - } + var network = IPNetwork2.Parse("::/112"); + uint usable = 65536; + Assert.AreEqual(usable, network.Usable, "Usable"); + } /// /// Test. @@ -3027,10 +3027,10 @@ public void Usable16() [TestMethod] public void Usable8() { - var network = IPNetwork2.Parse("::/104"); - uint usable = 16777216; - Assert.AreEqual(usable, network.Usable, "Usable"); - } + var network = IPNetwork2.Parse("::/104"); + uint usable = 16777216; + Assert.AreEqual(usable, network.Usable, "Usable"); + } /// /// Test. @@ -3038,10 +3038,10 @@ public void Usable8() [TestMethod] public void Usable0() { - var network = IPNetwork2.Parse("::/0"); - var usable = BigInteger.Pow(2, 128); - Assert.AreEqual(usable, network.Usable, "Usable"); - } + var network = IPNetwork2.Parse("::/0"); + var usable = BigInteger.Pow(2, 128); + Assert.AreEqual(usable, network.Usable, "Usable"); + } #endregion @@ -3053,14 +3053,14 @@ public void Usable0() [TestMethod] public void TryParseCidr1() { - string sidr = "0"; - byte? cidr; - byte? result = 0; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + string sidr = "0"; + byte? cidr; + byte? result = 0; + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(result, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(result, cidr, "cidr"); + } /// /// Test. @@ -3068,15 +3068,15 @@ public void TryParseCidr1() [TestMethod] public void TryParseCidr2() { - string sidr = "sadsd"; - byte? cidr; - byte? result = null; + string sidr = "sadsd"; + byte? cidr; + byte? result = null; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(result, cidr, "cidr"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(result, cidr, "cidr"); + } /// /// Test. @@ -3084,15 +3084,15 @@ public void TryParseCidr2() [TestMethod] public void TryParseCidr33() { - string sidr = "33"; - byte? cidr; - byte result = 33; + string sidr = "33"; + byte? cidr; + byte result = 33; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(result, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(result, cidr, "cidr"); + } /// /// Test. @@ -3100,15 +3100,15 @@ public void TryParseCidr33() [TestMethod] public void TryParseCidr128() { - string sidr = "128"; - byte? cidr; - byte result = 128; + string sidr = "128"; + byte? cidr; + byte result = 128; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(result, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(result, cidr, "cidr"); + } /// /// Test. @@ -3116,15 +3116,15 @@ public void TryParseCidr128() [TestMethod] public void TryParseCidr129() { - string sidr = "129"; - byte? cidr; - byte? result = null; + string sidr = "129"; + byte? cidr; + byte? result = null; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(result, cidr, "cidr"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(result, cidr, "cidr"); + } #endregion } \ No newline at end of file diff --git a/src/TestProject/SerializeDataContractTest.cs b/src/TestProject/SerializeDataContractTest.cs index 5c267173..04103a76 100644 --- a/src/TestProject/SerializeDataContractTest.cs +++ b/src/TestProject/SerializeDataContractTest.cs @@ -16,27 +16,27 @@ public class SerializeDataContractTest [TestMethod] public void Test_Serialize_DataContract() { - var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); + var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); + + string result = DataContractSerializeHelper.Serialize(ipnetwork); + string expected = + $"{Environment.NewLine} 10.0.0.0/8{Environment.NewLine}"; + Assert.AreEqual(expected, result); + } - string result = DataContractSerializeHelper.Serialize(ipnetwork); - string expected = - $"{Environment.NewLine} 10.0.0.0/8{Environment.NewLine}"; - Assert.AreEqual(expected, result); - } - /// /// Test Deserilaization. /// [TestMethod] public void Test_Deserialize_DataContract() { - var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); - string serialized = DataContractSerializeHelper.Serialize(ipnetwork); + var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); + string serialized = DataContractSerializeHelper.Serialize(ipnetwork); - IPNetwork2 result = DataContractSerializeHelper.Deserialize(serialized); + IPNetwork2 result = DataContractSerializeHelper.Deserialize(serialized); - Assert.AreEqual(ipnetwork, result); - } + Assert.AreEqual(ipnetwork, result); + } /// /// Test empty constructor. @@ -44,7 +44,7 @@ public void Test_Deserialize_DataContract() [TestMethod] public void Test_Empty_Constructor() { - var ipnetwork = new IPNetwork2(); - Assert.AreEqual("0.0.0.0/0", ipnetwork.ToString()); - } + var ipnetwork = new IPNetwork2(); + Assert.AreEqual("0.0.0.0/0", ipnetwork.ToString()); + } } \ No newline at end of file diff --git a/src/TestProject/SerializeJsonTest.cs b/src/TestProject/SerializeJsonTest.cs index 35ed1106..f3688baa 100644 --- a/src/TestProject/SerializeJsonTest.cs +++ b/src/TestProject/SerializeJsonTest.cs @@ -2,7 +2,6 @@ // Copyright (c) IPNetwork. All rights reserved. // - namespace TestProject; /// diff --git a/src/TestProject/TryParseUnitTest.cs b/src/TestProject/TryParseUnitTest.cs index 6fda831b..0f443e0e 100644 --- a/src/TestProject/TryParseUnitTest.cs +++ b/src/TestProject/TryParseUnitTest.cs @@ -18,9 +18,9 @@ public class TryParseUnitTest [TestMethod] public void Test_IPNetwork_TryParse_Issue294() { - bool result = IPNetwork2.TryParse("*", out IPNetwork2 ipaddress1); - Assert.AreEqual(false, result, "parsed1"); - } + bool result = IPNetwork2.TryParse("*", out IPNetwork2 ipaddress1); + Assert.AreEqual(false, result, "parsed1"); + } #endregion @@ -32,12 +32,12 @@ public void Test_IPNetwork_TryParse_Issue294() [TestMethod] public void TestTryParseIPAddressNetmaskAne2() { - IPAddress ip = null; - bool parsed = IPNetwork2.TryParse(ip, ip, out IPNetwork2 ipnet); + IPAddress ip = null; + bool parsed = IPNetwork2.TryParse(ip, ip, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Test. @@ -45,11 +45,11 @@ public void TestTryParseIPAddressNetmaskAne2() [TestMethod] public void TestTryParseIPAddressNetmaskAne3() { - bool parsed = IPNetwork2.TryParse(string.Empty, 0, out IPNetwork2 ipnet); + bool parsed = IPNetwork2.TryParse(string.Empty, 0, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Test. @@ -57,11 +57,11 @@ public void TestTryParseIPAddressNetmaskAne3() [TestMethod] public void TestTryParseIPAddressNetmaskAne4() { - bool parsed = IPNetwork2.TryParse(null, 0, out IPNetwork2 ipnet); + bool parsed = IPNetwork2.TryParse(null, 0, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Test. @@ -69,13 +69,13 @@ public void TestTryParseIPAddressNetmaskAne4() [TestMethod] public void TestTryParseIPAddressNetmaskAne5() { - string n = null; + string n = null; - bool parsed = IPNetwork2.TryParse(n, n, out IPNetwork2 ipnet); + bool parsed = IPNetwork2.TryParse(n, n, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Test. @@ -83,11 +83,11 @@ public void TestTryParseIPAddressNetmaskAne5() [TestMethod] public void TestTryParseIPAddressNetmaskAne6() { - bool parsed = IPNetwork2.TryParse(IPAddress.Parse("10.10.10.10"), null, out IPNetwork2 ipnet); + bool parsed = IPNetwork2.TryParse(IPAddress.Parse("10.10.10.10"), null, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Test. @@ -95,11 +95,11 @@ public void TestTryParseIPAddressNetmaskAne6() [TestMethod] public void TestTryParseIPAddressNetmaskAne7() { - bool parsed = IPNetwork2.TryParse("0.0.0.0", netmask:null, out IPNetwork2 ipnet); + bool parsed = IPNetwork2.TryParse("0.0.0.0", netmask: null, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Test. @@ -107,11 +107,11 @@ public void TestTryParseIPAddressNetmaskAne7() [TestMethod] public void TestTryParseIPAddressNetmaskAne8() { - bool parsed = IPNetwork2.TryParse("x.x.x.x", "x.x.x.x", out IPNetwork2 ipnet); + bool parsed = IPNetwork2.TryParse("x.x.x.x", "x.x.x.x", out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Test. @@ -119,11 +119,11 @@ public void TestTryParseIPAddressNetmaskAne8() [TestMethod] public void TestTryParseIPAddressNetmaskAne9() { - bool parsed = IPNetwork2.TryParse("0.0.0.0", "x.x.x.x", out IPNetwork2 ipnet); + bool parsed = IPNetwork2.TryParse("0.0.0.0", "x.x.x.x", out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Test. @@ -131,11 +131,11 @@ public void TestTryParseIPAddressNetmaskAne9() [TestMethod] public void TestTryParseIPAddressNetmaskAne10() { - bool parsed = IPNetwork2.TryParse("x.x.x.x", 0, out IPNetwork2 ipnet); + bool parsed = IPNetwork2.TryParse("x.x.x.x", 0, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Test. @@ -143,11 +143,11 @@ public void TestTryParseIPAddressNetmaskAne10() [TestMethod] public void TestTryParseIPAddressNetmaskAne11() { - bool parsed = IPNetwork2.TryParse("0.0.0.0", 33, out IPNetwork2 ipnet); + bool parsed = IPNetwork2.TryParse("0.0.0.0", 33, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Test. @@ -155,27 +155,27 @@ public void TestTryParseIPAddressNetmaskAne11() [TestMethod] public void TestTryParseIPAddressNetmask() { - string ipaddress = "192.168.168.100"; - string netmask = "255.255.255.0"; - - string network = "192.168.168.0"; - string broadcast = "192.168.168.255"; - string firstUsable = "192.168.168.1"; - string lastUsable = "192.168.168.254"; - byte cidr = 24; - uint usable = 254; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "192.168.168.100"; + string netmask = "255.255.255.0"; + + string network = "192.168.168.0"; + string broadcast = "192.168.168.255"; + string firstUsable = "192.168.168.1"; + string lastUsable = "192.168.168.254"; + byte cidr = 24; + uint usable = 254; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test. @@ -183,27 +183,27 @@ public void TestTryParseIPAddressNetmask() [TestMethod] public void TestTryParseString1() { - string ipaddress = "192.168.168.100 255.255.255.0"; - - string network = "192.168.168.0"; - string netmask = "255.255.255.0"; - string broadcast = "192.168.168.255"; - string firstUsable = "192.168.168.1"; - string lastUsable = "192.168.168.254"; - byte cidr = 24; - uint usable = 254; - - bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "192.168.168.100 255.255.255.0"; + + string network = "192.168.168.0"; + string netmask = "255.255.255.0"; + string broadcast = "192.168.168.255"; + string firstUsable = "192.168.168.1"; + string lastUsable = "192.168.168.254"; + byte cidr = 24; + uint usable = 254; + + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test. @@ -211,27 +211,27 @@ public void TestTryParseString1() [TestMethod] public void TestTryParseString2() { - string ipaddress = "192.168.168.100/24"; - - string network = "192.168.168.0"; - string netmask = "255.255.255.0"; - string broadcast = "192.168.168.255"; - string firstUsable = "192.168.168.1"; - string lastUsable = "192.168.168.254"; - byte cidr = 24; - uint usable = 254; - - bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "192.168.168.100/24"; + + string network = "192.168.168.0"; + string netmask = "255.255.255.0"; + string broadcast = "192.168.168.255"; + string firstUsable = "192.168.168.1"; + string lastUsable = "192.168.168.254"; + byte cidr = 24; + uint usable = 254; + + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test. @@ -239,27 +239,27 @@ public void TestTryParseString2() [TestMethod] public void TestTryParseString3() { - string ipaddress = "0.0.0.0/0"; - - string network = "0.0.0.0"; - string netmask = "0.0.0.0"; - string broadcast = "255.255.255.255"; - string firstUsable = "0.0.0.1"; - string lastUsable = "255.255.255.254"; - byte cidr = 0; - uint usable = 4294967294; - - bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "0.0.0.0/0"; + + string network = "0.0.0.0"; + string netmask = "0.0.0.0"; + string broadcast = "255.255.255.255"; + string firstUsable = "0.0.0.1"; + string lastUsable = "255.255.255.254"; + byte cidr = 0; + uint usable = 4294967294; + + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test. @@ -267,27 +267,27 @@ public void TestTryParseString3() [TestMethod] public void TestTryParseString4() { - string ipaddress = "0.0.0.0/32"; - - string network = "0.0.0.0"; - string netmask = "255.255.255.255"; - string broadcast = "0.0.0.0"; - string firstUsable = "0.0.0.0"; - string lastUsable = "0.0.0.0"; - byte cidr = 32; - uint usable = 0; - - bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "0.0.0.0/32"; + + string network = "0.0.0.0"; + string netmask = "255.255.255.255"; + string broadcast = "0.0.0.0"; + string firstUsable = "0.0.0.0"; + string lastUsable = "0.0.0.0"; + byte cidr = 32; + uint usable = 0; + + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test. @@ -295,27 +295,27 @@ public void TestTryParseString4() [TestMethod] public void TestTryParseString5() { - string ipaddress = "255.255.255.255/32"; - - string network = "255.255.255.255"; - string netmask = "255.255.255.255"; - string broadcast = "255.255.255.255"; - string firstUsable = "255.255.255.255"; - string lastUsable = "255.255.255.255"; - byte cidr = 32; - uint usable = 0; - - bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "255.255.255.255/32"; + + string network = "255.255.255.255"; + string netmask = "255.255.255.255"; + string broadcast = "255.255.255.255"; + string firstUsable = "255.255.255.255"; + string lastUsable = "255.255.255.255"; + byte cidr = 32; + uint usable = 0; + + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test. @@ -323,11 +323,11 @@ public void TestTryParseString5() [TestMethod] public void TestTryParseStringAe1() { - string ipaddress = "garbage"; - bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + string ipaddress = "garbage"; + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); - Assert.AreEqual(false, parsed, "parsed"); - } + Assert.AreEqual(false, parsed, "parsed"); + } /// /// Test. @@ -335,11 +335,11 @@ public void TestTryParseStringAe1() [TestMethod] public void TestTryParseStringAe2() { - string ipaddress = "0.0.0.0 0.0.1.0"; - bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + string ipaddress = "0.0.0.0 0.0.1.0"; + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); - Assert.AreEqual(false, parsed, "parsed"); - } + Assert.AreEqual(false, parsed, "parsed"); + } /// /// Test. @@ -347,11 +347,11 @@ public void TestTryParseStringAe2() [TestMethod] public void TestTryParseStringAne1() { - string ipaddress = null; - bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + string ipaddress = null; + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); - Assert.AreEqual(false, parsed, "parsed"); - } + Assert.AreEqual(false, parsed, "parsed"); + } #endregion @@ -363,13 +363,13 @@ public void TestTryParseStringAne1() [TestMethod] public void Test_TryParse_InvalidIpv6_return_valid_ipv6network() { - bool parsed1 = IPNetwork2.TryParse("g001:02b8::/64", out IPNetwork2 ipnetwork1); - bool parsed2 = IPNetwork2.TryParse("1:2b8::/64", out IPNetwork2 ipnetwork2); + bool parsed1 = IPNetwork2.TryParse("g001:02b8::/64", out IPNetwork2 ipnetwork1); + bool parsed2 = IPNetwork2.TryParse("1:2b8::/64", out IPNetwork2 ipnetwork2); - Assert.AreEqual(true, parsed1, "parsed1"); - Assert.AreEqual(true, parsed2, "parsed2"); - Assert.AreEqual(ipnetwork1, ipnetwork2, "ipnetwork1 == ipnetwork2"); - } + Assert.AreEqual(true, parsed1, "parsed1"); + Assert.AreEqual(true, parsed2, "parsed2"); + Assert.AreEqual(ipnetwork1, ipnetwork2, "ipnetwork1 == ipnetwork2"); + } /// /// Test. @@ -392,10 +392,10 @@ public void Test_TryParse_InvalidIpv6_return_valid_ipv6network() [DataRow("001:02b8::/64", false, true)] public void Test_TryParse(string ipnetwork, bool sanitanize, bool parsed) { - bool result = IPNetwork2.TryParse(ipnetwork, sanitanize, out IPNetwork2 ipnetwork1); + bool result = IPNetwork2.TryParse(ipnetwork, sanitanize, out IPNetwork2 ipnetwork1); - Assert.AreEqual(parsed, result, "parsed1"); - } + Assert.AreEqual(parsed, result, "parsed1"); + } /// /// Test parse. @@ -412,10 +412,10 @@ public void Test_TryParse(string ipnetwork, bool sanitanize, bool parsed) [DataRow("001:02b8:: ", false)] public void Test_IPAddress_TryParse(string ipaddress, bool parsed) { - bool result = IPAddress.TryParse(ipaddress, out IPAddress ipaddress1); + bool result = IPAddress.TryParse(ipaddress, out IPAddress ipaddress1); - Assert.AreEqual(parsed, result, "parsed1"); - } + Assert.AreEqual(parsed, result, "parsed1"); + } #endregion } \ No newline at end of file From 12bd551102d9d85eb310e0ab491e882ab80c38e3 Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sat, 29 Mar 2025 22:20:35 +0100 Subject: [PATCH 04/25] Chore: split IPNetwork2 into multiple partial classes --- src/ConsoleApplication/ProgramContext.cs | 3 + src/System.Net.IPNetwork/CidrClassFull.cs | 3 +- src/System.Net.IPNetwork/IPNetwork2.cs | 841 +----------------- src/System.Net.IPNetwork/IPNetwork2Ctor.cs | 64 ++ .../IPNetwork2InternalParse.cs | 264 ++++++ src/System.Net.IPNetwork/IPNetwork2Members.cs | 223 +++++ src/System.Net.IPNetwork/IPNetwork2Parse.cs | 151 ++++ .../IPNetwork2TryParse.cs | 177 ++++ 8 files changed, 884 insertions(+), 842 deletions(-) create mode 100644 src/System.Net.IPNetwork/IPNetwork2Ctor.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2InternalParse.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2Members.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2Parse.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2TryParse.cs diff --git a/src/ConsoleApplication/ProgramContext.cs b/src/ConsoleApplication/ProgramContext.cs index 28fe99ec..787377cc 100644 --- a/src/ConsoleApplication/ProgramContext.cs +++ b/src/ConsoleApplication/ProgramContext.cs @@ -4,6 +4,9 @@ namespace System.Net; +/// +/// The execution context. +/// public class ProgramContext { public bool IPNetwork { get; set; } diff --git a/src/System.Net.IPNetwork/CidrClassFull.cs b/src/System.Net.IPNetwork/CidrClassFull.cs index 64b4ec21..5d717f99 100644 --- a/src/System.Net.IPNetwork/CidrClassFull.cs +++ b/src/System.Net.IPNetwork/CidrClassFull.cs @@ -29,8 +29,7 @@ public sealed class CidrClassFull : ICidrGuess /// true if ip was converted successfully; otherwise, false. public bool TryGuessCidr(string ip, out byte cidr) { - IPAddress ipaddress = null; - bool parsed = IPAddress.TryParse(string.Format("{0}", ip), out ipaddress); + bool parsed = IPAddress.TryParse(string.Format("{0}", ip), out var ipaddress); if (parsed == false) { cidr = 0; diff --git a/src/System.Net.IPNetwork/IPNetwork2.cs b/src/System.Net.IPNetwork/IPNetwork2.cs index 4272ed84..c3f890e4 100644 --- a/src/System.Net.IPNetwork/IPNetwork2.cs +++ b/src/System.Net.IPNetwork/IPNetwork2.cs @@ -9,7 +9,6 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; using System.Runtime.Serialization; -using System.Text.RegularExpressions; /// /// IP Network utility class. @@ -17,840 +16,8 @@ namespace System.Net; /// [Serializable] [CLSCompliant(true)] -public sealed class IPNetwork2 : IComparable, ISerializable +public sealed partial class IPNetwork2 : IComparable, ISerializable { - #region properties - - private readonly object sync = new (); - private readonly int hashCode; - private BigInteger ipaddress; - private byte cidr; - private BigInteger? cachedBroadcast; - - private AddressFamily family; - - /// - /// Gets or sets the value of the IPNetwork property. - /// - [DataMember(Name = "IPNetwork", IsRequired = true)] - public string Value - { - get - { - return this.ToString(); - } - - set - { - var ipnetwork = IPNetwork2.Parse(value); - this.ipaddress = ipnetwork.ipaddress; - this.family = ipnetwork.family; - this.cidr = ipnetwork.cidr; - lock (this.sync) - { - this.cachedBroadcast = null; - } - } - } - - #endregion - - #region accessors - - /// - /// Gets the network address calculated by applying the subnet mask to the IP address. - /// - internal BigInteger InternalNetwork - { - get - { - BigInteger uintNetwork = this.ipaddress & this.InternalNetmask; - return uintNetwork; - } - } - - /// - /// Gets network address. - /// - public IPAddress Network - { - get - { - return IPNetwork2.ToIPAddress(this.InternalNetwork, this.family); - } - } - - /// - /// Gets address Family. - /// - public AddressFamily AddressFamily - { - get - { - return this.family; - } - } - - /// - /// Gets the netmask as a BigInteger representation based on the CIDR and address family. - /// - internal BigInteger InternalNetmask - { - get - { - return IPNetwork2.ToUint(this.cidr, this.family); - } - } - - /// - /// Gets netmask. - /// - public IPAddress Netmask - { - get - { - return IPNetwork2.ToIPAddress(this.InternalNetmask, this.family); - } - } - - /// - /// Gets the broadcast address calculated from the network address and the netmask. - /// - internal BigInteger InternalBroadcast - { - get - { - var cached = this.cachedBroadcast; - if (cached != null) - { - return cached.Value; - } - - lock (this.sync) - { - var cached2 = this.cachedBroadcast; - if (cached2 != null) - { - return cached2.Value; - } - - var network = this.InternalNetwork; - var computed = CreateBroadcast(ref network, this.InternalNetmask, this.family); - this.cachedBroadcast = computed; - return computed; - } - } - } - - /// - /// Gets broadcast address. - /// - public IPAddress Broadcast - { - get - { - if (this.family == Sockets.AddressFamily.InterNetworkV6) - { - return null; - } - - return IPNetwork2.ToIPAddress(this.InternalBroadcast, this.family); - } - } - - /// - /// Gets first usable IP adress in Network. - /// - public IPAddress FirstUsable - { - get - { - BigInteger first = this.family == Sockets.AddressFamily.InterNetworkV6 - ? this.InternalNetwork - : (this.Usable <= 0) - ? this.InternalNetwork - : this.InternalNetwork + 1; - return IPNetwork2.ToIPAddress(first, this.family); - } - } - - /// - /// Gets last usable IP adress in Network. - /// - public IPAddress LastUsable - { - get - { - BigInteger last = this.family == Sockets.AddressFamily.InterNetworkV6 - ? this.InternalBroadcast - : (this.Usable <= 0) - ? this.InternalNetwork - : this.InternalBroadcast - 1; - return IPNetwork2.ToIPAddress(last, this.family); - } - } - - /// - /// Gets number of usable IP adress in Network. - /// - public BigInteger Usable - { - get - { - if (this.family == Sockets.AddressFamily.InterNetworkV6) - { - return this.Total; - } - - byte[] mask = new byte[] { 0xff, 0xff, 0xff, 0xff, 0x00 }; - var bmask = new BigInteger(mask); - BigInteger usableIps = (this.cidr > 30) ? 0 : ((bmask >> this.cidr) - 1); - return usableIps; - } - } - - /// - /// Gets number of IP adress in Network. - /// - public BigInteger Total - { - get - { - int max = this.family == Sockets.AddressFamily.InterNetwork ? 32 : 128; - var count = BigInteger.Pow(2, max - this.cidr); - return count; - } - } - - /// - /// Gets the CIDR netmask notation. - /// - public byte Cidr - { - get - { - return this.cidr; - } - } - - #endregion - - #region constructor - - /// - /// Initializes a new instance of the class with the specified IP address, address family, and CIDR. - /// - /// The IP address of the network. - /// The address family of the network. - /// The CIDR (Classless Inter-Domain Routing) notation of the network. -#if TRAVISCI - public -#else - internal -#endif - IPNetwork2(BigInteger ipaddress, AddressFamily family, byte cidr) - { - this.Init(ipaddress, family, cidr); - this.hashCode = this.ComputeHashCode(); - } - - /// - /// Initializes a new instance of the class. - /// Creates a new IPNetwork. - /// - /// An ipaddress. - /// A byte representing the netmask in cidr format (/24). - /// ipaddress is null. - public IPNetwork2(IPAddress ipaddress, byte cidr) - { - if (ipaddress == null) - { - throw new ArgumentNullException("ipaddress"); - } - - BigInteger uintIpAddress = ToBigInteger(ipaddress); - - this.Init(uintIpAddress, ipaddress.AddressFamily, cidr); - this.hashCode = this.ComputeHashCode(); - } - - private void Init(BigInteger ipaddress, AddressFamily family, byte cidr) - { - int maxCidr = family == AddressFamily.InterNetwork ? 32 : 128; - if (cidr > maxCidr) - { - throw new ArgumentOutOfRangeException("cidr"); - } - - this.ipaddress = ipaddress; - this.family = family; - this.cidr = cidr; - } - - #endregion - - #region parsers - - /// - /// 192.168.168.100 - 255.255.255.0 - /// - /// ``` - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255 - /// ```. - /// - /// - /// A string containing an ip address to convert. - /// A string representing a netmask in std format (255.255.255.0). - /// An IPNetwork equivalent to the network contained in ipaddress/netmask. - public static IPNetwork2 Parse(string ipaddress, string netmask) - { - IPNetwork2.InternalParse(false, ipaddress, netmask, out IPNetwork2 ipnetwork); - return ipnetwork; - } - - /// - /// 192.168.168.100/24 - /// - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255. - /// - /// A string containing an ip address to convert. - /// A byte representing the netmask in cidr format (/24). - /// An IPNetwork equivalent to the network contained in ipaddress/cidr. - public static IPNetwork2 Parse(string ipaddress, byte cidr) - { - IPNetwork2.InternalParse(false, ipaddress, cidr, out IPNetwork2 ipnetwork); - return ipnetwork; - } - - /// - /// 192.168.168.100 255.255.255.0 - /// - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255. - /// - /// A string containing an ip address to convert. - /// A netmask to be used to create the IPNetwork. - /// An IPNetwork equivalent to the network contained in ipaddress/netmask. - public static IPNetwork2 Parse(IPAddress ipaddress, IPAddress netmask) - { - IPNetwork2.InternalParse(false, ipaddress, netmask, out IPNetwork2 ipnetwork); - return ipnetwork; - } - - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// An IPNetwork equivalent to the network contained in string network. - public static IPNetwork2 Parse(string network) - { - IPNetwork2.InternalParse(false, network, CidrGuess.ClassFull, true, out IPNetwork2 ipnetwork); - return ipnetwork; - } - - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// Whether to sanitize network or not. - /// An IPNetwork equivalent to the network contained in string network. - public static IPNetwork2 Parse(string network, bool sanitanize) - { - IPNetwork2.InternalParse(false, network, CidrGuess.ClassFull, sanitanize, out IPNetwork2 ipnetwork); - return ipnetwork; - } - - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// A ICidrGuess implementation that will be used to guess CIDR during converion. - /// An IPNetwork equivalent to the network contained in string network. - public static IPNetwork2 Parse(string network, ICidrGuess cidrGuess) - { - IPNetwork2.InternalParse(false, network, cidrGuess, true, out IPNetwork2 ipnetwork); - return ipnetwork; - } - - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// A ICidrGuess implementation that will be used to guess CIDR during converion. - /// Whether to sanitize network or not. - /// An IPNetwork equivalent to the network contained in string network. - public static IPNetwork2 Parse(string network, ICidrGuess cidrGuess, bool sanitanize) - { - IPNetwork2.InternalParse(false, network, cidrGuess, sanitanize, out IPNetwork2 ipnetwork); - return ipnetwork; - } - - #endregion - - #region TryParse - - /// - /// 192.168.168.100 - 255.255.255.0 - /// - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255. - /// - /// A string containing an ip address to convert. - /// A string containing a netmaks to convert (255.255.255.0). - /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. - /// true if ipaddress/netmask was converted successfully; otherwise, false.. - public static bool TryParse(string ipaddress, string netmask, out IPNetwork2 ipnetwork) - { - IPNetwork2.InternalParse(true, ipaddress, netmask, out IPNetwork2 ipnetwork2); - bool parsed = ipnetwork2 != null; - ipnetwork = ipnetwork2; - - return parsed; - } - - /// - /// 192.168.168.100/24 - /// - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255. - /// - /// A string containing an ip address to convert. - /// A byte representing the netmask in cidr format (/24). - /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. - /// true if ipaddress/cidr was converted successfully; otherwise, false.. - public static bool TryParse(string ipaddress, byte cidr, out IPNetwork2 ipnetwork) - { - IPNetwork2.InternalParse(true, ipaddress, cidr, out IPNetwork2 ipnetwork2); - bool parsed = ipnetwork2 != null; - ipnetwork = ipnetwork2; - - return parsed; - } - - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. - /// true if network was converted successfully; otherwise, false.. - public static bool TryParse(string network, out IPNetwork2 ipnetwork) - { - bool sanitanize = true; - IPNetwork2.InternalParse(true, network, CidrGuess.ClassFull, sanitanize, out IPNetwork2 ipnetwork2); - bool parsed = ipnetwork2 != null; - ipnetwork = ipnetwork2; - - return parsed; - } - - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// Whether to sanitize network or not. - /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. - /// true if network was converted successfully; otherwise, false.. - public static bool TryParse(string network, bool sanitanize, out IPNetwork2 ipnetwork) - { - IPNetwork2.InternalParse(true, network, CidrGuess.ClassFull, sanitanize, out IPNetwork2 ipnetwork2); - bool parsed = ipnetwork2 != null; - ipnetwork = ipnetwork2; - - return parsed; - } - - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// An IPAdresse to convert. - /// A IPAdresse to be used as netmaks to convert. - /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. - /// true if network was converted successfully; otherwise, false.. - public static bool TryParse(IPAddress ipaddress, IPAddress netmask, out IPNetwork2 ipnetwork) - { - IPNetwork2.InternalParse(true, ipaddress, netmask, out IPNetwork2 ipnetwork2); - bool parsed = ipnetwork2 != null; - ipnetwork = ipnetwork2; - - return parsed; - } - - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// A ICidrGuess implementation that will be used to guess CIDR during converion. - /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. - /// true if network was converted successfully; otherwise, false.. - public static bool TryParse(string network, ICidrGuess cidrGuess, out IPNetwork2 ipnetwork) - { - IPNetwork2.InternalParse(true, network, cidrGuess, true, out IPNetwork2 ipnetwork2); - bool parsed = ipnetwork2 != null; - ipnetwork = ipnetwork2; - - return parsed; - } - - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// A ICidrGuess implementation that will be used to guess CIDR during converion. - /// Whether to sanitize network or not. - /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. - /// true if network was converted successfully; otherwise, false.. - public static bool TryParse(string network, ICidrGuess cidrGuess, bool sanitanize, out IPNetwork2 ipnetwork) - { - IPNetwork2.InternalParse(true, network, cidrGuess, sanitanize, out IPNetwork2 ipnetwork2); - bool parsed = ipnetwork2 != null; - ipnetwork = ipnetwork2; - - return parsed; - } - - #endregion - - #region InternalParse - - /// - /// 192.168.168.100 - 255.255.255.0 - /// - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255. - /// - /// Whether to throw exception or not during conversion. - /// A string containing an ip address to convert. - /// A string containing a netmask to convert (255.255.255.0). - /// The resulting IPNetwork. - private static void InternalParse(bool tryParse, string ipaddress, string netmask, out IPNetwork2 ipnetwork) - { - if (string.IsNullOrEmpty(ipaddress)) - { - if (tryParse == false) - { - throw new ArgumentNullException("ipaddress"); - } - - ipnetwork = null; - return; - } - - if (string.IsNullOrEmpty(netmask)) - { - if (tryParse == false) - { - throw new ArgumentNullException("netmask"); - } - - ipnetwork = null; - return; - } - - bool ipaddressParsed = IPAddress.TryParse(ipaddress, out IPAddress ip); - if (ipaddressParsed == false) - { - if (tryParse == false) - { - throw new ArgumentException("ipaddress"); - } - - ipnetwork = null; - return; - } - - bool netmaskParsed = IPAddress.TryParse(netmask, out IPAddress mask); - if (netmaskParsed == false) - { - if (tryParse == false) - { - throw new ArgumentException("netmask"); - } - - ipnetwork = null; - return; - } - - IPNetwork2.InternalParse(tryParse, ip, mask, out ipnetwork); - } - - private static void InternalParse(bool tryParse, string network, ICidrGuess cidrGuess, bool sanitanize, out IPNetwork2 ipnetwork) - { - if (string.IsNullOrEmpty(network)) - { - if (tryParse == false) - { - throw new ArgumentNullException("network"); - } - - ipnetwork = null; - return; - } - - if (sanitanize) - { - network = Regex.Replace(network, @"[^0-9a-fA-F\.\/\s\:]+", string.Empty, RegexOptions.None, TimeSpan.FromMilliseconds(100)); - network = Regex.Replace(network, @"\s{2,}", " ", RegexOptions.None, TimeSpan.FromMilliseconds(100)); - network = network.Trim(); - } - - StringSplitOptions splitOptions = sanitanize ? StringSplitOptions.RemoveEmptyEntries : StringSplitOptions.None; - string[] args = network.Split(new char[] { ' ', '/' }, splitOptions); - byte cidr = 0; - - if (args.Length == 0) - { - if (tryParse == false) - { - throw new ArgumentNullException("network"); - } - - ipnetwork = null; - return; - } - - if (args.Length == 1) - { - string cidrlessNetwork = args[0]; - if (cidrGuess.TryGuessCidr(cidrlessNetwork, out cidr)) - { - IPNetwork2.InternalParse(tryParse, cidrlessNetwork, cidr, out ipnetwork); - return; - } - - if (tryParse == false) - { - throw new ArgumentException("network"); - } - - ipnetwork = null; - return; - } - - if (byte.TryParse(args[1], out cidr)) - { - IPNetwork2.InternalParse(tryParse, args[0], cidr, out ipnetwork); - return; - } - - IPNetwork2.InternalParse(tryParse, args[0], args[1], out ipnetwork); - return; - } - - /// - /// 192.168.168.100 255.255.255.0 - /// - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255. - /// - /// Whether to throw exception or not during conversion. - /// An ip address to convert. - /// A netmask to convert (255.255.255.0). - /// The resulting IPNetwork. - private static void InternalParse(bool tryParse, IPAddress ipaddress, IPAddress netmask, out IPNetwork2 ipnetwork) - { - if (ipaddress == null) - { - if (tryParse == false) - { - throw new ArgumentNullException("ipaddress"); - } - - ipnetwork = null; - return; - } - - if (netmask == null) - { - if (tryParse == false) - { - throw new ArgumentNullException("netmask"); - } - - ipnetwork = null; - return; - } - - var uintIpAddress = IPNetwork2.ToBigInteger(ipaddress); - bool parsed = IPNetwork2.TryToCidr(netmask, out byte? cidr2); - if (parsed == false) - { - if (tryParse == false) - { - throw new ArgumentException("netmask"); - } - - ipnetwork = null; - return; - } - - byte cidr = (byte)cidr2; - - var ipnet = new IPNetwork2(uintIpAddress, ipaddress.AddressFamily, cidr); - ipnetwork = ipnet; - - return; - } - - /// - /// 192.168.168.100/24 - /// - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255. - /// - /// Whether to throw exception or not during conversion. - /// A string containing an ip address to convert. - /// A byte representing the CIDR to be used in conversion (/24). - /// The resulting IPNetwork. - private static void InternalParse(bool tryParse, string ipaddress, byte cidr, out IPNetwork2 ipnetwork) - { - if (string.IsNullOrEmpty(ipaddress)) - { - if (tryParse == false) - { - throw new ArgumentNullException("ipaddress"); - } - - ipnetwork = null; - return; - } - - bool ipaddressParsed = IPAddress.TryParse(ipaddress, out IPAddress ip); - if (ipaddressParsed == false) - { - if (tryParse == false) - { - throw new ArgumentException("ipaddress"); - } - - ipnetwork = null; - return; - } - - bool parsedNetmask = IPNetwork2.TryToNetmask(cidr, ip.AddressFamily, out IPAddress mask); - if (parsedNetmask == false) - { - if (tryParse == false) - { - throw new ArgumentException("cidr"); - } - - ipnetwork = null; - return; - } - - IPNetwork2.InternalParse(tryParse, ip, mask, out ipnetwork); - } - - #endregion - - #region converters - #region ToUint /// @@ -1211,10 +378,6 @@ internal static void InternalToNetmask(bool tryParse, byte cidr, AddressFamily f #endregion - #endregion - - #region utils - #region BitsSet /// @@ -1358,8 +521,6 @@ internal static byte[] Resize(byte[] bytes, AddressFamily family) #endregion - #endregion - #region contains /// diff --git a/src/System.Net.IPNetwork/IPNetwork2Ctor.cs b/src/System.Net.IPNetwork/IPNetwork2Ctor.cs new file mode 100644 index 00000000..261f9829 --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2Ctor.cs @@ -0,0 +1,64 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +using System.Net.Sockets; +using System.Numerics; + +/// +/// The constructors of IPNetwork2. +/// +public partial class IPNetwork2 +{ + /// + /// Initializes a new instance of the class with the specified IP address, address family, and CIDR. + /// + /// The IP address of the network. + /// The address family of the network. + /// The CIDR (Classless Inter-Domain Routing) notation of the network. +#if TRAVISCI + public +#else + internal +#endif + IPNetwork2(BigInteger ipaddress, AddressFamily family, byte cidr) + { + this.Init(ipaddress, family, cidr); + this.hashCode = this.ComputeHashCode(); + } + + /// + /// Initializes a new instance of the class. + /// Creates a new IPNetwork. + /// + /// An ipaddress. + /// A byte representing the netmask in cidr format (/24). + /// ipaddress is null. + public IPNetwork2(IPAddress ipaddress, byte cidr) + { + if (ipaddress == null) + { + throw new ArgumentNullException("ipaddress"); + } + + BigInteger uintIpAddress = ToBigInteger(ipaddress); + + this.Init(uintIpAddress, ipaddress.AddressFamily, cidr); + this.hashCode = this.ComputeHashCode(); + } + + private void Init(BigInteger ipaddress, AddressFamily family, byte cidr) + { + int maxCidr = family == AddressFamily.InterNetwork ? 32 : 128; + if (cidr > maxCidr) + { + throw new ArgumentOutOfRangeException("cidr"); + } + + this.ipaddress = ipaddress; + this.family = family; + this.cidr = cidr; + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2InternalParse.cs b/src/System.Net.IPNetwork/IPNetwork2InternalParse.cs new file mode 100644 index 00000000..c8cdfe94 --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2InternalParse.cs @@ -0,0 +1,264 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +using System.Text.RegularExpressions; + +/// +/// The InternalParse methodes. +/// +public partial class IPNetwork2 +{ + /// + /// 192.168.168.100 - 255.255.255.0 + /// + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255. + /// + /// Whether to throw exception or not during conversion. + /// A string containing an ip address to convert. + /// A string containing a netmask to convert (255.255.255.0). + /// The resulting IPNetwork. + private static void InternalParse(bool tryParse, string ipaddress, string netmask, out IPNetwork2 ipnetwork) + { + if (string.IsNullOrEmpty(ipaddress)) + { + if (tryParse == false) + { + throw new ArgumentNullException("ipaddress"); + } + + ipnetwork = null; + return; + } + + if (string.IsNullOrEmpty(netmask)) + { + if (tryParse == false) + { + throw new ArgumentNullException("netmask"); + } + + ipnetwork = null; + return; + } + + bool ipaddressParsed = IPAddress.TryParse(ipaddress, out IPAddress ip); + if (ipaddressParsed == false) + { + if (tryParse == false) + { + throw new ArgumentException("ipaddress"); + } + + ipnetwork = null; + return; + } + + bool netmaskParsed = IPAddress.TryParse(netmask, out IPAddress mask); + if (netmaskParsed == false) + { + if (tryParse == false) + { + throw new ArgumentException("netmask"); + } + + ipnetwork = null; + return; + } + + InternalParse(tryParse, ip, mask, out ipnetwork); + } + + /// + /// Internal parse an IPNetwork2. + /// + /// Prevent exception. + /// The network to parse. + /// The way to guess CIDR. + /// Clean up the network. + /// The resulting IPNetwork. + /// When network is null. + /// When network is not valid. + private static void InternalParse(bool tryParse, string network, ICidrGuess cidrGuess, bool sanitanize, out IPNetwork2 ipnetwork) + { + if (string.IsNullOrEmpty(network)) + { + if (tryParse == false) + { + throw new ArgumentNullException("network"); + } + + ipnetwork = null; + return; + } + + if (sanitanize) + { + network = Regex.Replace(network, @"[^0-9a-fA-F\.\/\s\:]+", string.Empty, RegexOptions.None, TimeSpan.FromMilliseconds(100)); + network = Regex.Replace(network, @"\s{2,}", " ", RegexOptions.None, TimeSpan.FromMilliseconds(100)); + network = network.Trim(); + } + + StringSplitOptions splitOptions = sanitanize ? StringSplitOptions.RemoveEmptyEntries : StringSplitOptions.None; + string[] args = network.Split(new char[] { ' ', '/' }, splitOptions); + byte cidr = 0; + + if (args.Length == 0) + { + if (tryParse == false) + { + throw new ArgumentNullException("network"); + } + + ipnetwork = null; + return; + } + + if (args.Length == 1) + { + string cidrlessNetwork = args[0]; + if (cidrGuess.TryGuessCidr(cidrlessNetwork, out cidr)) + { + InternalParse(tryParse, cidrlessNetwork, cidr, out ipnetwork); + return; + } + + if (tryParse == false) + { + throw new ArgumentException("network"); + } + + ipnetwork = null; + return; + } + + if (byte.TryParse(args[1], out cidr)) + { + InternalParse(tryParse, args[0], cidr, out ipnetwork); + return; + } + + InternalParse(tryParse, args[0], args[1], out ipnetwork); + return; + } + + /// + /// 192.168.168.100 255.255.255.0 + /// + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255. + /// + /// Whether to throw exception or not during conversion. + /// An ip address to convert. + /// A netmask to convert (255.255.255.0). + /// The resulting IPNetwork. + private static void InternalParse(bool tryParse, IPAddress ipaddress, IPAddress netmask, out IPNetwork2 ipnetwork) + { + if (ipaddress == null) + { + if (tryParse == false) + { + throw new ArgumentNullException("ipaddress"); + } + + ipnetwork = null; + return; + } + + if (netmask == null) + { + if (tryParse == false) + { + throw new ArgumentNullException("netmask"); + } + + ipnetwork = null; + return; + } + + var uintIpAddress = IPNetwork2.ToBigInteger(ipaddress); + bool parsed = IPNetwork2.TryToCidr(netmask, out byte? cidr2); + if (parsed == false) + { + if (tryParse == false) + { + throw new ArgumentException("netmask"); + } + + ipnetwork = null; + return; + } + + byte cidr = (byte)cidr2; + + var ipnet = new IPNetwork2(uintIpAddress, ipaddress.AddressFamily, cidr); + ipnetwork = ipnet; + + return; + } + + /// + /// 192.168.168.100/24 + /// + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255. + /// + /// Whether to throw exception or not during conversion. + /// A string containing an ip address to convert. + /// A byte representing the CIDR to be used in conversion (/24). + /// The resulting IPNetwork. + private static void InternalParse(bool tryParse, string ipaddress, byte cidr, out IPNetwork2 ipnetwork) + { + if (string.IsNullOrEmpty(ipaddress)) + { + if (tryParse == false) + { + throw new ArgumentNullException("ipaddress"); + } + + ipnetwork = null; + return; + } + + bool ipaddressParsed = IPAddress.TryParse(ipaddress, out IPAddress ip); + if (ipaddressParsed == false) + { + if (tryParse == false) + { + throw new ArgumentException("ipaddress"); + } + + ipnetwork = null; + return; + } + + bool parsedNetmask = IPNetwork2.TryToNetmask(cidr, ip.AddressFamily, out IPAddress mask); + if (parsedNetmask == false) + { + if (tryParse == false) + { + throw new ArgumentException("cidr"); + } + + ipnetwork = null; + return; + } + + InternalParse(tryParse, ip, mask, out ipnetwork); + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2Members.cs b/src/System.Net.IPNetwork/IPNetwork2Members.cs new file mode 100644 index 00000000..3fb9c12c --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2Members.cs @@ -0,0 +1,223 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +using System.Net.Sockets; +using System.Numerics; +using System.Runtime.Serialization; + +/// +/// Properties and members of IPNetwork2. +/// +public partial class IPNetwork2 +{ + private readonly object sync = new (); + private readonly int hashCode; + private BigInteger ipaddress; + private byte cidr; + private BigInteger? cachedBroadcast; + + private AddressFamily family; + + /// + /// Gets or sets the value of the IPNetwork property. + /// + [DataMember(Name = "IPNetwork", IsRequired = true)] + public string Value + { + get + { + return this.ToString(); + } + + set + { + var ipnetwork = IPNetwork2.Parse(value); + this.ipaddress = ipnetwork.ipaddress; + this.family = ipnetwork.family; + this.cidr = ipnetwork.cidr; + lock (this.sync) + { + this.cachedBroadcast = null; + } + } + } + + /// + /// Gets network address. + /// + public IPAddress Network + { + get + { + return IPNetwork2.ToIPAddress(this.InternalNetwork, this.family); + } + } + + /// + /// Gets address Family. + /// + public AddressFamily AddressFamily + { + get + { + return this.family; + } + } + + /// + /// Gets netmask. + /// + public IPAddress Netmask + { + get + { + return IPNetwork2.ToIPAddress(this.InternalNetmask, this.family); + } + } + + /// + /// Gets broadcast address. + /// + public IPAddress Broadcast + { + get + { + if (this.family == Sockets.AddressFamily.InterNetworkV6) + { + return null; + } + + return IPNetwork2.ToIPAddress(this.InternalBroadcast, this.family); + } + } + + /// + /// Gets first usable IP adress in Network. + /// + public IPAddress FirstUsable + { + get + { + BigInteger first = this.family == Sockets.AddressFamily.InterNetworkV6 + ? this.InternalNetwork + : (this.Usable <= 0) + ? this.InternalNetwork + : this.InternalNetwork + 1; + return IPNetwork2.ToIPAddress(first, this.family); + } + } + + /// + /// Gets last usable IP adress in Network. + /// + public IPAddress LastUsable + { + get + { + BigInteger last = this.family == Sockets.AddressFamily.InterNetworkV6 + ? this.InternalBroadcast + : (this.Usable <= 0) + ? this.InternalNetwork + : this.InternalBroadcast - 1; + return IPNetwork2.ToIPAddress(last, this.family); + } + } + + /// + /// Gets number of usable IP adress in Network. + /// + public BigInteger Usable + { + get + { + if (this.family == Sockets.AddressFamily.InterNetworkV6) + { + return this.Total; + } + + byte[] mask = new byte[] { 0xff, 0xff, 0xff, 0xff, 0x00 }; + var bmask = new BigInteger(mask); + BigInteger usableIps = (this.cidr > 30) ? 0 : ((bmask >> this.cidr) - 1); + return usableIps; + } + } + + /// + /// Gets number of IP adress in Network. + /// + public BigInteger Total + { + get + { + int max = this.family == Sockets.AddressFamily.InterNetwork ? 32 : 128; + var count = BigInteger.Pow(2, max - this.cidr); + return count; + } + } + + /// + /// Gets the CIDR netmask notation. + /// + public byte Cidr + { + get + { + return this.cidr; + } + } + + /// + /// Gets the broadcast address calculated from the network address and the netmask. + /// + internal BigInteger InternalBroadcast + { + get + { + var cached = this.cachedBroadcast; + if (cached != null) + { + return cached.Value; + } + + lock (this.sync) + { + var cached2 = this.cachedBroadcast; + if (cached2 != null) + { + return cached2.Value; + } + + var network = this.InternalNetwork; + var computed = CreateBroadcast(ref network, this.InternalNetmask, this.family); + this.cachedBroadcast = computed; + return computed; + } + } + } + + /// + /// Gets the network address calculated by applying the subnet mask to the IP address. + /// + internal BigInteger InternalNetwork + { + get + { + BigInteger uintNetwork = this.ipaddress & this.InternalNetmask; + return uintNetwork; + } + } + + /// + /// Gets the netmask as a BigInteger representation based on the CIDR and address family. + /// + internal BigInteger InternalNetmask + { + get + { + return IPNetwork2.ToUint(this.cidr, this.family); + } + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2Parse.cs b/src/System.Net.IPNetwork/IPNetwork2Parse.cs new file mode 100644 index 00000000..30f49ac4 --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2Parse.cs @@ -0,0 +1,151 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +/// +/// the parse methods. +/// +public partial class IPNetwork2 +{ + /// + /// 192.168.168.100 - 255.255.255.0 + /// + /// ``` + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255 + /// ```. + /// + /// + /// A string containing an ip address to convert. + /// A string representing a netmask in std format (255.255.255.0). + /// An IPNetwork equivalent to the network contained in ipaddress/netmask. + public static IPNetwork2 Parse(string ipaddress, string netmask) + { + InternalParse(false, ipaddress, netmask, out IPNetwork2 ipnetwork); + return ipnetwork; + } + + /// + /// 192.168.168.100/24 + /// + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255. + /// + /// A string containing an ip address to convert. + /// A byte representing the netmask in cidr format (/24). + /// An IPNetwork equivalent to the network contained in ipaddress/cidr. + public static IPNetwork2 Parse(string ipaddress, byte cidr) + { + IPNetwork2.InternalParse(false, ipaddress, cidr, out IPNetwork2 ipnetwork); + return ipnetwork; + } + + /// + /// 192.168.168.100 255.255.255.0 + /// + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255. + /// + /// A string containing an ip address to convert. + /// A netmask to be used to create the IPNetwork. + /// An IPNetwork equivalent to the network contained in ipaddress/netmask. + public static IPNetwork2 Parse(IPAddress ipaddress, IPAddress netmask) + { + IPNetwork2.InternalParse(false, ipaddress, netmask, out IPNetwork2 ipnetwork); + return ipnetwork; + } + + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// An IPNetwork equivalent to the network contained in string network. + public static IPNetwork2 Parse(string network) + { + IPNetwork2.InternalParse(false, network, CidrGuess.ClassFull, true, out IPNetwork2 ipnetwork); + return ipnetwork; + } + + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// Whether to sanitize network or not. + /// An IPNetwork equivalent to the network contained in string network. + public static IPNetwork2 Parse(string network, bool sanitanize) + { + IPNetwork2.InternalParse(false, network, CidrGuess.ClassFull, sanitanize, out IPNetwork2 ipnetwork); + return ipnetwork; + } + + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// A ICidrGuess implementation that will be used to guess CIDR during converion. + /// An IPNetwork equivalent to the network contained in string network. + public static IPNetwork2 Parse(string network, ICidrGuess cidrGuess) + { + IPNetwork2.InternalParse(false, network, cidrGuess, true, out IPNetwork2 ipnetwork); + return ipnetwork; + } + + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// A ICidrGuess implementation that will be used to guess CIDR during converion. + /// Whether to sanitize network or not. + /// An IPNetwork equivalent to the network contained in string network. + public static IPNetwork2 Parse(string network, ICidrGuess cidrGuess, bool sanitanize) + { + IPNetwork2.InternalParse(false, network, cidrGuess, sanitanize, out IPNetwork2 ipnetwork); + return ipnetwork; + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2TryParse.cs b/src/System.Net.IPNetwork/IPNetwork2TryParse.cs new file mode 100644 index 00000000..3c94edc2 --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2TryParse.cs @@ -0,0 +1,177 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +/// +/// Regroup the tryParse functionnalities. +/// +public partial class IPNetwork2 +{ + /// + /// 192.168.168.100 - 255.255.255.0 + /// + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255. + /// + /// A string containing an ip address to convert. + /// A string containing a netmaks to convert (255.255.255.0). + /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. + /// true if ipaddress/netmask was converted successfully; otherwise, false.. + public static bool TryParse(string ipaddress, string netmask, out IPNetwork2 ipnetwork) + { + IPNetwork2.InternalParse(true, ipaddress, netmask, out IPNetwork2 ipnetwork2); + bool parsed = ipnetwork2 != null; + ipnetwork = ipnetwork2; + + return parsed; + } + + /// + /// 192.168.168.100/24 + /// + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255. + /// + /// A string containing an ip address to convert. + /// A byte representing the netmask in cidr format (/24). + /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. + /// true if ipaddress/cidr was converted successfully; otherwise, false.. + public static bool TryParse(string ipaddress, byte cidr, out IPNetwork2 ipnetwork) + { + IPNetwork2.InternalParse(true, ipaddress, cidr, out IPNetwork2 ipnetwork2); + bool parsed = ipnetwork2 != null; + ipnetwork = ipnetwork2; + + return parsed; + } + + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. + /// true if network was converted successfully; otherwise, false. + public static bool TryParse(string network, out IPNetwork2 ipnetwork) + { + IPNetwork2.InternalParse(true, network, CidrGuess.ClassFull, sanitanize: true, out IPNetwork2 ipnetwork2); + bool parsed = ipnetwork2 != null; + ipnetwork = ipnetwork2; + + return parsed; + } + + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// Whether to sanitize network or not. + /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. + /// true if network was converted successfully; otherwise, false.. + public static bool TryParse(string network, bool sanitanize, out IPNetwork2 ipnetwork) + { + IPNetwork2.InternalParse(true, network, CidrGuess.ClassFull, sanitanize, out IPNetwork2 ipnetwork2); + bool parsed = ipnetwork2 != null; + ipnetwork = ipnetwork2; + + return parsed; + } + + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// An IPAdresse to convert. + /// A IPAdresse to be used as netmaks to convert. + /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. + /// true if network was converted successfully; otherwise, false.. + public static bool TryParse(IPAddress ipaddress, IPAddress netmask, out IPNetwork2 ipnetwork) + { + IPNetwork2.InternalParse(true, ipaddress, netmask, out IPNetwork2 ipnetwork2); + bool parsed = ipnetwork2 != null; + ipnetwork = ipnetwork2; + + return parsed; + } + + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// A ICidrGuess implementation that will be used to guess CIDR during converion. + /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. + /// true if network was converted successfully; otherwise, false.. + public static bool TryParse(string network, ICidrGuess cidrGuess, out IPNetwork2 ipnetwork) + { + IPNetwork2.InternalParse(true, network, cidrGuess, true, out IPNetwork2 ipnetwork2); + bool parsed = ipnetwork2 != null; + ipnetwork = ipnetwork2; + + return parsed; + } + + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// A ICidrGuess implementation that will be used to guess CIDR during converion. + /// Whether to sanitize network or not. + /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. + /// true if network was converted successfully; otherwise, false.. + public static bool TryParse(string network, ICidrGuess cidrGuess, bool sanitanize, out IPNetwork2 ipnetwork) + { + IPNetwork2.InternalParse(true, network, cidrGuess, sanitanize, out IPNetwork2 ipnetwork2); + bool parsed = ipnetwork2 != null; + ipnetwork = ipnetwork2; + + return parsed; + } +} \ No newline at end of file From 3866507987cad9a45dd90fed467076ae08a590b6 Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sat, 29 Mar 2025 22:49:31 +0100 Subject: [PATCH 05/25] Chore: split IPNetwork2 --- src/ConsoleApplication/ProgramContext.cs | 54 + src/System.Net.IPNetwork/IPNetwork2.cs | 1819 +---------------- src/System.Net.IPNetwork/IPNetwork2BitsSet.cs | 44 + .../IPNetwork2GetHashCode.cs | 28 + .../IPNetwork2IANAblock.cs | 104 + .../IPNetwork2IComparableIPNetworkMembers.cs | 101 + .../IPNetwork2IEquatableIPNetworkMembers.cs | 39 + .../IPNetwork2ISerializable.cs | 50 + .../IPNetwork2ListIPAddress.cs | 29 + .../IPNetwork2Operators.cs | 52 + src/System.Net.IPNetwork/IPNetwork2Print.cs | 47 + src/System.Net.IPNetwork/IPNetwork2Subnet.cs | 129 ++ .../IPNetwork2Supernet.cs | 174 ++ .../IPNetwork2SupernetArray.cs | 150 ++ src/System.Net.IPNetwork/IPNetwork2ToCidr.cs | 103 + .../IPNetwork2ToIPAddress.cs | 59 + .../IPNetwork2ToNetmask.cs | 88 + .../IPNetwork2ToString.cs | 19 + src/System.Net.IPNetwork/IPNetwork2ToUint.cs | 190 ++ .../IPNetwork2TryGuessCidr.cs | 47 + .../IPNetwork2ValidNetmask.cs | 64 + .../IPNetwork2WideSubnet.cs | 164 ++ .../IPNetwork2WildcardMask.cs | 92 + .../IPNetwork2XmlSerialization.cs | 19 + .../IPNetwork2contains.cs | 109 + src/System.Net.IPNetwork/IPNetwork2overlap.cs | 54 + src/System.Net.IPNetwork/split.py | 83 + 27 files changed, 2093 insertions(+), 1818 deletions(-) create mode 100644 src/System.Net.IPNetwork/IPNetwork2BitsSet.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2GetHashCode.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2IANAblock.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2IComparableIPNetworkMembers.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2IEquatableIPNetworkMembers.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2ISerializable.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2ListIPAddress.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2Operators.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2Print.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2Subnet.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2Supernet.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2SupernetArray.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2ToCidr.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2ToIPAddress.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2ToNetmask.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2ToString.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2ToUint.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2ValidNetmask.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2WildcardMask.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2XmlSerialization.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2contains.cs create mode 100644 src/System.Net.IPNetwork/IPNetwork2overlap.cs create mode 100644 src/System.Net.IPNetwork/split.py diff --git a/src/ConsoleApplication/ProgramContext.cs b/src/ConsoleApplication/ProgramContext.cs index 787377cc..f46107d0 100644 --- a/src/ConsoleApplication/ProgramContext.cs +++ b/src/ConsoleApplication/ProgramContext.cs @@ -9,39 +9,93 @@ namespace System.Net; /// public class ProgramContext { + /// + /// Get or set the IPNetwork. + /// public bool IPNetwork { get; set; } + /// + /// Get or set the Network. + /// public bool Network { get; set; } + /// + /// Get or set the Netmask. + /// public bool Netmask { get; set; } + /// + /// Get or set the Cidr. + /// public bool Cidr { get; set; } + /// + /// Get or set the Broadcast. + /// public bool Broadcast { get; set; } + /// + /// Get or set the FirstUsable. + /// public bool FirstUsable { get; set; } + /// + /// Get or set the LastUsable. + /// public bool LastUsable { get; set; } + /// + /// Get or set the Usable. + /// public bool Usable { get; set; } + /// + /// Get or set the Total. + /// public bool Total { get; set; } + /// + /// Get or set the CidrParse. + /// public CidrParseEnum CidrParse { get; set; } = CidrParseEnum.Value; + /// + /// Get or set the CidrParsed. + /// public byte CidrParsed { get; set; } = 32; + /// + /// Get or set the ContainNetwork. + /// public IPNetwork2 ContainNetwork { get; set; } + /// + /// Get or set the OverlapNetwork. + /// public IPNetwork2 OverlapNetwork { get; set; } + /// + /// Get or set the SubtractNetwork. + /// public IPNetwork2 SubtractNetwork { get; set; } + /// + /// Get or set the Action. + /// public ActionEnum Action { get; set; } = ActionEnum.PrintNetworks; + /// + /// Get or set the SubnetCidr. + /// public byte SubnetCidr { get; set; } + /// + /// Get or set the NetworksString. + /// public string[] NetworksString { get; set; } + /// + /// Get or set the Networks. + /// public IPNetwork2[] Networks { get; set; } } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2.cs b/src/System.Net.IPNetwork/IPNetwork2.cs index c3f890e4..be6fd833 100644 --- a/src/System.Net.IPNetwork/IPNetwork2.cs +++ b/src/System.Net.IPNetwork/IPNetwork2.cs @@ -4,10 +4,6 @@ namespace System.Net; -using System.Collections.Generic; -using System.IO; -using System.Net.Sockets; -using System.Numerics; using System.Runtime.Serialization; /// @@ -18,1817 +14,4 @@ namespace System.Net; [CLSCompliant(true)] public sealed partial class IPNetwork2 : IComparable, ISerializable { - #region ToUint - - /// - /// Convert an ipadress to decimal - /// 0.0.0.0 -> 0 - /// 0.0.1.0 -> 256. - /// - /// A string containing an ip address to convert. - /// A number representing the ipaddress. - public static BigInteger ToBigInteger(IPAddress ipaddress) - { - IPNetwork2.InternalToBigInteger(false, ipaddress, out BigInteger? uintIpAddress); - - return (BigInteger)uintIpAddress; - } - - /// - /// Convert an ipadress to decimal - /// 0.0.0.0 -> 0 - /// 0.0.1.0 -> 256. - /// - /// A string containing an ip address to convert. - /// A number representing the IPAdress. - /// true if ipaddress was converted successfully; otherwise, false. - public static bool TryToBigInteger(IPAddress ipaddress, out BigInteger? uintIpAddress) - { - IPNetwork2.InternalToBigInteger(true, ipaddress, out BigInteger? uintIpAddress2); - bool parsed = uintIpAddress2 != null; - uintIpAddress = uintIpAddress2; - - return parsed; - } - - /// - /// Converts an IPAddress to a nullable BigInteger representation. - /// - /// Indicates whether the method should handle errors silently (true) or throw exceptions (false). - /// The IPAddress to convert. - /// The resulting BigInteger representation of the IP address, or null if conversion fails and tryParse is true. - internal static void InternalToBigInteger(bool tryParse, IPAddress ipaddress, out BigInteger? uintIpAddress) - { - if (ipaddress == null) - { - if (tryParse == false) - { - throw new ArgumentNullException("ipaddress"); - } - - uintIpAddress = null; - return; - } - -#if NETSTANDARD2_1 - byte[] bytes = ipaddress.AddressFamily == AddressFamily.InterNetwork ? new byte[4] : new byte[16]; - Span span = bytes.AsSpan(); - if (!ipaddress.TryWriteBytes(span, out _)) - { - if (tryParse == false) - { - throw new ArgumentException("ipaddress"); - } - - uintIpAddress = null; - return; - } - - uintIpAddress = new BigInteger(span, isUnsigned: true, isBigEndian: true); -#elif NETSTANDARD20 - byte[] bytes = ipaddress.GetAddressBytes(); - bytes.AsSpan().Reverse(); - - // add trailing 0 to make unsigned - byte[] unsigned = new byte[bytes.Length + 1]; - Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); - uintIpAddress = new BigInteger(unsigned); -#else - byte[] bytes = ipaddress.GetAddressBytes(); - Array.Reverse(bytes); - - // add trailing 0 to make unsigned - byte[] unsigned = new byte[bytes.Length + 1]; - Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); - uintIpAddress = new BigInteger(unsigned); -#endif - } - - /// - /// Convert a cidr to BigInteger netmask. - /// - /// A byte representing the netmask in cidr format (/24). - /// Either IPv4 or IPv6. - /// A number representing the netmask exprimed in CIDR. - public static BigInteger ToUint(byte cidr, AddressFamily family) - { - IPNetwork2.InternalToBigInteger(false, cidr, family, out BigInteger? uintNetmask); - - return (BigInteger)uintNetmask; - } - - /// - /// Convert a cidr to uint netmask. - /// - /// A byte representing the netmask in cidr format (/24). - /// Either IPv4 or IPv6. - /// A number representing the netmask. - /// true if cidr was converted successfully; otherwise, false. - public static bool TryToUint(byte cidr, AddressFamily family, out BigInteger? uintNetmask) - { - IPNetwork2.InternalToBigInteger(true, cidr, family, out BigInteger? uintNetmask2); - bool parsed = uintNetmask2 != null; - uintNetmask = uintNetmask2; - - return parsed; - } - - /// - /// Convert a cidr to uint netmask. - /// - /// Whether to throw exception or not during conversion. - /// A byte representing the netmask in cidr format (/24). - /// Either IPv4 or IPv6. - /// A number representing the netmask. - internal static void InternalToBigInteger(bool tryParse, byte cidr, AddressFamily family, out BigInteger? uintNetmask) - { - if (family == AddressFamily.InterNetwork && cidr > 32) - { - if (tryParse == false) - { - throw new ArgumentOutOfRangeException("cidr"); - } - - uintNetmask = null; - return; - } - - if (family == AddressFamily.InterNetworkV6 && cidr > 128) - { - if (tryParse == false) - { - throw new ArgumentOutOfRangeException("cidr"); - } - - uintNetmask = null; - return; - } - - if (family != AddressFamily.InterNetwork - && family != AddressFamily.InterNetworkV6) - { - if (tryParse == false) - { - throw new NotSupportedException(family.ToString()); - } - - uintNetmask = null; - return; - } - - if (family == AddressFamily.InterNetwork) - { - uintNetmask = cidr == 0 ? 0 : 0xffffffff << (32 - cidr); - return; - } - - var mask = new BigInteger(new byte[] - { - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0x00, - }); - - BigInteger masked = cidr == 0 ? 0 : mask << (128 - cidr); - byte[] m = masked.ToByteArray(); - byte[] bmask = new byte[17]; - int copy = m.Length > 16 ? 16 : m.Length; - Array.Copy(m, 0, bmask, 0, copy); - uintNetmask = new BigInteger(bmask); - } - - #endregion - - #region ToCidr - - /// - /// Convert netmask to CIDR - /// 255.255.255.0 -> 24 - /// 255.255.0.0 -> 16 - /// 255.0.0.0 -> 8. - /// - /// Whether to throw exception or not during conversion. - /// A number representing the netmask to convert. - /// Either IPv4 or IPv6. - /// A byte representing the netmask in cidr format (/24). - private static void InternalToCidr(bool tryParse, BigInteger netmask, AddressFamily family, out byte? cidr) - { - if (!IPNetwork2.InternalValidNetmask(netmask, family)) - { - if (tryParse == false) - { - throw new ArgumentException("netmask"); - } - - cidr = null; - return; - } - - byte cidr2 = IPNetwork2.BitsSet(netmask, family); - cidr = cidr2; - - return; - } - - /// - /// Convert netmask to CIDR - /// 255.255.255.0 -> 24 - /// 255.255.0.0 -> 16 - /// 255.0.0.0 -> 8. - /// - /// An IPAdress representing the CIDR to convert. - /// A byte representing the CIDR converted from the netmask. - public static byte ToCidr(IPAddress netmask) - { - IPNetwork2.InternalToCidr(false, netmask, out byte? cidr); - return (byte)cidr; - } - - /// - /// Convert netmask to CIDR - /// 255.255.255.0 -> 24 - /// 255.255.0.0 -> 16 - /// 255.0.0.0 -> 8. - /// - /// An IPAdress representing the CIDR to convert. - /// A byte representing the netmask in cidr format (/24). - /// true if netmask was converted successfully; otherwise, false. - public static bool TryToCidr(IPAddress netmask, out byte? cidr) - { - IPNetwork2.InternalToCidr(true, netmask, out byte? cidr2); - bool parsed = cidr2 != null; - cidr = cidr2; - return parsed; - } - - private static void InternalToCidr(bool tryParse, IPAddress netmask, out byte? cidr) - { - if (netmask == null) - { - if (tryParse == false) - { - throw new ArgumentNullException("netmask"); - } - - cidr = null; - return; - } - - bool parsed = IPNetwork2.TryToBigInteger(netmask, out BigInteger? uintNetmask2); - - // 20180217 lduchosal - // impossible to reach code. - // if (parsed == false) { - // if (tryParse == false) { - // throw new ArgumentException("netmask"); - // } - // cidr = null; - // return; - // } - var uintNetmask = (BigInteger)uintNetmask2; - - IPNetwork2.InternalToCidr(tryParse, uintNetmask, netmask.AddressFamily, out byte? cidr2); - cidr = cidr2; - - return; - } - - #endregion - - #region ToNetmask - - /// - /// Convert CIDR to netmask - /// 24 -> 255.255.255.0 - /// 16 -> 255.255.0.0 - /// 8 -> 255.0.0.0. - /// - /// - /// A byte representing the netmask in cidr format (/24). - /// Either IPv4 or IPv6. - /// An IPAdress representing cidr. - public static IPAddress ToNetmask(byte cidr, AddressFamily family) - { - IPNetwork2.InternalToNetmask(false, cidr, family, out IPAddress netmask); - - return netmask; - } - - /// - /// Convert CIDR to netmask - /// 24 -> 255.255.255.0 - /// 16 -> 255.255.0.0 - /// 8 -> 255.0.0.0. - /// - /// - /// A byte representing the netmask in cidr format (/24). - /// Either IPv4 or IPv6. - /// The resulting netmask. - /// true if cidr was converted successfully; otherwise, false. - public static bool TryToNetmask(byte cidr, AddressFamily family, out IPAddress netmask) - { - IPNetwork2.InternalToNetmask(true, cidr, family, out IPAddress netmask2); - bool parsed = netmask2 != null; - netmask = netmask2; - - return parsed; - } - - /// - /// Converts a CIDR value to its corresponding IPAddress netmask. - /// - /// If true, handles errors silently; otherwise, throws exceptions. - /// The CIDR value to convert. - /// The address family (IPv4 or IPv6). - /// The resulting IPAddress netmask. - internal static void InternalToNetmask(bool tryParse, byte cidr, AddressFamily family, out IPAddress netmask) - { - if (family != AddressFamily.InterNetwork - && family != AddressFamily.InterNetworkV6) - { - if (tryParse == false) - { - throw new ArgumentException("family"); - } - - netmask = null; - return; - } - - int maxCidr = family == Sockets.AddressFamily.InterNetwork ? 32 : 128; - if (cidr > maxCidr) - { - if (tryParse == false) - { - throw new ArgumentOutOfRangeException("cidr"); - } - - netmask = null; - return; - } - - BigInteger mask = IPNetwork2.ToUint(cidr, family); - var netmask2 = IPNetwork2.ToIPAddress(mask, family); - netmask = netmask2; - - return; - } - - #endregion - - #region BitsSet - - /// - /// Count bits set to 1 in netmask. - /// - /// - /// A number representing the netmask to count bits from. - /// Either IPv4 or IPv6. - /// The number of bytes set to 1. - private static byte BitsSet(BigInteger netmask, AddressFamily family) - { - string s = netmask.ToBinaryString(); - - return (byte)s.Replace("0", string.Empty) - .ToCharArray() - .Length; - } - - /// - /// Count bits set to 1 in netmask. - /// - /// A number representing the netmask to count bits from. - /// The number of bytes set to 1. - [CLSCompliant(false)] - public static uint BitsSet(IPAddress netmask) - { - var uintNetmask = IPNetwork2.ToBigInteger(netmask); - uint bits = IPNetwork2.BitsSet(uintNetmask, netmask.AddressFamily); - - return bits; - } - - #endregion - - #region ValidNetmask - - /// - /// return true if netmask is a valid netmask - /// 255.255.255.0, 255.0.0.0, 255.255.240.0, ... - /// - /// - /// A number representing the netmask to validate. - /// true if netmask is a valid IP Netmask; otherwise, false. - public static bool ValidNetmask(IPAddress netmask) - { - if (netmask == null) - { - throw new ArgumentNullException("netmask"); - } - - var uintNetmask = IPNetwork2.ToBigInteger(netmask); - bool valid = IPNetwork2.InternalValidNetmask(uintNetmask, netmask.AddressFamily); - - return valid; - } - - /// - /// Determines whether a given BigInteger netmask is valid for the specified address family. - /// - /// The netmask represented as a BigInteger. - /// The address family (IPv4 or IPv6). - /// - /// true if the netmask is valid; otherwise, false. - /// - internal static bool InternalValidNetmask(BigInteger netmask, AddressFamily family) - { - if (family != AddressFamily.InterNetwork - && family != AddressFamily.InterNetworkV6) - { - throw new ArgumentException("family"); - } - - BigInteger mask = family == AddressFamily.InterNetwork - ? new BigInteger(0x0ffffffff) - : new BigInteger(new byte[] - { - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0x00, - }); - - BigInteger neg = (~netmask) & mask; - bool isNetmask = ((neg + 1) & neg) == 0; - - return isNetmask; - } - - #endregion - - #region ToIPAddress - - /// - /// Transform a uint ipaddress into IPAddress object. - /// - /// A number representing an ip address to convert. - /// Either IPv4 or IPv6. - /// An ip adress. - public static IPAddress ToIPAddress(BigInteger ipaddress, AddressFamily family) - { - int width = family == AddressFamily.InterNetwork ? 4 : 16; - byte[] bytes = ipaddress.ToByteArray(); - byte[] bytes2 = new byte[width]; - int copy = bytes.Length > width ? width : bytes.Length; - Array.Copy(bytes, 0, bytes2, 0, copy); - Array.Reverse(bytes2); - - byte[] sized = Resize(bytes2, family); - var ip = new IPAddress(sized); - return ip; - } - - /// - /// Resizes the given byte array to match the expected width for the specified address family (IPv4 or IPv6). - /// Pads with zeros if the array is shorter than required. - /// - /// The byte array to resize. - /// The address family (IPv4 or IPv6). - /// A byte array resized to the appropriate length for the address family. - internal static byte[] Resize(byte[] bytes, AddressFamily family) - { - if (family != AddressFamily.InterNetwork - && family != AddressFamily.InterNetworkV6) - { - throw new ArgumentException("family"); - } - - int width = family == AddressFamily.InterNetwork ? 4 : 16; - - if (bytes.Length > width) - { - throw new ArgumentException("bytes"); - } - - byte[] result = new byte[width]; - Array.Copy(bytes, 0, result, 0, bytes.Length); - - return result; - } - - #endregion - - #region contains - - /// - /// return true if ipaddress is contained in network. - /// - /// A string containing an ip address to convert. - /// true if ipaddress is contained into the IP Network; otherwise, false. - public bool Contains(IPAddress contains) - { - if (contains == null) - { - throw new ArgumentNullException("contains"); - } - - if (this.AddressFamily != contains.AddressFamily) - { - return false; - } - - BigInteger uintNetwork = this.InternalNetwork; - BigInteger uintBroadcast = this.InternalBroadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); - var uintAddress = IPNetwork2.ToBigInteger(contains); - - bool result = uintAddress >= uintNetwork - && uintAddress <= uintBroadcast; - - return result; - } - - /// - /// Determines whether the given IP address is part of the given IP network. - /// - /// The IP network. - /// The IP address. - /// - /// true if the IP address is part of the IP network; otherwise, false. - /// - [Obsolete("static Contains is deprecated, please use instance Contains.")] - public static bool Contains(IPNetwork2 network, IPAddress ipaddress) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.Contains(ipaddress); - } - - /// - /// return true is network2 is fully contained in network. - /// - /// The network to test. - /// It returns the boolean value. If network2 is in IPNetwork then it returns True, otherwise returns False. - public bool Contains(IPNetwork2 contains) - { - if (contains == null) - { - throw new ArgumentNullException("contains"); - } - - BigInteger uintNetwork = this.InternalNetwork; - BigInteger uintBroadcast = this.InternalBroadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); - - BigInteger uintFirst = contains.InternalNetwork; - BigInteger - uintLast = contains.InternalBroadcast; // CreateBroadcast(ref uintFirst, network2._netmask, network2._family); - - bool result = uintFirst >= uintNetwork - && uintLast <= uintBroadcast; - - return result; - } - - /// - /// Determines if the given contains the specified . - /// - /// The network to check for containment. - /// The network to check if it is contained. - /// - /// true if the contains the ; otherwise, false. - /// - [Obsolete("static Contains is deprecated, please use instance Contains.")] - public static bool Contains(IPNetwork2 network, IPNetwork2 network2) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.Contains(network2); - } - - private static BigInteger CreateBroadcast(ref BigInteger network, BigInteger netmask, AddressFamily family) - { - int width = family == AddressFamily.InterNetwork ? 4 : 16; - BigInteger uintBroadcast = network + netmask.PositiveReverse(width); - - return uintBroadcast; - } - - #endregion - - #region overlap - - /// - /// return true is network2 overlap network. - /// - /// The network to test. - /// true if network2 overlaps into the IP Network; otherwise, false. - public bool Overlap(IPNetwork2 network2) - { - if (network2 == null) - { - throw new ArgumentNullException("network2"); - } - - BigInteger uintNetwork = this.InternalNetwork; - BigInteger uintBroadcast = this.InternalBroadcast; - - BigInteger uintFirst = network2.InternalNetwork; - BigInteger uintLast = network2.InternalBroadcast; - - bool overlap = - (uintFirst >= uintNetwork && uintFirst <= uintBroadcast) - || (uintLast >= uintNetwork && uintLast <= uintBroadcast) - || (uintFirst <= uintNetwork && uintLast >= uintBroadcast) - || (uintFirst >= uintNetwork && uintLast <= uintBroadcast); - - return overlap; - } - - /// - /// Determines if two IPNetwork2 objects overlap each other. - /// - /// The first IPNetwork2 object. - /// The second IPNetwork2 object. - /// Returns true if the two IPNetwork2 objects overlap, otherwise false. - [Obsolete("static Overlap is deprecated, please use instance Overlap.")] - public static bool Overlap(IPNetwork2 network, IPNetwork2 network2) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.Overlap(network2); - } - - #endregion - - #region ToString - - /// - /// Returns a string representation of the object. - /// - /// - /// A string representation of the object which includes the Network and Cidr values separated by a "/". - /// - public override string ToString() - { - return string.Format("{0}/{1}", this.Network, this.Cidr); - } - - #endregion - - #region IANA block - - private static readonly Lazy IanaAblockReserved = new (() => IPNetwork2.Parse("10.0.0.0/8")); - private static readonly Lazy IanaBblockReserved = new (() => IPNetwork2.Parse("172.16.0.0/12")); - private static readonly Lazy IanaCblockReserved = new (() => IPNetwork2.Parse("192.168.0.0/16")); - - /// - /// Gets 10.0.0.0/8. - /// - /// The IANA reserved IPNetwork 10.0.0.0/8. - public static IPNetwork2 IANA_ABLK_RESERVED1 - { - get - { - return IanaAblockReserved.Value; - } - } - - /// - /// Gets 172.12.0.0/12. - /// - /// The IANA reserved IPNetwork 172.12.0.0/12. - public static IPNetwork2 IANA_BBLK_RESERVED1 - { - get - { - return IanaBblockReserved.Value; - } - } - - /// - /// Gets 192.168.0.0/16. - /// - /// The IANA reserved IPNetwork 192.168.0.0/16. - public static IPNetwork2 IANA_CBLK_RESERVED1 - { - get - { - return IanaCblockReserved.Value; - } - } - - /// - /// return true if ipaddress is contained in - /// IANA_ABLK_RESERVED1, IANA_BBLK_RESERVED1, IANA_CBLK_RESERVED1. - /// - /// A string containing an ip address to convert. - /// true if ipaddress is a IANA reserverd IP Netowkr ; otherwise, false. - public static bool IsIANAReserved(IPAddress ipaddress) - { - if (ipaddress == null) - { - throw new ArgumentNullException("ipaddress"); - } - - return IPNetwork2.IANA_ABLK_RESERVED1.Contains(ipaddress) - || IPNetwork2.IANA_BBLK_RESERVED1.Contains(ipaddress) - || IPNetwork2.IANA_CBLK_RESERVED1.Contains(ipaddress); - } - - /// - /// return true if ipnetwork is contained in - /// IANA_ABLK_RESERVED1, IANA_BBLK_RESERVED1, IANA_CBLK_RESERVED1. - /// - /// true if the ipnetwork is a IANA reserverd IP Netowkr ; otherwise, false. - public bool IsIANAReserved() - { - return IPNetwork2.IANA_ABLK_RESERVED1.Contains(this) - || IPNetwork2.IANA_BBLK_RESERVED1.Contains(this) - || IPNetwork2.IANA_CBLK_RESERVED1.Contains(this); - } - - /// - /// Determines whether the specified IP network is reserved according to the IANA Reserved ranges. - /// - /// The IP network to check. - /// - /// true if the specified IP network is reserved according to the IANA Reserved ranges; otherwise, false. - /// - /// - /// - /// This method is obsolete and should not be used. Please use the instance method instead. - /// - /// - /// Throws an if is null. - /// - /// - [Obsolete("static IsIANAReserved is deprecated, please use instance IsIANAReserved.")] - public static bool IsIANAReserved(IPNetwork2 ipnetwork) - { - if (ipnetwork == null) - { - throw new ArgumentNullException("ipnetwork"); - } - - return ipnetwork.IsIANAReserved(); - } - - #endregion - - #region Subnet - - /// - /// Subnet a network into multiple nets of cidr mask - /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 - /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. - /// - /// A byte representing the CIDR to be used to subnet the current IPNetwork. - /// A IPNetworkCollection splitted by CIDR. - public IPNetworkCollection Subnet(byte cidr) - { - IPNetwork2.InternalSubnet(false, this, cidr, out IPNetworkCollection ipnetworkCollection); - - return ipnetworkCollection; - } - - /// - /// Subnet method is used to divide the given IP network into subnets with the specified CIDR. - /// - /// The IP network to be subnetted. - /// The CIDR (Classless Inter-Domain Routing) value used to subnet the network. - /// - /// A collection of subnets created from the given network using the specified CIDR. - /// - [Obsolete("static Subnet is deprecated, please use instance Subnet.")] - public static IPNetworkCollection Subnet(IPNetwork2 network, byte cidr) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.Subnet(cidr); - } - - /// - /// Subnet a network into multiple nets of cidr mask - /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 - /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. - /// - /// A byte representing the CIDR to be used to subnet the current IPNetwork. - /// The resulting subnetted IPNetwork. - /// true if network was split successfully; otherwise, false. - public bool TrySubnet(byte cidr, out IPNetworkCollection ipnetworkCollection) - { - IPNetwork2.InternalSubnet(true, this, cidr, out IPNetworkCollection inc); - if (inc == null) - { - ipnetworkCollection = null; - return false; - } - - ipnetworkCollection = inc; - return true; - } - - /// - /// Subnet a network into multiple nets of cidr mask - /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 - /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. - /// - /// The network. - /// A byte representing the CIDR to be used to subnet the current IPNetwork. - /// The resulting subnetted IPNetwork. - /// true if network was split successfully; otherwise, false. - [Obsolete("static TrySubnet is deprecated, please use instance TrySubnet.")] - public static bool TrySubnet(IPNetwork2 network, byte cidr, out IPNetworkCollection ipnetworkCollection) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.TrySubnet(cidr, out ipnetworkCollection); - } - - /// - /// Splits a given IP network into smaller subnets of the specified CIDR size. - /// - /// Indicates whether to throw exceptions or return null on failure. - /// The IP network to be subnetted. - /// The CIDR value used to define the new subnet size. - /// The resulting collection of subnets, or null if the operation fails and trySubnet is true. - internal static void InternalSubnet(bool trySubnet, IPNetwork2 network, byte cidr, out IPNetworkCollection ipnetworkCollection) - { - if (network == null) - { - if (trySubnet == false) - { - throw new ArgumentNullException("network"); - } - - ipnetworkCollection = null; - return; - } - - int maxCidr = network.family == Sockets.AddressFamily.InterNetwork ? 32 : 128; - if (cidr > maxCidr) - { - if (trySubnet == false) - { - throw new ArgumentOutOfRangeException("cidr"); - } - - ipnetworkCollection = null; - return; - } - - if (cidr < network.Cidr) - { - if (trySubnet == false) - { - throw new ArgumentException("cidr"); - } - - ipnetworkCollection = null; - return; - } - - ipnetworkCollection = new IPNetworkCollection(network, cidr); - return; - } - - #endregion - - #region Supernet - - /// - /// Supernet two consecutive cidr equal subnet into a single one - /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 - /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 - /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. - /// - /// The network to supernet with. - /// A supernetted IP Network. - public IPNetwork2 Supernet(IPNetwork2 network2) - { - IPNetwork2.InternalSupernet(false, this, network2, out IPNetwork2 supernet); - return supernet; - } - - /// - /// Supernet two consecutive cidr equal subnet into a single one - /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 - /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 - /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. - /// - /// the network. - /// The network to supernet with. - /// A supernetted IP Network. - [Obsolete("static Supernet is deprecated, please use instance Supernet.")] - public static IPNetwork2 Supernet(IPNetwork2 network, IPNetwork2 network2) - { - return network.Supernet(network2); - } - - /// - /// Try to supernet two consecutive cidr equal subnet into a single one - /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 - /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 - /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. - /// - /// The network to supernet with. - /// The resulting IPNetwork. - /// true if network2 was supernetted successfully; otherwise, false. - public bool TrySupernet(IPNetwork2 network2, out IPNetwork2 supernet) - { - IPNetwork2.InternalSupernet(true, this, network2, out IPNetwork2 outSupernet); - bool parsed = outSupernet != null; - supernet = outSupernet; - return parsed; - } - - /// - /// Try to supernet two consecutive cidr equal subnet into a single one - /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 - /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 - /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. - /// - /// the network. - /// The network to supernet with. - /// The resulting IPNetwork. - /// true if network2 was supernetted successfully; otherwise, false. - [Obsolete("static TrySupernet is deprecated, please use instance TrySupernet.")] - public static bool TrySupernet(IPNetwork2 network, IPNetwork2 network2, out IPNetwork2 supernet) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.TrySupernet(network2, out supernet); - } - - /// - /// Attempts to merge two adjacent IP networks with equal CIDR values into a single supernet. - /// - /// If true, suppresses exceptions on failure; otherwise, throws. - /// The first IP network. - /// The second IP network. - /// The resulting supernet if the merge is successful; otherwise, null. - internal static void InternalSupernet( - bool trySupernet, - IPNetwork2 network1, - IPNetwork2 network2, - out IPNetwork2 supernet) - { - if (network1 == null) - { - if (trySupernet == false) - { - throw new ArgumentNullException("network1"); - } - - supernet = null; - return; - } - - if (network2 == null) - { - if (trySupernet == false) - { - throw new ArgumentNullException("network2"); - } - - supernet = null; - return; - } - - if (network1.Contains(network2)) - { - supernet = new IPNetwork2(network1.InternalNetwork, network1.family, network1.Cidr); - return; - } - - if (network2.Contains(network1)) - { - supernet = new IPNetwork2(network2.InternalNetwork, network2.family, network2.Cidr); - return; - } - - if (network1.cidr != network2.cidr) - { - if (trySupernet == false) - { - throw new ArgumentException("cidr"); - } - - supernet = null; - return; - } - - IPNetwork2 first = (network1.InternalNetwork < network2.InternalNetwork) ? network1 : network2; - IPNetwork2 last = (network1.InternalNetwork > network2.InternalNetwork) ? network1 : network2; - - // Starting from here : - // network1 and network2 have the same cidr, - // network1 does not contain network2, - // network2 does not contain network1, - // first is the lower subnet - // last is the higher subnet - if ((first.InternalBroadcast + 1) != last.InternalNetwork) - { - if (trySupernet == false) - { - throw new ArgumentOutOfRangeException("network1"); - } - - supernet = null; - return; - } - - BigInteger uintSupernet = first.InternalNetwork; - byte cidrSupernet = (byte)(first.cidr - 1); - - var networkSupernet = new IPNetwork2(uintSupernet, first.family, cidrSupernet); - if (networkSupernet.InternalNetwork != first.InternalNetwork) - { - if (trySupernet == false) - { - throw new ArgumentException("network"); - } - - supernet = null; - return; - } - - supernet = networkSupernet; - return; - } - - #endregion - - #region GetHashCode - - /// - public override int GetHashCode() - { - return this.hashCode; - } - - /// - /// 20221105 : ldvhcosal - /// GetHashCode uses mutable attributes. That introduce undefined behaviour on Hashtable and dictionary. - /// - /// An number representing the hashCode. - private int ComputeHashCode() - { - return string.Format( - "{0}|{1}|{2}", - this.family.GetHashCode(), - this.InternalNetwork.GetHashCode(), - this.cidr.GetHashCode()).GetHashCode(); - } - - #endregion - - #region SupernetArray - - /// - /// Supernet a list of subnet - /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 - /// 192.168.0.0/24 + 192.168.1.0/24 + 192.168.2.0/24 + 192.168.3.0/24 = 192.168.0.0/22. - /// - /// A list of IPNetwork to merge into common supernets. - /// The result of IPNetwork if merges succeed, the first ipnetwork otherwise. - public static IPNetwork2[] Supernet(IPNetwork2[] ipnetworks) - { - InternalSupernet(false, ipnetworks, out IPNetwork2[] supernet); - return supernet; - } - - /// - /// Supernet a list of subnet - /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 - /// 192.168.0.0/24 + 192.168.1.0/24 + 192.168.2.0/24 + 192.168.3.0/24 = 192.168.0.0/22. - /// - /// A list of IPNetwork to merge into common supernets. - /// The result of IPNetwork merges. - /// true if ipnetworks was supernetted successfully; otherwise, false. - public static bool TrySupernet(IPNetwork2[] ipnetworks, out IPNetwork2[] supernet) - { - bool supernetted = InternalSupernet(true, ipnetworks, out supernet); - return supernetted; - } - - /// - /// Attempts to merge an array of adjacent IP networks with equal CIDR values into the smallest possible set of supernets. - /// - /// If true, suppresses exceptions on failure; otherwise, throws. - /// The array of IP networks to attempt to merge. - /// The resulting array of merged supernets if successful; otherwise, the original input. - /// true if supernetting was successful; otherwise, false. - internal static bool InternalSupernet(bool trySupernet, IPNetwork2[] ipnetworks, out IPNetwork2[] supernet) - { - if (ipnetworks == null) - { - if (trySupernet == false) - { - throw new ArgumentNullException("ipnetworks"); - } - - supernet = null; - return false; - } - - if (ipnetworks.Length <= 0) - { - supernet = new IPNetwork2[0]; - return true; - } - - var supernetted = new List(); - List ipns = IPNetwork2.Array2List(ipnetworks); - Stack current = IPNetwork2.List2Stack(ipns); - int previousCount = 0; - int currentCount = current.Count; - - while (previousCount != currentCount) - { - supernetted.Clear(); - while (current.Count > 1) - { - IPNetwork2 ipn1 = current.Pop(); - IPNetwork2 ipn2 = current.Peek(); - - bool success = ipn1.TrySupernet(ipn2, out IPNetwork2 outNetwork); - if (success) - { - current.Pop(); - current.Push(outNetwork); - } - else - { - supernetted.Add(ipn1); - } - } - - if (current.Count == 1) - { - supernetted.Add(current.Pop()); - } - - previousCount = currentCount; - currentCount = supernetted.Count; - current = IPNetwork2.List2Stack(supernetted); - } - - supernet = supernetted.ToArray(); - return true; - } - - private static Stack List2Stack(List list) - { - var stack = new Stack(); - list.ForEach(new Action( - delegate(IPNetwork2 ipn) - { - stack.Push(ipn); - })); - return stack; - } - - private static List Array2List(IPNetwork2[] array) - { - var ipns = new List(); - ipns.AddRange(array); - IPNetwork2.RemoveNull(ipns); - ipns.Sort(new Comparison( - delegate(IPNetwork2 ipn1, IPNetwork2 ipn2) - { - int networkCompare = ipn1.InternalNetwork.CompareTo(ipn2.InternalNetwork); - if (networkCompare == 0) - { - int cidrCompare = ipn1.cidr.CompareTo(ipn2.cidr); - return cidrCompare; - } - - return networkCompare; - })); - ipns.Reverse(); - - return ipns; - } - - private static void RemoveNull(List ipns) - { - ipns.RemoveAll(new Predicate( - delegate(IPNetwork2 ipn) - { - if (ipn == null) - { - return true; - } - - return false; - })); - } - - #endregion - - #region WideSubnet - - /// - /// Finds the widest subnet that can contain both the start and end IP addresses. - /// - /// The starting IP address. - /// The ending IP address. - /// The widest subnet that contains both the start and end IP addresses. - /// Thrown when either the start or end IP address is null or empty. - /// Thrown when the start or end IP addresses are not valid. - /// Thrown when the start and end IP addresses have different address families. - public static IPNetwork2 WideSubnet(string start, string end) - { - if (string.IsNullOrEmpty(start)) - { - throw new ArgumentNullException("start"); - } - - if (string.IsNullOrEmpty(end)) - { - throw new ArgumentNullException("end"); - } - - if (!IPAddress.TryParse(start, out IPAddress startIP)) - { - throw new ArgumentException("start"); - } - - if (!IPAddress.TryParse(end, out IPAddress endIP)) - { - throw new ArgumentException("end"); - } - - if (startIP.AddressFamily != endIP.AddressFamily) - { - throw new NotSupportedException("MixedAddressFamily"); - } - - var ipnetwork = new IPNetwork2(0, startIP.AddressFamily, 0); - for (byte cidr = 32; cidr >= 0; cidr--) - { - var wideSubnet = IPNetwork2.Parse(start, cidr); - if (wideSubnet.Contains(endIP)) - { - ipnetwork = wideSubnet; - break; - } - } - - return ipnetwork; - } - - /// - /// Attempts to find the widest subnet that contains both the start and end IP addresses. objects. - /// - /// An array of IPNetwork2 objects to wide subnet. - /// When this method returns, contains the wide subnet of the IPNetwork2 objects, if wide subnet was successful; otherwise, null. - /// true if wide subnet was successful; otherwise, false. - public static bool TryWideSubnet(IPNetwork2[] ipnetworks, out IPNetwork2 ipnetwork) - { - IPNetwork2.InternalWideSubnet(true, ipnetworks, out IPNetwork2 ipn); - if (ipn == null) - { - ipnetwork = null; - return false; - } - - ipnetwork = ipn; - - return true; - } - - /// - /// Finds the widest subnet from an array of IP networks. An array of IPNetwork2 objects representing the IP networks. The widest subnet as an IPNetwork2 object. - /// / - public static IPNetwork2 WideSubnet(IPNetwork2[] ipnetworks) - { - IPNetwork2.InternalWideSubnet(false, ipnetworks, out IPNetwork2 ipn); - return ipn; - } - - /// - /// Attempts to find the widest subnet that includes all given IPNetwork2 instances. - /// - /// If true, suppresses exceptions on invalid input; otherwise, throws. - /// The array of IPNetwork2 instances to encompass within the widest subnet. - /// The resulting widest IPNetwork2 subnet, or null if unsuccessful and tryWide is true. - internal static void InternalWideSubnet(bool tryWide, IPNetwork2[] ipnetworks, out IPNetwork2 ipnetwork) - { - if (ipnetworks == null) - { - if (tryWide == false) - { - throw new ArgumentNullException("ipnetworks"); - } - - ipnetwork = null; - return; - } - - IPNetwork2[] nnin = Array.FindAll(ipnetworks, new Predicate( - delegate(IPNetwork2 ipnet) - { - return ipnet != null; - })); - - if (nnin.Length <= 0) - { - if (tryWide == false) - { - throw new ArgumentException("ipnetworks"); - } - - ipnetwork = null; - return; - } - - if (nnin.Length == 1) - { - IPNetwork2 ipn0 = nnin[0]; - ipnetwork = ipn0; - return; - } - - Array.Sort(nnin); - IPNetwork2 nnin0 = nnin[0]; - BigInteger uintNnin0 = nnin0.ipaddress; - - IPNetwork2 nninX = nnin[nnin.Length - 1]; - IPAddress ipaddressX = nninX.Broadcast; - - AddressFamily family = ipnetworks[0].family; - foreach (IPNetwork2 ipnx in ipnetworks) - { - if (ipnx.family != family) - { - throw new ArgumentException("MixedAddressFamily"); - } - } - - var ipn = new IPNetwork2(0, family, 0); - for (byte cidr = nnin0.cidr; cidr >= 0; cidr--) - { - var wideSubnet = new IPNetwork2(uintNnin0, family, cidr); - if (wideSubnet.Contains(ipaddressX)) - { - ipn = wideSubnet; - break; - } - } - - ipnetwork = ipn; - return; - } - - #endregion - - #region Print - - /// - /// Print an ipnetwork in a clear representation string. - /// - /// Dump an IPNetwork representation as string. - public string Print() - { - using (var sw = new StringWriter()) - { - sw.WriteLine("IPNetwork : {0}", this.ToString()); - sw.WriteLine("Network : {0}", this.Network); - sw.WriteLine("Netmask : {0}", this.Netmask); - sw.WriteLine("Cidr : {0}", this.Cidr); - sw.WriteLine("Broadcast : {0}", this.Broadcast); - sw.WriteLine("FirstUsable : {0}", this.FirstUsable); - sw.WriteLine("LastUsable : {0}", this.LastUsable); - sw.WriteLine("Usable : {0}", this.Usable); - - return sw.ToString(); - } - } - - /// - /// Print an ipnetwork in a clear representation string. - /// - /// The ipnetwork. - /// Dump an IPNetwork representation as string. - /// When arg is null. - [Obsolete("static Print is deprecated, please use instance Print.")] - public static string Print(IPNetwork2 ipnetwork) - { - if (ipnetwork == null) - { - throw new ArgumentNullException("ipnetwork"); - } - - return ipnetwork.Print(); - } - - #endregion - - #region TryGuessCidr - - /// - /// Delegate to CidrGuess ClassFull guessing of cidr. - /// - /// A string representing an IPAdress that will be used to guess the corresponding CIDR. - /// The resulting CIDR as byte. - /// true if cidr was guessed successfully; otherwise, false. - public static bool TryGuessCidr(string ip, out byte cidr) - { - return CidrGuess.ClassFull.TryGuessCidr(ip, out cidr); - } - - /// - /// Try to parse cidr. Have to be >= 0 and <= 32 or 128. - /// - /// A string representing a byte CIRD (/24). - /// Either IPv4 or IPv6. - /// The resulting CIDR as byte. - /// true if cidr was converted successfully; otherwise, false. - public static bool TryParseCidr(string sidr, AddressFamily family, out byte? cidr) - { - byte b = 0; - if (!byte.TryParse(sidr, out b)) - { - cidr = null; - return false; - } - - if (!IPNetwork2.TryToNetmask(b, family, out IPAddress netmask)) - { - cidr = null; - return false; - } - - cidr = b; - return true; - } - - #endregion - - #region ListIPAddress - - /// - /// List all ip addresses in a subnet. - /// - /// The network to list IPAdresses. - /// All the IPAdresses contained in ipnetwork. - [Obsolete("static ListIPAddress is deprecated, please use instance ListIPAddress.")] - public static IPAddressCollection ListIPAddress(IPNetwork2 ipnetwork) - { - return ipnetwork.ListIPAddress(); - } - - /// - /// List all ip addresses in a subnet. - /// - /// Filter IPAdresses from IPNetwork. - /// The filterted IPAdresses contained in ipnetwork. - public IPAddressCollection ListIPAddress(FilterEnum filter = FilterEnum.All) - { - return new IPAddressCollection(this, filter); - } - - #endregion - - #region IComparable Members - - /// - /// Compares two IPNetwork2 instances. - /// - /// The first IPNetwork2 instance to compare. - /// The second IPNetwork2 instance to compare. - /// - /// A value indicating the relative order of the two IPNetwork2 instances. - /// Zero if the instances are equal. - /// A negative value if is less than . - /// A positive value if is greater than . - /// - public static int Compare(IPNetwork2 left, IPNetwork2 right) - { - // two null IPNetworks are equal - if (ReferenceEquals(left, null) && ReferenceEquals(right, null)) - { - return 0; - } - - // two same IPNetworks are equal - if (ReferenceEquals(left, right)) - { - return 0; - } - - // null is always sorted first - if (ReferenceEquals(left, null)) - { - return -1; - } - - if (ReferenceEquals(right, null)) - { - return 1; - } - - // first test family - int result = left.family.CompareTo(right.family); - if (result != 0) - { - return result; - } - - // second test the network - result = left.InternalNetwork.CompareTo(right.InternalNetwork); - if (result != 0) - { - return result; - } - - // then test the cidr - result = left.cidr.CompareTo(right.cidr); - return result; - } - - /// - /// Compare two ipnetworks. - /// - /// The other network to compare to. - /// A signed number indicating the relative values of this instance and value.. - public int CompareTo(IPNetwork2 other) - { - return Compare(this, other); - } - - /// - /// Compare two ipnetworks. - /// - /// The other object to compare to. - /// A signed number indicating the relative values of this instance and value.. - public int CompareTo(object obj) - { - // null is at less - if (obj == null) - { - return 1; - } - - // convert to a proper Cidr object - var other = obj as IPNetwork2; - - // type problem if null - if (other == null) - { - throw new ArgumentException( - "The supplied parameter is an invalid type. Please supply an IPNetwork type.", - "obj"); - } - - // perform the comparision - return this.CompareTo(other); - } - - #endregion - - #region IEquatable Members - - /// - /// Compare two ipnetworks. - /// - /// An IPNetwork to compare. - /// An other IPNetwork to compare to. - /// true if obj has the same value as this instance; otherwise, false. - public static bool Equals(IPNetwork2 left, IPNetwork2 right) - { - return Compare(left, right) == 0; - } - - /// - /// Compare two ipnetworks. - /// - /// An IPNetwork to compare to this instance. - /// true if obj has the same value as this instance; otherwise, false. - public bool Equals(IPNetwork2 other) - { - return Equals(this, other); - } - - /// - /// Compare two ipnetworks. - /// - /// An object value to compare to this instance. - /// true if obj has the same value as this instance; otherwise, false. - public override bool Equals(object obj) - { - return Equals(this, obj as IPNetwork2); - } - - #endregion - - #region Operators - - /// - /// Compares two IPNetwork. - /// - /// left instance. - /// Right instance. - /// true if left equals right; otherwise, false. - public static bool operator ==(IPNetwork2 left, IPNetwork2 right) - { - return Equals(left, right); - } - - /// - /// Compares two IPNetwork. - /// - /// left instance. - /// Right instance. - /// true if left does not equals right; otherwise, false. - public static bool operator !=(IPNetwork2 left, IPNetwork2 right) - { - return !Equals(left, right); - } - - /// - /// Compares two IPNetwork. - /// - /// left instance. - /// Right instance. - /// true if left is less than right; otherwise, false. - public static bool operator <(IPNetwork2 left, IPNetwork2 right) - { - return Compare(left, right) < 0; - } - - /// - /// Compares two IPNetwork. - /// - /// left instance. - /// Right instance. - /// true if left is greater than right; otherwise, false. - public static bool operator >(IPNetwork2 left, IPNetwork2 right) - { - return Compare(left, right) > 0; - } - - #endregion - - #region XmlSerialization - - /// - /// Initializes a new instance of the class. - /// Created for DataContractSerialization. Better use static methods IPNetwork.Parse() to create IPNetworks. - /// - public IPNetwork2() - : this(0, AddressFamily.InterNetwork, 0) - { - } - - #endregion - - #region ISerializable - - /// - /// Represents an internal structure to hold an IP address, its CIDR value, and address family. - /// Used for internal operations within the IPNetwork2 class. - /// - internal struct IPNetworkInteral - { - /// - /// Represents the IP address value. - /// - public BigInteger IPAddress; - - /// - /// Represents the CIDR (Classless Inter-Domain Routing) value. - /// - public byte Cidr; - - /// - /// Represents the address family (IPv4 or IPv6). - /// - public AddressFamily AddressFamily; - } - - private IPNetwork2(SerializationInfo info, StreamingContext context) - { - string sipnetwork = (string)info.GetValue("IPNetwork", typeof(string)); - var ipnetwork = IPNetwork2.Parse(sipnetwork); - - this.ipaddress = ipnetwork.ipaddress; - this.cidr = ipnetwork.cidr; - this.family = ipnetwork.family; - } - - /// - void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) - { - info.AddValue("IPNetwork", this.ToString()); - } - - #endregion - - #region WildcardMask - - /// - /// Gets netmask Inverse - /// https://en.wikipedia.org/wiki/Wildcard_mask - /// - /// A wildcard mask is a mask of bits that indicates which parts of an IP address are available for examination. - /// In the Cisco IOS,[1] they are used in several places, for example: - /// To indicate the size of a network or subnet for some routing protocols, such as OSPF. - /// To indicate what IP addresses should be permitted or denied in access control lists(ACLs). - /// - /// A wildcard mask can be thought of as an inverted subnet mask.For example, - /// a subnet mask of 255.255.255.0 (binary equivalent = 11111111.11111111.11111111.00000000) - /// inverts to a wildcard mask of 0.0.0.255 (binary equivalent = 00000000.00000000.00000000.11111111). - /// - /// A wild card mask is a matching rule.[2] The rule for a wildcard mask is: - /// 0 means that the equivalent bit must match - /// 1 means that the equivalent bit does not matter - /// - /// Any wildcard bit-pattern can be masked for examination.For example, a wildcard mask of 0.0.0.254 - /// (binary equivalent = 00000000.00000000.00000000.11111110) applied to IP address 10.10.10.2 - /// (00001010.00001010.00001010.00000010) will match even-numbered IP addresses 10.10.10.0, 10.10.10.2, - /// 10.10.10.4, 10.10.10.6 etc. - /// - /// Same mask applied to 10.10.10.1 (00001010.00001010.00001010.00000001) will match - /// odd-numbered IP addresses 10.10.10.1, 10.10.10.3, 10.10.10.5 etc. - /// - /// A network and wildcard mask combination of 1.1.1.1 0.0.0.0 would match an interface configured - /// exactly with 1.1.1.1 only, and nothing else. - /// - /// Wildcard masks are used in situations where subnet masks may not apply.For example, - /// when two affected hosts fall in different subnets, the use of a wildcard mask will - /// group them together. - /// - /// List of wildcard masks - /// Slash Netmask Wildcard mask - /// /32 255.255.255.255 0.0.0.0 - /// /31 255.255.255.254 0.0.0.1 - /// /30 255.255.255.252 0.0.0.3 - /// /29 255.255.255.248 0.0.0.7 - /// /28 255.255.255.240 0.0.0.15 - /// /27 255.255.255.224 0.0.0.31 - /// /26 255.255.255.192 0.0.0.63 - /// /25 255.255.255.128 0.0.0.127 - /// /24 255.255.255.0 0.0.0.255 - /// /23 255.255.254.0 0.0.1.255 - /// /22 255.255.252.0 0.0.3.255 - /// /21 255.255.248.0 0.0.7.255 - /// /20 255.255.240.0 0.0.15.255 - /// /19 255.255.224.0 0.0.31.255 - /// /18 255.255.192.0 0.0.63.255 - /// /17 255.255.128.0 0.0.127.255 - /// /16 255.255.0.0 0.0.255.255 - /// /15 255.254.0.0 0.1.255.255 - /// /14 255.252.0.0 0.3.255.255 - /// /13 255.248.0.0 0.7.255.255 - /// /12 255.240.0.0 0.15.255.255 - /// /11 255.224.0.0 0.31.255.255 - /// /10 255.192.0.0 0.63.255.255 - /// /9 255.128.0.0 0.127.255.255 - /// /8 255.0.0.0 0.255.255.255 - /// /7 254.0.0.0 1.255.255.255 - /// /6 252.0.0.0 3.255.255.255 - /// /5 248.0.0.0 7.255.255.255 - /// /4 240.0.0.0 15.255.255.255 - /// /3 224.0.0.0 31.255.255.255 - /// /2 192.0.0.0 63.255.255.255 - /// /1 128.0.0.0 127.255.255.255 - /// /0 0.0.0.0 255.255.255.255. - /// - /// - public IPAddress WildcardMask - { - get - { - byte cidr = this.family == AddressFamily.InterNetwork ? (byte)32 : (byte)128; - BigInteger netmask = IPNetwork2.ToUint(cidr, this.family); - BigInteger wildcardmask = netmask - this.InternalNetmask; - - return IPNetwork2.ToIPAddress(wildcardmask, this.family); - } - } - - #endregion -} \ No newline at end of file +} diff --git a/src/System.Net.IPNetwork/IPNetwork2BitsSet.cs b/src/System.Net.IPNetwork/IPNetwork2BitsSet.cs new file mode 100644 index 00000000..c134b96b --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2BitsSet.cs @@ -0,0 +1,44 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +using System.Net.Sockets; +using System.Numerics; + +/// +/// BitSet. +/// +public sealed partial class IPNetwork2 +{ + /// + /// Count bits set to 1 in netmask. + /// + /// A number representing the netmask to count bits from. + /// The number of bytes set to 1. + [CLSCompliant(false)] + public static uint BitsSet(IPAddress netmask) + { + var uintNetmask = IPNetwork2.ToBigInteger(netmask); + uint bits = IPNetwork2.BitsSet(uintNetmask, netmask.AddressFamily); + + return bits; + } + + /// + /// Count bits set to 1 in netmask. + /// + /// + /// A number representing the netmask to count bits from. + /// Either IPv4 or IPv6. + /// The number of bytes set to 1. + private static byte BitsSet(BigInteger netmask, AddressFamily family) + { + string s = netmask.ToBinaryString(); + + return (byte)s.Replace("0", string.Empty) + .ToCharArray() + .Length; + } +} diff --git a/src/System.Net.IPNetwork/IPNetwork2GetHashCode.cs b/src/System.Net.IPNetwork/IPNetwork2GetHashCode.cs new file mode 100644 index 00000000..28327c3c --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2GetHashCode.cs @@ -0,0 +1,28 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +public sealed partial class IPNetwork2 +{ + /// + public override int GetHashCode() + { + return this.hashCode; + } + + /// + /// 20221105 : ldvhcosal + /// GetHashCode uses mutable attributes. That introduce undefined behaviour on Hashtable and dictionary. + /// + /// An number representing the hashCode. + private int ComputeHashCode() + { + return string.Format( + "{0}|{1}|{2}", + this.family.GetHashCode(), + this.InternalNetwork.GetHashCode(), + this.cidr.GetHashCode()).GetHashCode(); + } +} diff --git a/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs b/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs new file mode 100644 index 00000000..943a65fc --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs @@ -0,0 +1,104 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +public sealed partial class IPNetwork2 +{ + private static readonly Lazy IanaAblockReserved = new (() => IPNetwork2.Parse("10.0.0.0/8")); + private static readonly Lazy IanaBblockReserved = new (() => IPNetwork2.Parse("172.16.0.0/12")); + private static readonly Lazy IanaCblockReserved = new (() => IPNetwork2.Parse("192.168.0.0/16")); + + /// + /// Gets 10.0.0.0/8. + /// + /// The IANA reserved IPNetwork 10.0.0.0/8. + public static IPNetwork2 IANA_ABLK_RESERVED1 + { + get + { + return IanaAblockReserved.Value; + } + } + + /// + /// Gets 172.12.0.0/12. + /// + /// The IANA reserved IPNetwork 172.12.0.0/12. + public static IPNetwork2 IANA_BBLK_RESERVED1 + { + get + { + return IanaBblockReserved.Value; + } + } + + /// + /// Gets 192.168.0.0/16. + /// + /// The IANA reserved IPNetwork 192.168.0.0/16. + public static IPNetwork2 IANA_CBLK_RESERVED1 + { + get + { + return IanaCblockReserved.Value; + } + } + + /// + /// return true if ipaddress is contained in + /// IANA_ABLK_RESERVED1, IANA_BBLK_RESERVED1, IANA_CBLK_RESERVED1. + /// + /// A string containing an ip address to convert. + /// true if ipaddress is a IANA reserverd IP Netowkr ; otherwise, false. + public static bool IsIANAReserved(IPAddress ipaddress) + { + if (ipaddress == null) + { + throw new ArgumentNullException("ipaddress"); + } + + return IPNetwork2.IANA_ABLK_RESERVED1.Contains(ipaddress) + || IPNetwork2.IANA_BBLK_RESERVED1.Contains(ipaddress) + || IPNetwork2.IANA_CBLK_RESERVED1.Contains(ipaddress); + } + + /// + /// return true if ipnetwork is contained in + /// IANA_ABLK_RESERVED1, IANA_BBLK_RESERVED1, IANA_CBLK_RESERVED1. + /// + /// true if the ipnetwork is a IANA reserverd IP Netowkr ; otherwise, false. + public bool IsIANAReserved() + { + return IPNetwork2.IANA_ABLK_RESERVED1.Contains(this) + || IPNetwork2.IANA_BBLK_RESERVED1.Contains(this) + || IPNetwork2.IANA_CBLK_RESERVED1.Contains(this); + } + + /// + /// Determines whether the specified IP network is reserved according to the IANA Reserved ranges. + /// + /// The IP network to check. + /// + /// true if the specified IP network is reserved according to the IANA Reserved ranges; otherwise, false. + /// + /// + /// + /// This method is obsolete and should not be used. Please use the instance method instead. + /// + /// + /// Throws an if is null. + /// + /// + [Obsolete("static IsIANAReserved is deprecated, please use instance IsIANAReserved.")] + public static bool IsIANAReserved(IPNetwork2 ipnetwork) + { + if (ipnetwork == null) + { + throw new ArgumentNullException("ipnetwork"); + } + + return ipnetwork.IsIANAReserved(); + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2IComparableIPNetworkMembers.cs b/src/System.Net.IPNetwork/IPNetwork2IComparableIPNetworkMembers.cs new file mode 100644 index 00000000..46a0153f --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2IComparableIPNetworkMembers.cs @@ -0,0 +1,101 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +public sealed partial class IPNetwork2 +{ + /// + /// Compares two IPNetwork2 instances. + /// + /// The first IPNetwork2 instance to compare. + /// The second IPNetwork2 instance to compare. + /// + /// A value indicating the relative order of the two IPNetwork2 instances. + /// Zero if the instances are equal. + /// A negative value if is less than . + /// A positive value if is greater than . + /// + public static int Compare(IPNetwork2 left, IPNetwork2 right) + { + // two null IPNetworks are equal + if (ReferenceEquals(left, null) && ReferenceEquals(right, null)) + { + return 0; + } + + // two same IPNetworks are equal + if (ReferenceEquals(left, right)) + { + return 0; + } + + // null is always sorted first + if (ReferenceEquals(left, null)) + { + return -1; + } + + if (ReferenceEquals(right, null)) + { + return 1; + } + + // first test family + int result = left.family.CompareTo(right.family); + if (result != 0) + { + return result; + } + + // second test the network + result = left.InternalNetwork.CompareTo(right.InternalNetwork); + if (result != 0) + { + return result; + } + + // then test the cidr + result = left.cidr.CompareTo(right.cidr); + return result; + } + + /// + /// Compare two ipnetworks. + /// + /// The other network to compare to. + /// A signed number indicating the relative values of this instance and value.. + public int CompareTo(IPNetwork2 other) + { + return Compare(this, other); + } + + /// + /// Compare two ipnetworks. + /// + /// The other object to compare to. + /// A signed number indicating the relative values of this instance and value.. + public int CompareTo(object obj) + { + // null is at less + if (obj == null) + { + return 1; + } + + // convert to a proper Cidr object + var other = obj as IPNetwork2; + + // type problem if null + if (other == null) + { + throw new ArgumentException( + "The supplied parameter is an invalid type. Please supply an IPNetwork type.", + "obj"); + } + + // perform the comparision + return this.CompareTo(other); + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2IEquatableIPNetworkMembers.cs b/src/System.Net.IPNetwork/IPNetwork2IEquatableIPNetworkMembers.cs new file mode 100644 index 00000000..61eb64cd --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2IEquatableIPNetworkMembers.cs @@ -0,0 +1,39 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +public sealed partial class IPNetwork2 +{ + /// + /// Compare two ipnetworks. + /// + /// An IPNetwork to compare. + /// An other IPNetwork to compare to. + /// true if obj has the same value as this instance; otherwise, false. + public static bool Equals(IPNetwork2 left, IPNetwork2 right) + { + return Compare(left, right) == 0; + } + + /// + /// Compare two ipnetworks. + /// + /// An IPNetwork to compare to this instance. + /// true if obj has the same value as this instance; otherwise, false. + public bool Equals(IPNetwork2 other) + { + return Equals(this, other); + } + + /// + /// Compare two ipnetworks. + /// + /// An object value to compare to this instance. + /// true if obj has the same value as this instance; otherwise, false. + public override bool Equals(object obj) + { + return Equals(this, obj as IPNetwork2); + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2ISerializable.cs b/src/System.Net.IPNetwork/IPNetwork2ISerializable.cs new file mode 100644 index 00000000..ee0bc788 --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2ISerializable.cs @@ -0,0 +1,50 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +using System.Net.Sockets; +using System.Numerics; +using System.Runtime.Serialization; + +public sealed partial class IPNetwork2 +{ + /// + /// Represents an internal structure to hold an IP address, its CIDR value, and address family. + /// Used for internal operations within the IPNetwork2 class. + /// + internal struct IPNetworkInteral + { + /// + /// Represents the IP address value. + /// + public BigInteger IPAddress; + + /// + /// Represents the CIDR (Classless Inter-Domain Routing) value. + /// + public byte Cidr; + + /// + /// Represents the address family (IPv4 or IPv6). + /// + public AddressFamily AddressFamily; + } + + private IPNetwork2(SerializationInfo info, StreamingContext context) + { + string sipnetwork = (string)info.GetValue("IPNetwork", typeof(string)); + var ipnetwork = IPNetwork2.Parse(sipnetwork); + + this.ipaddress = ipnetwork.ipaddress; + this.cidr = ipnetwork.cidr; + this.family = ipnetwork.family; + } + + /// + void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) + { + info.AddValue("IPNetwork", this.ToString()); + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2ListIPAddress.cs b/src/System.Net.IPNetwork/IPNetwork2ListIPAddress.cs new file mode 100644 index 00000000..f62fd0f7 --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2ListIPAddress.cs @@ -0,0 +1,29 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +public sealed partial class IPNetwork2 +{ + /// + /// List all ip addresses in a subnet. + /// + /// The network to list IPAdresses. + /// All the IPAdresses contained in ipnetwork. + [Obsolete("static ListIPAddress is deprecated, please use instance ListIPAddress.")] + public static IPAddressCollection ListIPAddress(IPNetwork2 ipnetwork) + { + return ipnetwork.ListIPAddress(); + } + + /// + /// List all ip addresses in a subnet. + /// + /// Filter IPAdresses from IPNetwork. + /// The filterted IPAdresses contained in ipnetwork. + public IPAddressCollection ListIPAddress(FilterEnum filter = FilterEnum.All) + { + return new IPAddressCollection(this, filter); + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2Operators.cs b/src/System.Net.IPNetwork/IPNetwork2Operators.cs new file mode 100644 index 00000000..05996957 --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2Operators.cs @@ -0,0 +1,52 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +public sealed partial class IPNetwork2 +{ + /// + /// Compares two IPNetwork. + /// + /// left instance. + /// Right instance. + /// true if left equals right; otherwise, false. + public static bool operator ==(IPNetwork2 left, IPNetwork2 right) + { + return Equals(left, right); + } + + /// + /// Compares two IPNetwork. + /// + /// left instance. + /// Right instance. + /// true if left does not equals right; otherwise, false. + public static bool operator !=(IPNetwork2 left, IPNetwork2 right) + { + return !Equals(left, right); + } + + /// + /// Compares two IPNetwork. + /// + /// left instance. + /// Right instance. + /// true if left is less than right; otherwise, false. + public static bool operator <(IPNetwork2 left, IPNetwork2 right) + { + return Compare(left, right) < 0; + } + + /// + /// Compares two IPNetwork. + /// + /// left instance. + /// Right instance. + /// true if left is greater than right; otherwise, false. + public static bool operator >(IPNetwork2 left, IPNetwork2 right) + { + return Compare(left, right) > 0; + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2Print.cs b/src/System.Net.IPNetwork/IPNetwork2Print.cs new file mode 100644 index 00000000..01caa386 --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2Print.cs @@ -0,0 +1,47 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +using System.IO; +public sealed partial class IPNetwork2 +{ + /// + /// Print an ipnetwork in a clear representation string. + /// + /// Dump an IPNetwork representation as string. + public string Print() + { + using (var sw = new StringWriter()) + { + sw.WriteLine("IPNetwork : {0}", this.ToString()); + sw.WriteLine("Network : {0}", this.Network); + sw.WriteLine("Netmask : {0}", this.Netmask); + sw.WriteLine("Cidr : {0}", this.Cidr); + sw.WriteLine("Broadcast : {0}", this.Broadcast); + sw.WriteLine("FirstUsable : {0}", this.FirstUsable); + sw.WriteLine("LastUsable : {0}", this.LastUsable); + sw.WriteLine("Usable : {0}", this.Usable); + + return sw.ToString(); + } + } + + /// + /// Print an ipnetwork in a clear representation string. + /// + /// The ipnetwork. + /// Dump an IPNetwork representation as string. + /// When arg is null. + [Obsolete("static Print is deprecated, please use instance Print.")] + public static string Print(IPNetwork2 ipnetwork) + { + if (ipnetwork == null) + { + throw new ArgumentNullException("ipnetwork"); + } + + return ipnetwork.Print(); + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2Subnet.cs b/src/System.Net.IPNetwork/IPNetwork2Subnet.cs new file mode 100644 index 00000000..2f51d442 --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2Subnet.cs @@ -0,0 +1,129 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +public sealed partial class IPNetwork2 +{ + /// + /// Subnet a network into multiple nets of cidr mask + /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 + /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. + /// + /// A byte representing the CIDR to be used to subnet the current IPNetwork. + /// A IPNetworkCollection splitted by CIDR. + public IPNetworkCollection Subnet(byte cidr) + { + IPNetwork2.InternalSubnet(false, this, cidr, out IPNetworkCollection ipnetworkCollection); + + return ipnetworkCollection; + } + + /// + /// Subnet method is used to divide the given IP network into subnets with the specified CIDR. + /// + /// The IP network to be subnetted. + /// The CIDR (Classless Inter-Domain Routing) value used to subnet the network. + /// + /// A collection of subnets created from the given network using the specified CIDR. + /// + [Obsolete("static Subnet is deprecated, please use instance Subnet.")] + public static IPNetworkCollection Subnet(IPNetwork2 network, byte cidr) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.Subnet(cidr); + } + + /// + /// Subnet a network into multiple nets of cidr mask + /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 + /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. + /// + /// A byte representing the CIDR to be used to subnet the current IPNetwork. + /// The resulting subnetted IPNetwork. + /// true if network was split successfully; otherwise, false. + public bool TrySubnet(byte cidr, out IPNetworkCollection ipnetworkCollection) + { + IPNetwork2.InternalSubnet(true, this, cidr, out IPNetworkCollection inc); + if (inc == null) + { + ipnetworkCollection = null; + return false; + } + + ipnetworkCollection = inc; + return true; + } + + /// + /// Subnet a network into multiple nets of cidr mask + /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 + /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. + /// + /// The network. + /// A byte representing the CIDR to be used to subnet the current IPNetwork. + /// The resulting subnetted IPNetwork. + /// true if network was split successfully; otherwise, false. + [Obsolete("static TrySubnet is deprecated, please use instance TrySubnet.")] + public static bool TrySubnet(IPNetwork2 network, byte cidr, out IPNetworkCollection ipnetworkCollection) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.TrySubnet(cidr, out ipnetworkCollection); + } + + /// + /// Splits a given IP network into smaller subnets of the specified CIDR size. + /// + /// Indicates whether to throw exceptions or return null on failure. + /// The IP network to be subnetted. + /// The CIDR value used to define the new subnet size. + /// The resulting collection of subnets, or null if the operation fails and trySubnet is true. + internal static void InternalSubnet(bool trySubnet, IPNetwork2 network, byte cidr, out IPNetworkCollection ipnetworkCollection) + { + if (network == null) + { + if (trySubnet == false) + { + throw new ArgumentNullException("network"); + } + + ipnetworkCollection = null; + return; + } + + int maxCidr = network.family == Sockets.AddressFamily.InterNetwork ? 32 : 128; + if (cidr > maxCidr) + { + if (trySubnet == false) + { + throw new ArgumentOutOfRangeException("cidr"); + } + + ipnetworkCollection = null; + return; + } + + if (cidr < network.Cidr) + { + if (trySubnet == false) + { + throw new ArgumentException("cidr"); + } + + ipnetworkCollection = null; + return; + } + + ipnetworkCollection = new IPNetworkCollection(network, cidr); + return; + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2Supernet.cs b/src/System.Net.IPNetwork/IPNetwork2Supernet.cs new file mode 100644 index 00000000..c2e8dd08 --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2Supernet.cs @@ -0,0 +1,174 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +using System.Numerics; + +public sealed partial class IPNetwork2 +{ + /// + /// Supernet two consecutive cidr equal subnet into a single one + /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 + /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 + /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. + /// + /// The network to supernet with. + /// A supernetted IP Network. + public IPNetwork2 Supernet(IPNetwork2 network2) + { + IPNetwork2.InternalSupernet(false, this, network2, out IPNetwork2 supernet); + return supernet; + } + + /// + /// Supernet two consecutive cidr equal subnet into a single one + /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 + /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 + /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. + /// + /// the network. + /// The network to supernet with. + /// A supernetted IP Network. + [Obsolete("static Supernet is deprecated, please use instance Supernet.")] + public static IPNetwork2 Supernet(IPNetwork2 network, IPNetwork2 network2) + { + return network.Supernet(network2); + } + + /// + /// Try to supernet two consecutive cidr equal subnet into a single one + /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 + /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 + /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. + /// + /// The network to supernet with. + /// The resulting IPNetwork. + /// true if network2 was supernetted successfully; otherwise, false. + public bool TrySupernet(IPNetwork2 network2, out IPNetwork2 supernet) + { + IPNetwork2.InternalSupernet(true, this, network2, out IPNetwork2 outSupernet); + bool parsed = outSupernet != null; + supernet = outSupernet; + return parsed; + } + + /// + /// Try to supernet two consecutive cidr equal subnet into a single one + /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 + /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 + /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. + /// + /// the network. + /// The network to supernet with. + /// The resulting IPNetwork. + /// true if network2 was supernetted successfully; otherwise, false. + [Obsolete("static TrySupernet is deprecated, please use instance TrySupernet.")] + public static bool TrySupernet(IPNetwork2 network, IPNetwork2 network2, out IPNetwork2 supernet) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.TrySupernet(network2, out supernet); + } + + /// + /// Attempts to merge two adjacent IP networks with equal CIDR values into a single supernet. + /// + /// If true, suppresses exceptions on failure; otherwise, throws. + /// The first IP network. + /// The second IP network. + /// The resulting supernet if the merge is successful; otherwise, null. + internal static void InternalSupernet( + bool trySupernet, + IPNetwork2 network1, + IPNetwork2 network2, + out IPNetwork2 supernet) + { + if (network1 == null) + { + if (trySupernet == false) + { + throw new ArgumentNullException("network1"); + } + + supernet = null; + return; + } + + if (network2 == null) + { + if (trySupernet == false) + { + throw new ArgumentNullException("network2"); + } + + supernet = null; + return; + } + + if (network1.Contains(network2)) + { + supernet = new IPNetwork2(network1.InternalNetwork, network1.family, network1.Cidr); + return; + } + + if (network2.Contains(network1)) + { + supernet = new IPNetwork2(network2.InternalNetwork, network2.family, network2.Cidr); + return; + } + + if (network1.cidr != network2.cidr) + { + if (trySupernet == false) + { + throw new ArgumentException("cidr"); + } + + supernet = null; + return; + } + + IPNetwork2 first = (network1.InternalNetwork < network2.InternalNetwork) ? network1 : network2; + IPNetwork2 last = (network1.InternalNetwork > network2.InternalNetwork) ? network1 : network2; + + // Starting from here : + // network1 and network2 have the same cidr, + // network1 does not contain network2, + // network2 does not contain network1, + // first is the lower subnet + // last is the higher subnet + if ((first.InternalBroadcast + 1) != last.InternalNetwork) + { + if (trySupernet == false) + { + throw new ArgumentOutOfRangeException("network1"); + } + + supernet = null; + return; + } + + BigInteger uintSupernet = first.InternalNetwork; + byte cidrSupernet = (byte)(first.cidr - 1); + + var networkSupernet = new IPNetwork2(uintSupernet, first.family, cidrSupernet); + if (networkSupernet.InternalNetwork != first.InternalNetwork) + { + if (trySupernet == false) + { + throw new ArgumentException("network"); + } + + supernet = null; + return; + } + + supernet = networkSupernet; + return; + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2SupernetArray.cs b/src/System.Net.IPNetwork/IPNetwork2SupernetArray.cs new file mode 100644 index 00000000..9c8bdfea --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2SupernetArray.cs @@ -0,0 +1,150 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +using System.Collections.Generic; + +public sealed partial class IPNetwork2 +{ + /// + /// Supernet a list of subnet + /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 + /// 192.168.0.0/24 + 192.168.1.0/24 + 192.168.2.0/24 + 192.168.3.0/24 = 192.168.0.0/22. + /// + /// A list of IPNetwork to merge into common supernets. + /// The result of IPNetwork if merges succeed, the first ipnetwork otherwise. + public static IPNetwork2[] Supernet(IPNetwork2[] ipnetworks) + { + InternalSupernet(false, ipnetworks, out IPNetwork2[] supernet); + return supernet; + } + + /// + /// Supernet a list of subnet + /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 + /// 192.168.0.0/24 + 192.168.1.0/24 + 192.168.2.0/24 + 192.168.3.0/24 = 192.168.0.0/22. + /// + /// A list of IPNetwork to merge into common supernets. + /// The result of IPNetwork merges. + /// true if ipnetworks was supernetted successfully; otherwise, false. + public static bool TrySupernet(IPNetwork2[] ipnetworks, out IPNetwork2[] supernet) + { + bool supernetted = InternalSupernet(true, ipnetworks, out supernet); + return supernetted; + } + + /// + /// Attempts to merge an array of adjacent IP networks with equal CIDR values into the smallest possible set of supernets. + /// + /// If true, suppresses exceptions on failure; otherwise, throws. + /// The array of IP networks to attempt to merge. + /// The resulting array of merged supernets if successful; otherwise, the original input. + /// true if supernetting was successful; otherwise, false. + internal static bool InternalSupernet(bool trySupernet, IPNetwork2[] ipnetworks, out IPNetwork2[] supernet) + { + if (ipnetworks == null) + { + if (trySupernet == false) + { + throw new ArgumentNullException("ipnetworks"); + } + + supernet = null; + return false; + } + + if (ipnetworks.Length <= 0) + { + supernet = new IPNetwork2[0]; + return true; + } + + var supernetted = new List(); + List ipns = IPNetwork2.Array2List(ipnetworks); + Stack current = IPNetwork2.List2Stack(ipns); + int previousCount = 0; + int currentCount = current.Count; + + while (previousCount != currentCount) + { + supernetted.Clear(); + while (current.Count > 1) + { + IPNetwork2 ipn1 = current.Pop(); + IPNetwork2 ipn2 = current.Peek(); + + bool success = ipn1.TrySupernet(ipn2, out IPNetwork2 outNetwork); + if (success) + { + current.Pop(); + current.Push(outNetwork); + } + else + { + supernetted.Add(ipn1); + } + } + + if (current.Count == 1) + { + supernetted.Add(current.Pop()); + } + + previousCount = currentCount; + currentCount = supernetted.Count; + current = IPNetwork2.List2Stack(supernetted); + } + + supernet = supernetted.ToArray(); + return true; + } + + private static Stack List2Stack(List list) + { + var stack = new Stack(); + list.ForEach(new Action( + delegate(IPNetwork2 ipn) + { + stack.Push(ipn); + })); + return stack; + } + + private static List Array2List(IPNetwork2[] array) + { + var ipns = new List(); + ipns.AddRange(array); + IPNetwork2.RemoveNull(ipns); + ipns.Sort(new Comparison( + delegate(IPNetwork2 ipn1, IPNetwork2 ipn2) + { + int networkCompare = ipn1.InternalNetwork.CompareTo(ipn2.InternalNetwork); + if (networkCompare == 0) + { + int cidrCompare = ipn1.cidr.CompareTo(ipn2.cidr); + return cidrCompare; + } + + return networkCompare; + })); + ipns.Reverse(); + + return ipns; + } + + private static void RemoveNull(List ipns) + { + ipns.RemoveAll(new Predicate( + delegate(IPNetwork2 ipn) + { + if (ipn == null) + { + return true; + } + + return false; + })); + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs b/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs new file mode 100644 index 00000000..94074340 --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs @@ -0,0 +1,103 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +using System.Net.Sockets; +using System.Numerics; + +public sealed partial class IPNetwork2 +{ + /// + /// Convert netmask to CIDR + /// 255.255.255.0 -> 24 + /// 255.255.0.0 -> 16 + /// 255.0.0.0 -> 8. + /// + /// Whether to throw exception or not during conversion. + /// A number representing the netmask to convert. + /// Either IPv4 or IPv6. + /// A byte representing the netmask in cidr format (/24). + private static void InternalToCidr(bool tryParse, BigInteger netmask, AddressFamily family, out byte? cidr) + { + if (!IPNetwork2.InternalValidNetmask(netmask, family)) + { + if (tryParse == false) + { + throw new ArgumentException("netmask"); + } + + cidr = null; + return; + } + + byte cidr2 = IPNetwork2.BitsSet(netmask, family); + cidr = cidr2; + + return; + } + + /// + /// Convert netmask to CIDR + /// 255.255.255.0 -> 24 + /// 255.255.0.0 -> 16 + /// 255.0.0.0 -> 8. + /// + /// An IPAdress representing the CIDR to convert. + /// A byte representing the CIDR converted from the netmask. + public static byte ToCidr(IPAddress netmask) + { + IPNetwork2.InternalToCidr(false, netmask, out byte? cidr); + return (byte)cidr; + } + + /// + /// Convert netmask to CIDR + /// 255.255.255.0 -> 24 + /// 255.255.0.0 -> 16 + /// 255.0.0.0 -> 8. + /// + /// An IPAdress representing the CIDR to convert. + /// A byte representing the netmask in cidr format (/24). + /// true if netmask was converted successfully; otherwise, false. + public static bool TryToCidr(IPAddress netmask, out byte? cidr) + { + IPNetwork2.InternalToCidr(true, netmask, out byte? cidr2); + bool parsed = cidr2 != null; + cidr = cidr2; + return parsed; + } + + private static void InternalToCidr(bool tryParse, IPAddress netmask, out byte? cidr) + { + if (netmask == null) + { + if (tryParse == false) + { + throw new ArgumentNullException("netmask"); + } + + cidr = null; + return; + } + + bool parsed = IPNetwork2.TryToBigInteger(netmask, out BigInteger? uintNetmask2); + + // 20180217 lduchosal + // impossible to reach code. + // if (parsed == false) { + // if (tryParse == false) { + // throw new ArgumentException("netmask"); + // } + // cidr = null; + // return; + // } + var uintNetmask = (BigInteger)uintNetmask2; + + IPNetwork2.InternalToCidr(tryParse, uintNetmask, netmask.AddressFamily, out byte? cidr2); + cidr = cidr2; + + return; + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2ToIPAddress.cs b/src/System.Net.IPNetwork/IPNetwork2ToIPAddress.cs new file mode 100644 index 00000000..9a3be032 --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2ToIPAddress.cs @@ -0,0 +1,59 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +using System.Net.Sockets; +using System.Numerics; + +public sealed partial class IPNetwork2 +{ + /// + /// Transform a uint ipaddress into IPAddress object. + /// + /// A number representing an ip address to convert. + /// Either IPv4 or IPv6. + /// An ip adress. + public static IPAddress ToIPAddress(BigInteger ipaddress, AddressFamily family) + { + int width = family == AddressFamily.InterNetwork ? 4 : 16; + byte[] bytes = ipaddress.ToByteArray(); + byte[] bytes2 = new byte[width]; + int copy = bytes.Length > width ? width : bytes.Length; + Array.Copy(bytes, 0, bytes2, 0, copy); + Array.Reverse(bytes2); + + byte[] sized = Resize(bytes2, family); + var ip = new IPAddress(sized); + return ip; + } + + /// + /// Resizes the given byte array to match the expected width for the specified address family (IPv4 or IPv6). + /// Pads with zeros if the array is shorter than required. + /// + /// The byte array to resize. + /// The address family (IPv4 or IPv6). + /// A byte array resized to the appropriate length for the address family. + internal static byte[] Resize(byte[] bytes, AddressFamily family) + { + if (family != AddressFamily.InterNetwork + && family != AddressFamily.InterNetworkV6) + { + throw new ArgumentException("family"); + } + + int width = family == AddressFamily.InterNetwork ? 4 : 16; + + if (bytes.Length > width) + { + throw new ArgumentException("bytes"); + } + + byte[] result = new byte[width]; + Array.Copy(bytes, 0, result, 0, bytes.Length); + + return result; + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2ToNetmask.cs b/src/System.Net.IPNetwork/IPNetwork2ToNetmask.cs new file mode 100644 index 00000000..f483be24 --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2ToNetmask.cs @@ -0,0 +1,88 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +using System.Net.Sockets; +using System.Numerics; + +public sealed partial class IPNetwork2 +{ + /// + /// Convert CIDR to netmask + /// 24 -> 255.255.255.0 + /// 16 -> 255.255.0.0 + /// 8 -> 255.0.0.0. + /// + /// + /// A byte representing the netmask in cidr format (/24). + /// Either IPv4 or IPv6. + /// An IPAdress representing cidr. + public static IPAddress ToNetmask(byte cidr, AddressFamily family) + { + IPNetwork2.InternalToNetmask(false, cidr, family, out IPAddress netmask); + + return netmask; + } + + /// + /// Convert CIDR to netmask + /// 24 -> 255.255.255.0 + /// 16 -> 255.255.0.0 + /// 8 -> 255.0.0.0. + /// + /// + /// A byte representing the netmask in cidr format (/24). + /// Either IPv4 or IPv6. + /// The resulting netmask. + /// true if cidr was converted successfully; otherwise, false. + public static bool TryToNetmask(byte cidr, AddressFamily family, out IPAddress netmask) + { + IPNetwork2.InternalToNetmask(true, cidr, family, out IPAddress netmask2); + bool parsed = netmask2 != null; + netmask = netmask2; + + return parsed; + } + + /// + /// Converts a CIDR value to its corresponding IPAddress netmask. + /// + /// If true, handles errors silently; otherwise, throws exceptions. + /// The CIDR value to convert. + /// The address family (IPv4 or IPv6). + /// The resulting IPAddress netmask. + internal static void InternalToNetmask(bool tryParse, byte cidr, AddressFamily family, out IPAddress netmask) + { + if (family != AddressFamily.InterNetwork + && family != AddressFamily.InterNetworkV6) + { + if (tryParse == false) + { + throw new ArgumentException("family"); + } + + netmask = null; + return; + } + + int maxCidr = family == Sockets.AddressFamily.InterNetwork ? 32 : 128; + if (cidr > maxCidr) + { + if (tryParse == false) + { + throw new ArgumentOutOfRangeException("cidr"); + } + + netmask = null; + return; + } + + BigInteger mask = IPNetwork2.ToUint(cidr, family); + var netmask2 = IPNetwork2.ToIPAddress(mask, family); + netmask = netmask2; + + return; + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2ToString.cs b/src/System.Net.IPNetwork/IPNetwork2ToString.cs new file mode 100644 index 00000000..c9dab960 --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2ToString.cs @@ -0,0 +1,19 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +public sealed partial class IPNetwork2 +{ + /// + /// Returns a string representation of the object. + /// + /// + /// A string representation of the object which includes the Network and Cidr values separated by a "/". + /// + public override string ToString() + { + return string.Format("{0}/{1}", this.Network, this.Cidr); + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2ToUint.cs b/src/System.Net.IPNetwork/IPNetwork2ToUint.cs new file mode 100644 index 00000000..c24edadb --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2ToUint.cs @@ -0,0 +1,190 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +using System.Net.Sockets; +using System.Numerics; + +public sealed partial class IPNetwork2 +{ + /// + /// Convert an ipadress to decimal + /// 0.0.0.0 -> 0 + /// 0.0.1.0 -> 256. + /// + /// A string containing an ip address to convert. + /// A number representing the ipaddress. + public static BigInteger ToBigInteger(IPAddress ipaddress) + { + IPNetwork2.InternalToBigInteger(false, ipaddress, out BigInteger? uintIpAddress); + + return (BigInteger)uintIpAddress; + } + + /// + /// Convert an ipadress to decimal + /// 0.0.0.0 -> 0 + /// 0.0.1.0 -> 256. + /// + /// A string containing an ip address to convert. + /// A number representing the IPAdress. + /// true if ipaddress was converted successfully; otherwise, false. + public static bool TryToBigInteger(IPAddress ipaddress, out BigInteger? uintIpAddress) + { + IPNetwork2.InternalToBigInteger(true, ipaddress, out BigInteger? uintIpAddress2); + bool parsed = uintIpAddress2 != null; + uintIpAddress = uintIpAddress2; + + return parsed; + } + + /// + /// Converts an IPAddress to a nullable BigInteger representation. + /// + /// Indicates whether the method should handle errors silently (true) or throw exceptions (false). + /// The IPAddress to convert. + /// The resulting BigInteger representation of the IP address, or null if conversion fails and tryParse is true. + internal static void InternalToBigInteger(bool tryParse, IPAddress ipaddress, out BigInteger? uintIpAddress) + { + if (ipaddress == null) + { + if (tryParse == false) + { + throw new ArgumentNullException("ipaddress"); + } + + uintIpAddress = null; + return; + } + +#if NETSTANDARD2_1 + byte[] bytes = ipaddress.AddressFamily == AddressFamily.InterNetwork ? new byte[4] : new byte[16]; + Span span = bytes.AsSpan(); + if (!ipaddress.TryWriteBytes(span, out _)) + { + if (tryParse == false) + { + throw new ArgumentException("ipaddress"); + } + + uintIpAddress = null; + return; + } + + uintIpAddress = new BigInteger(span, isUnsigned: true, isBigEndian: true); +#elif NETSTANDARD20 + byte[] bytes = ipaddress.GetAddressBytes(); + bytes.AsSpan().Reverse(); + + // add trailing 0 to make unsigned + byte[] unsigned = new byte[bytes.Length + 1]; + Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); + uintIpAddress = new BigInteger(unsigned); +#else + byte[] bytes = ipaddress.GetAddressBytes(); + Array.Reverse(bytes); + + // add trailing 0 to make unsigned + byte[] unsigned = new byte[bytes.Length + 1]; + Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); + uintIpAddress = new BigInteger(unsigned); +#endif + } + + /// + /// Convert a cidr to BigInteger netmask. + /// + /// A byte representing the netmask in cidr format (/24). + /// Either IPv4 or IPv6. + /// A number representing the netmask exprimed in CIDR. + public static BigInteger ToUint(byte cidr, AddressFamily family) + { + IPNetwork2.InternalToBigInteger(false, cidr, family, out BigInteger? uintNetmask); + + return (BigInteger)uintNetmask; + } + + /// + /// Convert a cidr to uint netmask. + /// + /// A byte representing the netmask in cidr format (/24). + /// Either IPv4 or IPv6. + /// A number representing the netmask. + /// true if cidr was converted successfully; otherwise, false. + public static bool TryToUint(byte cidr, AddressFamily family, out BigInteger? uintNetmask) + { + IPNetwork2.InternalToBigInteger(true, cidr, family, out BigInteger? uintNetmask2); + bool parsed = uintNetmask2 != null; + uintNetmask = uintNetmask2; + + return parsed; + } + + /// + /// Convert a cidr to uint netmask. + /// + /// Whether to throw exception or not during conversion. + /// A byte representing the netmask in cidr format (/24). + /// Either IPv4 or IPv6. + /// A number representing the netmask. + internal static void InternalToBigInteger(bool tryParse, byte cidr, AddressFamily family, out BigInteger? uintNetmask) + { + if (family == AddressFamily.InterNetwork && cidr > 32) + { + if (tryParse == false) + { + throw new ArgumentOutOfRangeException("cidr"); + } + + uintNetmask = null; + return; + } + + if (family == AddressFamily.InterNetworkV6 && cidr > 128) + { + if (tryParse == false) + { + throw new ArgumentOutOfRangeException("cidr"); + } + + uintNetmask = null; + return; + } + + if (family != AddressFamily.InterNetwork + && family != AddressFamily.InterNetworkV6) + { + if (tryParse == false) + { + throw new NotSupportedException(family.ToString()); + } + + uintNetmask = null; + return; + } + + if (family == AddressFamily.InterNetwork) + { + uintNetmask = cidr == 0 ? 0 : 0xffffffff << (32 - cidr); + return; + } + + var mask = new BigInteger(new byte[] + { + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0x00, + }); + + BigInteger masked = cidr == 0 ? 0 : mask << (128 - cidr); + byte[] m = masked.ToByteArray(); + byte[] bmask = new byte[17]; + int copy = m.Length > 16 ? 16 : m.Length; + Array.Copy(m, 0, bmask, 0, copy); + uintNetmask = new BigInteger(bmask); + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs b/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs new file mode 100644 index 00000000..3c48c57c --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs @@ -0,0 +1,47 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +using System.Net.Sockets; + +public sealed partial class IPNetwork2 +{ + /// + /// Delegate to CidrGuess ClassFull guessing of cidr. + /// + /// A string representing an IPAdress that will be used to guess the corresponding CIDR. + /// The resulting CIDR as byte. + /// true if cidr was guessed successfully; otherwise, false. + public static bool TryGuessCidr(string ip, out byte cidr) + { + return CidrGuess.ClassFull.TryGuessCidr(ip, out cidr); + } + + /// + /// Try to parse cidr. Have to be >= 0 and <= 32 or 128. + /// + /// A string representing a byte CIRD (/24). + /// Either IPv4 or IPv6. + /// The resulting CIDR as byte. + /// true if cidr was converted successfully; otherwise, false. + public static bool TryParseCidr(string sidr, AddressFamily family, out byte? cidr) + { + byte b = 0; + if (!byte.TryParse(sidr, out b)) + { + cidr = null; + return false; + } + + if (!IPNetwork2.TryToNetmask(b, family, out IPAddress netmask)) + { + cidr = null; + return false; + } + + cidr = b; + return true; + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2ValidNetmask.cs b/src/System.Net.IPNetwork/IPNetwork2ValidNetmask.cs new file mode 100644 index 00000000..69a253d6 --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2ValidNetmask.cs @@ -0,0 +1,64 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +using System.Net.Sockets; +using System.Numerics; + +public sealed partial class IPNetwork2 +{ + /// + /// return true if netmask is a valid netmask + /// 255.255.255.0, 255.0.0.0, 255.255.240.0, ... + /// + /// + /// A number representing the netmask to validate. + /// true if netmask is a valid IP Netmask; otherwise, false. + public static bool ValidNetmask(IPAddress netmask) + { + if (netmask == null) + { + throw new ArgumentNullException("netmask"); + } + + var uintNetmask = IPNetwork2.ToBigInteger(netmask); + bool valid = IPNetwork2.InternalValidNetmask(uintNetmask, netmask.AddressFamily); + + return valid; + } + + /// + /// Determines whether a given BigInteger netmask is valid for the specified address family. + /// + /// The netmask represented as a BigInteger. + /// The address family (IPv4 or IPv6). + /// + /// true if the netmask is valid; otherwise, false. + /// + internal static bool InternalValidNetmask(BigInteger netmask, AddressFamily family) + { + if (family != AddressFamily.InterNetwork + && family != AddressFamily.InterNetworkV6) + { + throw new ArgumentException("family"); + } + + BigInteger mask = family == AddressFamily.InterNetwork + ? new BigInteger(0x0ffffffff) + : new BigInteger(new byte[] + { + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0x00, + }); + + BigInteger neg = (~netmask) & mask; + bool isNetmask = ((neg + 1) & neg) == 0; + + return isNetmask; + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs b/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs new file mode 100644 index 00000000..bb632364 --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs @@ -0,0 +1,164 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +using System.Net.Sockets; +using System.Numerics; + +public sealed partial class IPNetwork2 +{ + /// + /// Finds the widest subnet that can contain both the start and end IP addresses. + /// + /// The starting IP address. + /// The ending IP address. + /// The widest subnet that contains both the start and end IP addresses. + /// Thrown when either the start or end IP address is null or empty. + /// Thrown when the start or end IP addresses are not valid. + /// Thrown when the start and end IP addresses have different address families. + public static IPNetwork2 WideSubnet(string start, string end) + { + if (string.IsNullOrEmpty(start)) + { + throw new ArgumentNullException("start"); + } + + if (string.IsNullOrEmpty(end)) + { + throw new ArgumentNullException("end"); + } + + if (!IPAddress.TryParse(start, out IPAddress startIP)) + { + throw new ArgumentException("start"); + } + + if (!IPAddress.TryParse(end, out IPAddress endIP)) + { + throw new ArgumentException("end"); + } + + if (startIP.AddressFamily != endIP.AddressFamily) + { + throw new NotSupportedException("MixedAddressFamily"); + } + + var ipnetwork = new IPNetwork2(0, startIP.AddressFamily, 0); + for (byte cidr = 32; cidr >= 0; cidr--) + { + var wideSubnet = IPNetwork2.Parse(start, cidr); + if (wideSubnet.Contains(endIP)) + { + ipnetwork = wideSubnet; + break; + } + } + + return ipnetwork; + } + + /// + /// Attempts to find the widest subnet that contains both the start and end IP addresses. objects. + /// + /// An array of IPNetwork2 objects to wide subnet. + /// When this method returns, contains the wide subnet of the IPNetwork2 objects, if wide subnet was successful; otherwise, null. + /// true if wide subnet was successful; otherwise, false. + public static bool TryWideSubnet(IPNetwork2[] ipnetworks, out IPNetwork2 ipnetwork) + { + IPNetwork2.InternalWideSubnet(true, ipnetworks, out IPNetwork2 ipn); + if (ipn == null) + { + ipnetwork = null; + return false; + } + + ipnetwork = ipn; + + return true; + } + + /// + /// Finds the widest subnet from an array of IP networks. An array of IPNetwork2 objects representing the IP networks. The widest subnet as an IPNetwork2 object. + /// / + public static IPNetwork2 WideSubnet(IPNetwork2[] ipnetworks) + { + IPNetwork2.InternalWideSubnet(false, ipnetworks, out IPNetwork2 ipn); + return ipn; + } + + /// + /// Attempts to find the widest subnet that includes all given IPNetwork2 instances. + /// + /// If true, suppresses exceptions on invalid input; otherwise, throws. + /// The array of IPNetwork2 instances to encompass within the widest subnet. + /// The resulting widest IPNetwork2 subnet, or null if unsuccessful and tryWide is true. + internal static void InternalWideSubnet(bool tryWide, IPNetwork2[] ipnetworks, out IPNetwork2 ipnetwork) + { + if (ipnetworks == null) + { + if (tryWide == false) + { + throw new ArgumentNullException("ipnetworks"); + } + + ipnetwork = null; + return; + } + + IPNetwork2[] nnin = Array.FindAll(ipnetworks, new Predicate( + delegate(IPNetwork2 ipnet) + { + return ipnet != null; + })); + + if (nnin.Length <= 0) + { + if (tryWide == false) + { + throw new ArgumentException("ipnetworks"); + } + + ipnetwork = null; + return; + } + + if (nnin.Length == 1) + { + IPNetwork2 ipn0 = nnin[0]; + ipnetwork = ipn0; + return; + } + + Array.Sort(nnin); + IPNetwork2 nnin0 = nnin[0]; + BigInteger uintNnin0 = nnin0.ipaddress; + + IPNetwork2 nninX = nnin[nnin.Length - 1]; + IPAddress ipaddressX = nninX.Broadcast; + + AddressFamily family = ipnetworks[0].family; + foreach (IPNetwork2 ipnx in ipnetworks) + { + if (ipnx.family != family) + { + throw new ArgumentException("MixedAddressFamily"); + } + } + + var ipn = new IPNetwork2(0, family, 0); + for (byte cidr = nnin0.cidr; cidr >= 0; cidr--) + { + var wideSubnet = new IPNetwork2(uintNnin0, family, cidr); + if (wideSubnet.Contains(ipaddressX)) + { + ipn = wideSubnet; + break; + } + } + + ipnetwork = ipn; + return; + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2WildcardMask.cs b/src/System.Net.IPNetwork/IPNetwork2WildcardMask.cs new file mode 100644 index 00000000..918b3602 --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2WildcardMask.cs @@ -0,0 +1,92 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +using System.Numerics; +using System.Net.Sockets; + +public sealed partial class IPNetwork2 +{ + /// + /// Gets netmask Inverse + /// https://en.wikipedia.org/wiki/Wildcard_mask + /// + /// A wildcard mask is a mask of bits that indicates which parts of an IP address are available for examination. + /// In the Cisco IOS,[1] they are used in several places, for example: + /// To indicate the size of a network or subnet for some routing protocols, such as OSPF. + /// To indicate what IP addresses should be permitted or denied in access control lists(ACLs). + /// + /// A wildcard mask can be thought of as an inverted subnet mask.For example, + /// a subnet mask of 255.255.255.0 (binary equivalent = 11111111.11111111.11111111.00000000) + /// inverts to a wildcard mask of 0.0.0.255 (binary equivalent = 00000000.00000000.00000000.11111111). + /// + /// A wild card mask is a matching rule.[2] The rule for a wildcard mask is: + /// 0 means that the equivalent bit must match + /// 1 means that the equivalent bit does not matter + /// + /// Any wildcard bit-pattern can be masked for examination.For example, a wildcard mask of 0.0.0.254 + /// (binary equivalent = 00000000.00000000.00000000.11111110) applied to IP address 10.10.10.2 + /// (00001010.00001010.00001010.00000010) will match even-numbered IP addresses 10.10.10.0, 10.10.10.2, + /// 10.10.10.4, 10.10.10.6 etc. + /// + /// Same mask applied to 10.10.10.1 (00001010.00001010.00001010.00000001) will match + /// odd-numbered IP addresses 10.10.10.1, 10.10.10.3, 10.10.10.5 etc. + /// + /// A network and wildcard mask combination of 1.1.1.1 0.0.0.0 would match an interface configured + /// exactly with 1.1.1.1 only, and nothing else. + /// + /// Wildcard masks are used in situations where subnet masks may not apply.For example, + /// when two affected hosts fall in different subnets, the use of a wildcard mask will + /// group them together. + /// + /// List of wildcard masks + /// Slash Netmask Wildcard mask + /// /32 255.255.255.255 0.0.0.0 + /// /31 255.255.255.254 0.0.0.1 + /// /30 255.255.255.252 0.0.0.3 + /// /29 255.255.255.248 0.0.0.7 + /// /28 255.255.255.240 0.0.0.15 + /// /27 255.255.255.224 0.0.0.31 + /// /26 255.255.255.192 0.0.0.63 + /// /25 255.255.255.128 0.0.0.127 + /// /24 255.255.255.0 0.0.0.255 + /// /23 255.255.254.0 0.0.1.255 + /// /22 255.255.252.0 0.0.3.255 + /// /21 255.255.248.0 0.0.7.255 + /// /20 255.255.240.0 0.0.15.255 + /// /19 255.255.224.0 0.0.31.255 + /// /18 255.255.192.0 0.0.63.255 + /// /17 255.255.128.0 0.0.127.255 + /// /16 255.255.0.0 0.0.255.255 + /// /15 255.254.0.0 0.1.255.255 + /// /14 255.252.0.0 0.3.255.255 + /// /13 255.248.0.0 0.7.255.255 + /// /12 255.240.0.0 0.15.255.255 + /// /11 255.224.0.0 0.31.255.255 + /// /10 255.192.0.0 0.63.255.255 + /// /9 255.128.0.0 0.127.255.255 + /// /8 255.0.0.0 0.255.255.255 + /// /7 254.0.0.0 1.255.255.255 + /// /6 252.0.0.0 3.255.255.255 + /// /5 248.0.0.0 7.255.255.255 + /// /4 240.0.0.0 15.255.255.255 + /// /3 224.0.0.0 31.255.255.255 + /// /2 192.0.0.0 63.255.255.255 + /// /1 128.0.0.0 127.255.255.255 + /// /0 0.0.0.0 255.255.255.255. + /// + /// + public IPAddress WildcardMask + { + get + { + byte cidr = this.family == AddressFamily.InterNetwork ? (byte)32 : (byte)128; + BigInteger netmask = IPNetwork2.ToUint(cidr, this.family); + BigInteger wildcardmask = netmask - this.InternalNetmask; + + return IPNetwork2.ToIPAddress(wildcardmask, this.family); + } + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2XmlSerialization.cs b/src/System.Net.IPNetwork/IPNetwork2XmlSerialization.cs new file mode 100644 index 00000000..343661c5 --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2XmlSerialization.cs @@ -0,0 +1,19 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +using System.Net.Sockets; + +public sealed partial class IPNetwork2 +{ + /// + /// Initializes a new instance of the class. + /// Created for DataContractSerialization. Better use static methods IPNetwork.Parse() to create IPNetworks. + /// + public IPNetwork2() + : this(0, AddressFamily.InterNetwork, 0) + { + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2contains.cs b/src/System.Net.IPNetwork/IPNetwork2contains.cs new file mode 100644 index 00000000..b8cfb223 --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2contains.cs @@ -0,0 +1,109 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +using System.Net.Sockets; +using System.Numerics; + +public sealed partial class IPNetwork2 +{ + /// + /// return true if ipaddress is contained in network. + /// + /// A string containing an ip address to convert. + /// true if ipaddress is contained into the IP Network; otherwise, false. + public bool Contains(IPAddress contains) + { + if (contains == null) + { + throw new ArgumentNullException("contains"); + } + + if (this.AddressFamily != contains.AddressFamily) + { + return false; + } + + BigInteger uintNetwork = this.InternalNetwork; + BigInteger uintBroadcast = this.InternalBroadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); + var uintAddress = IPNetwork2.ToBigInteger(contains); + + bool result = uintAddress >= uintNetwork + && uintAddress <= uintBroadcast; + + return result; + } + + /// + /// Determines whether the given IP address is part of the given IP network. + /// + /// The IP network. + /// The IP address. + /// + /// true if the IP address is part of the IP network; otherwise, false. + /// + [Obsolete("static Contains is deprecated, please use instance Contains.")] + public static bool Contains(IPNetwork2 network, IPAddress ipaddress) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.Contains(ipaddress); + } + + /// + /// return true is network2 is fully contained in network. + /// + /// The network to test. + /// It returns the boolean value. If network2 is in IPNetwork then it returns True, otherwise returns False. + public bool Contains(IPNetwork2 contains) + { + if (contains == null) + { + throw new ArgumentNullException("contains"); + } + + BigInteger uintNetwork = this.InternalNetwork; + BigInteger uintBroadcast = this.InternalBroadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); + + BigInteger uintFirst = contains.InternalNetwork; + BigInteger + uintLast = contains.InternalBroadcast; // CreateBroadcast(ref uintFirst, network2._netmask, network2._family); + + bool result = uintFirst >= uintNetwork + && uintLast <= uintBroadcast; + + return result; + } + + /// + /// Determines if the given contains the specified . + /// + /// The network to check for containment. + /// The network to check if it is contained. + /// + /// true if the contains the ; otherwise, false. + /// + [Obsolete("static Contains is deprecated, please use instance Contains.")] + public static bool Contains(IPNetwork2 network, IPNetwork2 network2) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.Contains(network2); + } + + private static BigInteger CreateBroadcast(ref BigInteger network, BigInteger netmask, AddressFamily family) + { + int width = family == AddressFamily.InterNetwork ? 4 : 16; + BigInteger uintBroadcast = network + netmask.PositiveReverse(width); + + return uintBroadcast; + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2overlap.cs b/src/System.Net.IPNetwork/IPNetwork2overlap.cs new file mode 100644 index 00000000..0f10300a --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2overlap.cs @@ -0,0 +1,54 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +using System.Numerics; + +public sealed partial class IPNetwork2 +{ + /// + /// return true is network2 overlap network. + /// + /// The network to test. + /// true if network2 overlaps into the IP Network; otherwise, false. + public bool Overlap(IPNetwork2 network2) + { + if (network2 == null) + { + throw new ArgumentNullException("network2"); + } + + BigInteger uintNetwork = this.InternalNetwork; + BigInteger uintBroadcast = this.InternalBroadcast; + + BigInteger uintFirst = network2.InternalNetwork; + BigInteger uintLast = network2.InternalBroadcast; + + bool overlap = + (uintFirst >= uintNetwork && uintFirst <= uintBroadcast) + || (uintLast >= uintNetwork && uintLast <= uintBroadcast) + || (uintFirst <= uintNetwork && uintLast >= uintBroadcast) + || (uintFirst >= uintNetwork && uintLast <= uintBroadcast); + + return overlap; + } + + /// + /// Determines if two IPNetwork2 objects overlap each other. + /// + /// The first IPNetwork2 object. + /// The second IPNetwork2 object. + /// Returns true if the two IPNetwork2 objects overlap, otherwise false. + [Obsolete("static Overlap is deprecated, please use instance Overlap.")] + public static bool Overlap(IPNetwork2 network, IPNetwork2 network2) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.Overlap(network2); + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/split.py b/src/System.Net.IPNetwork/split.py new file mode 100644 index 00000000..09e03572 --- /dev/null +++ b/src/System.Net.IPNetwork/split.py @@ -0,0 +1,83 @@ +import re +import os + +def split_ipnetwork2_into_partials(input_file, output_dir=None): + # Set output directory to current directory if not specified + if output_dir is None: + output_dir = os.path.dirname(input_file) or '.' + + # Create output directory if it doesn't exist + if not os.path.exists(output_dir): + os.makedirs(output_dir) + + # Read the input file + with open(input_file, 'r', encoding='utf-8') as f: + content = f.read() + + # Extract namespace declaration and class declaration + namespace_match = re.search(r'namespace\s+([^\s{]+)', content) + if not namespace_match: + raise ValueError("Could not find namespace declaration") + namespace = namespace_match.group(1) + + class_match = re.search(r'(public\s+(?:sealed\s+)?(?:partial\s+)?class\s+IPNetwork2[^{]*)', content) + if not class_match: + raise ValueError("Could not find IPNetwork2 class declaration") + class_declaration = class_match.group(1) + + # Make sure class declaration includes 'partial' keyword + if 'partial' not in class_declaration: + class_declaration = class_declaration.replace('class', 'partial class') + if 'partial' not in class_declaration: + class_declaration = class_declaration.replace('public', 'public partial') + + # Find using directives + using_directives = re.findall(r'using\s+[^;]+;', content) + using_section = '\n'.join(using_directives) + + # Find all regions + region_pattern = r'#region\s+([^\r\n]+)(.+?)#endregion' + regions = re.findall(region_pattern, content, re.DOTALL) + + if not regions: + print("No regions found in the file.") + return + + # Create a file for each region + for region_name, region_content in regions: + # Clean region name for file name + region_name = region_name.strip() + sanitized_region_name = re.sub(r'[^\w]', '', region_name) + file_name = f"IPNetwork2{sanitized_region_name}.cs" + file_path = os.path.join(output_dir, file_name) + + # Create file content + file_content = f"""// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace {namespace}; + +{class_declaration} +{{ + {region_content} +}} +""" + + # Write to file + with open(file_path, 'w', encoding='utf-8') as f: + f.write(file_content) + + print(f"Created {file_path}") + + print(f"Successfully split {len(regions)} regions into separate files.") + +if __name__ == "__main__": + import sys + + if len(sys.argv) > 1: + input_file = sys.argv[1] + output_dir = sys.argv[2] if len(sys.argv) > 2 else None + split_ipnetwork2_into_partials(input_file, output_dir) + else: + print("Usage: python split_ipnetwork2.py [output_directory]") From 86f35616e86131ceca6f7d995c2b9cfa532fe681 Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sat, 29 Mar 2025 23:02:46 +0100 Subject: [PATCH 06/25] Chore: document partial classes --- src/ConsoleApplication/Program.cs | 10 ++-------- src/System.Net.IPNetwork/IPNetwork2.cs | 10 ++++++++++ .../IPNetwork2IANAblock.cs | 3 +++ .../IPNetwork2ListIPAddress.cs | 5 ++++- .../IPNetwork2Operators.cs | 3 +++ src/System.Net.IPNetwork/IPNetwork2Print.cs | 4 ++++ src/System.Net.IPNetwork/IPNetwork2Subnet.cs | 3 +++ .../IPNetwork2Supernet.cs | 3 +++ .../IPNetwork2SupernetArray.cs | 3 +++ src/System.Net.IPNetwork/IPNetwork2ToCidr.cs | 3 +++ .../IPNetwork2ToIPAddress.cs | 3 +++ .../IPNetwork2ToNetmask.cs | 3 +++ .../IPNetwork2ToString.cs | 19 ------------------- src/System.Net.IPNetwork/IPNetwork2ToUint.cs | 3 +++ .../IPNetwork2TryGuessCidr.cs | 3 +++ .../IPNetwork2ValidNetmask.cs | 3 +++ .../IPNetwork2WideSubnet.cs | 3 +++ .../IPNetwork2XmlSerialization.cs | 3 +++ .../IPNetwork2contains.cs | 4 ++++ src/System.Net.IPNetwork/IPNetwork2overlap.cs | 3 +++ 20 files changed, 66 insertions(+), 28 deletions(-) delete mode 100644 src/System.Net.IPNetwork/IPNetwork2ToString.cs diff --git a/src/ConsoleApplication/Program.cs b/src/ConsoleApplication/Program.cs index f27afd33..885b6b45 100644 --- a/src/ConsoleApplication/Program.cs +++ b/src/ConsoleApplication/Program.cs @@ -406,10 +406,7 @@ private static bool TryParseIPNetwork(string ip, CidrParseEnum cidrParseEnum, by private static bool PrintNoValue(ProgramContext ac) { - if (ac == null) - { - throw new ArgumentNullException(nameof(ac)); - } + ArgumentNullException.ThrowIfNull(ac); return ac.IPNetwork == false && ac.Network == false @@ -424,10 +421,7 @@ private static bool PrintNoValue(ProgramContext ac) private static void PrintAll(ProgramContext ac) { - if (ac == null) - { - throw new ArgumentNullException(nameof(ac)); - } + ArgumentNullException.ThrowIfNull(ac); ac.IPNetwork = true; ac.Network = true; diff --git a/src/System.Net.IPNetwork/IPNetwork2.cs b/src/System.Net.IPNetwork/IPNetwork2.cs index be6fd833..61ba5349 100644 --- a/src/System.Net.IPNetwork/IPNetwork2.cs +++ b/src/System.Net.IPNetwork/IPNetwork2.cs @@ -14,4 +14,14 @@ namespace System.Net; [CLSCompliant(true)] public sealed partial class IPNetwork2 : IComparable, ISerializable { + /// + /// Returns a string representation of the object. + /// + /// + /// A string representation of the object which includes the Network and Cidr values separated by a "/". + /// + public override string ToString() + { + return string.Format("{0}/{1}", this.Network, this.Cidr); + } } diff --git a/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs b/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs index 943a65fc..dd912e56 100644 --- a/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs +++ b/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs @@ -4,6 +4,9 @@ namespace System.Net; +/// +/// IANA Blocks. +/// public sealed partial class IPNetwork2 { private static readonly Lazy IanaAblockReserved = new (() => IPNetwork2.Parse("10.0.0.0/8")); diff --git a/src/System.Net.IPNetwork/IPNetwork2ListIPAddress.cs b/src/System.Net.IPNetwork/IPNetwork2ListIPAddress.cs index f62fd0f7..9fe89873 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ListIPAddress.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ListIPAddress.cs @@ -4,8 +4,11 @@ namespace System.Net; +/// +/// ListIPAddress. +/// public sealed partial class IPNetwork2 -{ +{ /// /// List all ip addresses in a subnet. /// diff --git a/src/System.Net.IPNetwork/IPNetwork2Operators.cs b/src/System.Net.IPNetwork/IPNetwork2Operators.cs index 05996957..1c3d85c6 100644 --- a/src/System.Net.IPNetwork/IPNetwork2Operators.cs +++ b/src/System.Net.IPNetwork/IPNetwork2Operators.cs @@ -4,6 +4,9 @@ namespace System.Net; +/// +/// Opertors. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2Print.cs b/src/System.Net.IPNetwork/IPNetwork2Print.cs index 01caa386..387f63d5 100644 --- a/src/System.Net.IPNetwork/IPNetwork2Print.cs +++ b/src/System.Net.IPNetwork/IPNetwork2Print.cs @@ -5,6 +5,10 @@ namespace System.Net; using System.IO; + +/// +/// Print. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2Subnet.cs b/src/System.Net.IPNetwork/IPNetwork2Subnet.cs index 2f51d442..8b5e8701 100644 --- a/src/System.Net.IPNetwork/IPNetwork2Subnet.cs +++ b/src/System.Net.IPNetwork/IPNetwork2Subnet.cs @@ -4,6 +4,9 @@ namespace System.Net; +/// +/// Subnet. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2Supernet.cs b/src/System.Net.IPNetwork/IPNetwork2Supernet.cs index c2e8dd08..f18a4d9d 100644 --- a/src/System.Net.IPNetwork/IPNetwork2Supernet.cs +++ b/src/System.Net.IPNetwork/IPNetwork2Supernet.cs @@ -6,6 +6,9 @@ namespace System.Net; using System.Numerics; +/// +/// supernet. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2SupernetArray.cs b/src/System.Net.IPNetwork/IPNetwork2SupernetArray.cs index 9c8bdfea..95700a20 100644 --- a/src/System.Net.IPNetwork/IPNetwork2SupernetArray.cs +++ b/src/System.Net.IPNetwork/IPNetwork2SupernetArray.cs @@ -6,6 +6,9 @@ namespace System.Net; using System.Collections.Generic; +/// +/// SupernetArray. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs b/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs index 94074340..3d3347d1 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs @@ -7,6 +7,9 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; +/// +/// ToCidr. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2ToIPAddress.cs b/src/System.Net.IPNetwork/IPNetwork2ToIPAddress.cs index 9a3be032..5cfa5e24 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ToIPAddress.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ToIPAddress.cs @@ -7,6 +7,9 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; +/// +/// ToIPAddress. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2ToNetmask.cs b/src/System.Net.IPNetwork/IPNetwork2ToNetmask.cs index f483be24..6675b61e 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ToNetmask.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ToNetmask.cs @@ -7,6 +7,9 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; +/// +/// ToNetmask. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2ToString.cs b/src/System.Net.IPNetwork/IPNetwork2ToString.cs deleted file mode 100644 index c9dab960..00000000 --- a/src/System.Net.IPNetwork/IPNetwork2ToString.cs +++ /dev/null @@ -1,19 +0,0 @@ -// -// Copyright (c) IPNetwork. All rights reserved. -// - -namespace System.Net; - -public sealed partial class IPNetwork2 -{ - /// - /// Returns a string representation of the object. - /// - /// - /// A string representation of the object which includes the Network and Cidr values separated by a "/". - /// - public override string ToString() - { - return string.Format("{0}/{1}", this.Network, this.Cidr); - } -} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2ToUint.cs b/src/System.Net.IPNetwork/IPNetwork2ToUint.cs index c24edadb..b40c595b 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ToUint.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ToUint.cs @@ -7,6 +7,9 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; +/// +/// ToUint. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs b/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs index 3c48c57c..2aa1ccd8 100644 --- a/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs +++ b/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs @@ -6,6 +6,9 @@ namespace System.Net; using System.Net.Sockets; +/// +/// TryGuessCidr. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2ValidNetmask.cs b/src/System.Net.IPNetwork/IPNetwork2ValidNetmask.cs index 69a253d6..e67fc76b 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ValidNetmask.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ValidNetmask.cs @@ -7,6 +7,9 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; +/// +/// ValidNetmask. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs b/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs index bb632364..05d7ff39 100644 --- a/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs +++ b/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs @@ -7,6 +7,9 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; +/// +/// WideSubnet. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2XmlSerialization.cs b/src/System.Net.IPNetwork/IPNetwork2XmlSerialization.cs index 343661c5..c0eccd30 100644 --- a/src/System.Net.IPNetwork/IPNetwork2XmlSerialization.cs +++ b/src/System.Net.IPNetwork/IPNetwork2XmlSerialization.cs @@ -6,6 +6,9 @@ namespace System.Net; using System.Net.Sockets; +/// +/// Serialization. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2contains.cs b/src/System.Net.IPNetwork/IPNetwork2contains.cs index b8cfb223..f1108193 100644 --- a/src/System.Net.IPNetwork/IPNetwork2contains.cs +++ b/src/System.Net.IPNetwork/IPNetwork2contains.cs @@ -7,6 +7,9 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; +/// +/// Contains. +/// public sealed partial class IPNetwork2 { /// @@ -14,6 +17,7 @@ public sealed partial class IPNetwork2 /// /// A string containing an ip address to convert. /// true if ipaddress is contained into the IP Network; otherwise, false. + [System.CLSCompliant(false)] public bool Contains(IPAddress contains) { if (contains == null) diff --git a/src/System.Net.IPNetwork/IPNetwork2overlap.cs b/src/System.Net.IPNetwork/IPNetwork2overlap.cs index 0f10300a..7f8c8d80 100644 --- a/src/System.Net.IPNetwork/IPNetwork2overlap.cs +++ b/src/System.Net.IPNetwork/IPNetwork2overlap.cs @@ -6,6 +6,9 @@ namespace System.Net; using System.Numerics; +/// +/// Overlap. +/// public sealed partial class IPNetwork2 { /// From 65e0cabf303cb97faa4af557ffd5b138905e59d1 Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sat, 29 Mar 2025 23:15:11 +0100 Subject: [PATCH 07/25] Fix: order methodes --- .../IPNetwork2GetHashCode.cs | 3 + .../IPNetwork2IANAblock.cs | 26 ++--- .../IPNetwork2IComparableIPNetworkMembers.cs | 3 + .../IPNetwork2IEquatableIPNetworkMembers.cs | 3 + .../IPNetwork2ISerializable.cs | 3 + src/System.Net.IPNetwork/IPNetwork2Print.cs | 34 +++--- src/System.Net.IPNetwork/IPNetwork2Subnet.cs | 48 ++++---- .../IPNetwork2Supernet.cs | 50 ++++----- src/System.Net.IPNetwork/IPNetwork2ToCidr.cs | 58 +++++----- src/System.Net.IPNetwork/IPNetwork2ToUint.cs | 106 +++++++++--------- .../IPNetwork2WildcardMask.cs | 3 + .../IPNetwork2contains.cs | 85 +++++++------- src/System.Net.IPNetwork/IPNetwork2overlap.cs | 34 +++--- 13 files changed, 237 insertions(+), 219 deletions(-) diff --git a/src/System.Net.IPNetwork/IPNetwork2GetHashCode.cs b/src/System.Net.IPNetwork/IPNetwork2GetHashCode.cs index 28327c3c..fb7df497 100644 --- a/src/System.Net.IPNetwork/IPNetwork2GetHashCode.cs +++ b/src/System.Net.IPNetwork/IPNetwork2GetHashCode.cs @@ -4,6 +4,9 @@ namespace System.Net; +/// +/// GetHashcode. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs b/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs index dd912e56..037cba59 100644 --- a/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs +++ b/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs @@ -67,18 +67,6 @@ public static bool IsIANAReserved(IPAddress ipaddress) || IPNetwork2.IANA_CBLK_RESERVED1.Contains(ipaddress); } - /// - /// return true if ipnetwork is contained in - /// IANA_ABLK_RESERVED1, IANA_BBLK_RESERVED1, IANA_CBLK_RESERVED1. - /// - /// true if the ipnetwork is a IANA reserverd IP Netowkr ; otherwise, false. - public bool IsIANAReserved() - { - return IPNetwork2.IANA_ABLK_RESERVED1.Contains(this) - || IPNetwork2.IANA_BBLK_RESERVED1.Contains(this) - || IPNetwork2.IANA_CBLK_RESERVED1.Contains(this); - } - /// /// Determines whether the specified IP network is reserved according to the IANA Reserved ranges. /// @@ -88,7 +76,7 @@ public bool IsIANAReserved() /// /// /// - /// This method is obsolete and should not be used. Please use the instance method instead. + /// This method is obsolete and should not be used. Please use the instance method, see IsIANAReserved" instead. /// /// /// Throws an if is null. @@ -104,4 +92,16 @@ public static bool IsIANAReserved(IPNetwork2 ipnetwork) return ipnetwork.IsIANAReserved(); } + + /// + /// return true if ipnetwork is contained in + /// IANA_ABLK_RESERVED1, IANA_BBLK_RESERVED1, IANA_CBLK_RESERVED1. + /// + /// true if the ipnetwork is a IANA reserverd IP Netowkr ; otherwise, false. + public bool IsIANAReserved() + { + return IPNetwork2.IANA_ABLK_RESERVED1.Contains(this) + || IPNetwork2.IANA_BBLK_RESERVED1.Contains(this) + || IPNetwork2.IANA_CBLK_RESERVED1.Contains(this); + } } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2IComparableIPNetworkMembers.cs b/src/System.Net.IPNetwork/IPNetwork2IComparableIPNetworkMembers.cs index 46a0153f..03ec00d2 100644 --- a/src/System.Net.IPNetwork/IPNetwork2IComparableIPNetworkMembers.cs +++ b/src/System.Net.IPNetwork/IPNetwork2IComparableIPNetworkMembers.cs @@ -4,6 +4,9 @@ namespace System.Net; +/// +/// IComparable. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2IEquatableIPNetworkMembers.cs b/src/System.Net.IPNetwork/IPNetwork2IEquatableIPNetworkMembers.cs index 61eb64cd..48e4156d 100644 --- a/src/System.Net.IPNetwork/IPNetwork2IEquatableIPNetworkMembers.cs +++ b/src/System.Net.IPNetwork/IPNetwork2IEquatableIPNetworkMembers.cs @@ -4,6 +4,9 @@ namespace System.Net; +/// +/// IEquatable. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2ISerializable.cs b/src/System.Net.IPNetwork/IPNetwork2ISerializable.cs index ee0bc788..945c8bfe 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ISerializable.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ISerializable.cs @@ -8,6 +8,9 @@ namespace System.Net; using System.Numerics; using System.Runtime.Serialization; +/// +/// ISerializable. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2Print.cs b/src/System.Net.IPNetwork/IPNetwork2Print.cs index 387f63d5..56f53764 100644 --- a/src/System.Net.IPNetwork/IPNetwork2Print.cs +++ b/src/System.Net.IPNetwork/IPNetwork2Print.cs @@ -11,6 +11,23 @@ namespace System.Net; /// public sealed partial class IPNetwork2 { + /// + /// Print an ipnetwork in a clear representation string. + /// + /// The ipnetwork. + /// Dump an IPNetwork representation as string. + /// When arg is null. + [Obsolete("static Print is deprecated, please use instance Print.")] + public static string Print(IPNetwork2 ipnetwork) + { + if (ipnetwork == null) + { + throw new ArgumentNullException("ipnetwork"); + } + + return ipnetwork.Print(); + } + /// /// Print an ipnetwork in a clear representation string. /// @@ -31,21 +48,4 @@ public string Print() return sw.ToString(); } } - - /// - /// Print an ipnetwork in a clear representation string. - /// - /// The ipnetwork. - /// Dump an IPNetwork representation as string. - /// When arg is null. - [Obsolete("static Print is deprecated, please use instance Print.")] - public static string Print(IPNetwork2 ipnetwork) - { - if (ipnetwork == null) - { - throw new ArgumentNullException("ipnetwork"); - } - - return ipnetwork.Print(); - } } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2Subnet.cs b/src/System.Net.IPNetwork/IPNetwork2Subnet.cs index 8b5e8701..94173fdd 100644 --- a/src/System.Net.IPNetwork/IPNetwork2Subnet.cs +++ b/src/System.Net.IPNetwork/IPNetwork2Subnet.cs @@ -9,20 +9,6 @@ namespace System.Net; /// public sealed partial class IPNetwork2 { - /// - /// Subnet a network into multiple nets of cidr mask - /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 - /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. - /// - /// A byte representing the CIDR to be used to subnet the current IPNetwork. - /// A IPNetworkCollection splitted by CIDR. - public IPNetworkCollection Subnet(byte cidr) - { - IPNetwork2.InternalSubnet(false, this, cidr, out IPNetworkCollection ipnetworkCollection); - - return ipnetworkCollection; - } - /// /// Subnet method is used to divide the given IP network into subnets with the specified CIDR. /// @@ -42,6 +28,26 @@ public static IPNetworkCollection Subnet(IPNetwork2 network, byte cidr) return network.Subnet(cidr); } + /// + /// Subnet a network into multiple nets of cidr mask + /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 + /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. + /// + /// The network. + /// A byte representing the CIDR to be used to subnet the current IPNetwork. + /// The resulting subnetted IPNetwork. + /// true if network was split successfully; otherwise, false. + [Obsolete("static TrySubnet is deprecated, please use instance TrySubnet.")] + public static bool TrySubnet(IPNetwork2 network, byte cidr, out IPNetworkCollection ipnetworkCollection) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.TrySubnet(cidr, out ipnetworkCollection); + } + /// /// Subnet a network into multiple nets of cidr mask /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 @@ -68,19 +74,13 @@ public bool TrySubnet(byte cidr, out IPNetworkCollection ipnetworkCollection) /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. /// - /// The network. /// A byte representing the CIDR to be used to subnet the current IPNetwork. - /// The resulting subnetted IPNetwork. - /// true if network was split successfully; otherwise, false. - [Obsolete("static TrySubnet is deprecated, please use instance TrySubnet.")] - public static bool TrySubnet(IPNetwork2 network, byte cidr, out IPNetworkCollection ipnetworkCollection) + /// A IPNetworkCollection splitted by CIDR. + public IPNetworkCollection Subnet(byte cidr) { - if (network == null) - { - throw new ArgumentNullException("network"); - } + IPNetwork2.InternalSubnet(false, this, cidr, out IPNetworkCollection ipnetworkCollection); - return network.TrySubnet(cidr, out ipnetworkCollection); + return ipnetworkCollection; } /// diff --git a/src/System.Net.IPNetwork/IPNetwork2Supernet.cs b/src/System.Net.IPNetwork/IPNetwork2Supernet.cs index f18a4d9d..6b47baeb 100644 --- a/src/System.Net.IPNetwork/IPNetwork2Supernet.cs +++ b/src/System.Net.IPNetwork/IPNetwork2Supernet.cs @@ -17,44 +17,48 @@ public sealed partial class IPNetwork2 /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. /// + /// the network. /// The network to supernet with. /// A supernetted IP Network. - public IPNetwork2 Supernet(IPNetwork2 network2) + [Obsolete("static Supernet is deprecated, please use instance Supernet.")] + public static IPNetwork2 Supernet(IPNetwork2 network, IPNetwork2 network2) { - IPNetwork2.InternalSupernet(false, this, network2, out IPNetwork2 supernet); - return supernet; + return network.Supernet(network2); } /// - /// Supernet two consecutive cidr equal subnet into a single one + /// Try to supernet two consecutive cidr equal subnet into a single one /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. /// /// the network. /// The network to supernet with. - /// A supernetted IP Network. - [Obsolete("static Supernet is deprecated, please use instance Supernet.")] - public static IPNetwork2 Supernet(IPNetwork2 network, IPNetwork2 network2) + /// The resulting IPNetwork. + /// true if network2 was supernetted successfully; otherwise, false. + [Obsolete("static TrySupernet is deprecated, please use instance TrySupernet.")] + public static bool TrySupernet(IPNetwork2 network, IPNetwork2 network2, out IPNetwork2 supernet) { - return network.Supernet(network2); + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.TrySupernet(network2, out supernet); } /// - /// Try to supernet two consecutive cidr equal subnet into a single one + /// Supernet two consecutive cidr equal subnet into a single one /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. /// /// The network to supernet with. - /// The resulting IPNetwork. - /// true if network2 was supernetted successfully; otherwise, false. - public bool TrySupernet(IPNetwork2 network2, out IPNetwork2 supernet) + /// A supernetted IP Network. + public IPNetwork2 Supernet(IPNetwork2 network2) { - IPNetwork2.InternalSupernet(true, this, network2, out IPNetwork2 outSupernet); - bool parsed = outSupernet != null; - supernet = outSupernet; - return parsed; + IPNetwork2.InternalSupernet(false, this, network2, out IPNetwork2 supernet); + return supernet; } /// @@ -63,19 +67,15 @@ public bool TrySupernet(IPNetwork2 network2, out IPNetwork2 supernet) /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. /// - /// the network. /// The network to supernet with. /// The resulting IPNetwork. /// true if network2 was supernetted successfully; otherwise, false. - [Obsolete("static TrySupernet is deprecated, please use instance TrySupernet.")] - public static bool TrySupernet(IPNetwork2 network, IPNetwork2 network2, out IPNetwork2 supernet) + public bool TrySupernet(IPNetwork2 network2, out IPNetwork2 supernet) { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.TrySupernet(network2, out supernet); + IPNetwork2.InternalSupernet(true, this, network2, out IPNetwork2 outSupernet); + bool parsed = outSupernet != null; + supernet = outSupernet; + return parsed; } /// diff --git a/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs b/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs index 3d3347d1..7f7cae74 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs @@ -12,35 +12,6 @@ namespace System.Net; /// public sealed partial class IPNetwork2 { - /// - /// Convert netmask to CIDR - /// 255.255.255.0 -> 24 - /// 255.255.0.0 -> 16 - /// 255.0.0.0 -> 8. - /// - /// Whether to throw exception or not during conversion. - /// A number representing the netmask to convert. - /// Either IPv4 or IPv6. - /// A byte representing the netmask in cidr format (/24). - private static void InternalToCidr(bool tryParse, BigInteger netmask, AddressFamily family, out byte? cidr) - { - if (!IPNetwork2.InternalValidNetmask(netmask, family)) - { - if (tryParse == false) - { - throw new ArgumentException("netmask"); - } - - cidr = null; - return; - } - - byte cidr2 = IPNetwork2.BitsSet(netmask, family); - cidr = cidr2; - - return; - } - /// /// Convert netmask to CIDR /// 255.255.255.0 -> 24 @@ -103,4 +74,33 @@ private static void InternalToCidr(bool tryParse, IPAddress netmask, out byte? c return; } + + /// + /// Convert netmask to CIDR + /// 255.255.255.0 -> 24 + /// 255.255.0.0 -> 16 + /// 255.0.0.0 -> 8. + /// + /// Whether to throw exception or not during conversion. + /// A number representing the netmask to convert. + /// Either IPv4 or IPv6. + /// A byte representing the netmask in cidr format (/24). + private static void InternalToCidr(bool tryParse, BigInteger netmask, AddressFamily family, out byte? cidr) + { + if (!IPNetwork2.InternalValidNetmask(netmask, family)) + { + if (tryParse == false) + { + throw new ArgumentException("netmask"); + } + + cidr = null; + return; + } + + byte cidr2 = IPNetwork2.BitsSet(netmask, family); + cidr = cidr2; + + return; + } } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2ToUint.cs b/src/System.Net.IPNetwork/IPNetwork2ToUint.cs index b40c595b..fc704a2e 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ToUint.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ToUint.cs @@ -43,59 +43,6 @@ public static bool TryToBigInteger(IPAddress ipaddress, out BigInteger? uintIpAd return parsed; } - /// - /// Converts an IPAddress to a nullable BigInteger representation. - /// - /// Indicates whether the method should handle errors silently (true) or throw exceptions (false). - /// The IPAddress to convert. - /// The resulting BigInteger representation of the IP address, or null if conversion fails and tryParse is true. - internal static void InternalToBigInteger(bool tryParse, IPAddress ipaddress, out BigInteger? uintIpAddress) - { - if (ipaddress == null) - { - if (tryParse == false) - { - throw new ArgumentNullException("ipaddress"); - } - - uintIpAddress = null; - return; - } - -#if NETSTANDARD2_1 - byte[] bytes = ipaddress.AddressFamily == AddressFamily.InterNetwork ? new byte[4] : new byte[16]; - Span span = bytes.AsSpan(); - if (!ipaddress.TryWriteBytes(span, out _)) - { - if (tryParse == false) - { - throw new ArgumentException("ipaddress"); - } - - uintIpAddress = null; - return; - } - - uintIpAddress = new BigInteger(span, isUnsigned: true, isBigEndian: true); -#elif NETSTANDARD20 - byte[] bytes = ipaddress.GetAddressBytes(); - bytes.AsSpan().Reverse(); - - // add trailing 0 to make unsigned - byte[] unsigned = new byte[bytes.Length + 1]; - Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); - uintIpAddress = new BigInteger(unsigned); -#else - byte[] bytes = ipaddress.GetAddressBytes(); - Array.Reverse(bytes); - - // add trailing 0 to make unsigned - byte[] unsigned = new byte[bytes.Length + 1]; - Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); - uintIpAddress = new BigInteger(unsigned); -#endif - } - /// /// Convert a cidr to BigInteger netmask. /// @@ -190,4 +137,57 @@ internal static void InternalToBigInteger(bool tryParse, byte cidr, AddressFamil Array.Copy(m, 0, bmask, 0, copy); uintNetmask = new BigInteger(bmask); } + + /// + /// Converts an IPAddress to a nullable BigInteger representation. + /// + /// Indicates whether the method should handle errors silently (true) or throw exceptions (false). + /// The IPAddress to convert. + /// The resulting BigInteger representation of the IP address, or null if conversion fails and tryParse is true. + internal static void InternalToBigInteger(bool tryParse, IPAddress ipaddress, out BigInteger? uintIpAddress) + { + if (ipaddress == null) + { + if (tryParse == false) + { + throw new ArgumentNullException("ipaddress"); + } + + uintIpAddress = null; + return; + } + +#if NETSTANDARD2_1 + byte[] bytes = ipaddress.AddressFamily == AddressFamily.InterNetwork ? new byte[4] : new byte[16]; + Span span = bytes.AsSpan(); + if (!ipaddress.TryWriteBytes(span, out _)) + { + if (tryParse == false) + { + throw new ArgumentException("ipaddress"); + } + + uintIpAddress = null; + return; + } + + uintIpAddress = new BigInteger(span, isUnsigned: true, isBigEndian: true); +#elif NETSTANDARD20 + byte[] bytes = ipaddress.GetAddressBytes(); + bytes.AsSpan().Reverse(); + + // add trailing 0 to make unsigned + byte[] unsigned = new byte[bytes.Length + 1]; + Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); + uintIpAddress = new BigInteger(unsigned); +#else + byte[] bytes = ipaddress.GetAddressBytes(); + Array.Reverse(bytes); + + // add trailing 0 to make unsigned + byte[] unsigned = new byte[bytes.Length + 1]; + Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); + uintIpAddress = new BigInteger(unsigned); +#endif + } } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2WildcardMask.cs b/src/System.Net.IPNetwork/IPNetwork2WildcardMask.cs index 918b3602..069f3b14 100644 --- a/src/System.Net.IPNetwork/IPNetwork2WildcardMask.cs +++ b/src/System.Net.IPNetwork/IPNetwork2WildcardMask.cs @@ -7,6 +7,9 @@ namespace System.Net; using System.Numerics; using System.Net.Sockets; +/// +/// WildcardNetmask. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2contains.cs b/src/System.Net.IPNetwork/IPNetwork2contains.cs index f1108193..5529f40c 100644 --- a/src/System.Net.IPNetwork/IPNetwork2contains.cs +++ b/src/System.Net.IPNetwork/IPNetwork2contains.cs @@ -12,6 +12,44 @@ namespace System.Net; /// public sealed partial class IPNetwork2 { + /// + /// Determines whether the given IP address is part of the given IP network. + /// + /// The IP network. + /// The IP address. + /// + /// true if the IP address is part of the IP network; otherwise, false. + /// + [Obsolete("static Contains is deprecated, please use instance Contains.")] + public static bool Contains(IPNetwork2 network, IPAddress ipaddress) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.Contains(ipaddress); + } + + /// + /// Determines if the given contains the specified . + /// + /// The network to check for containment. + /// The network to check if it is contained. + /// + /// true if the contains the ; otherwise, false. + /// + [Obsolete("static Contains is deprecated, please use instance Contains.")] + public static bool Contains(IPNetwork2 network, IPNetwork2 network2) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.Contains(network2); + } + /// /// return true if ipaddress is contained in network. /// @@ -31,7 +69,8 @@ public bool Contains(IPAddress contains) } BigInteger uintNetwork = this.InternalNetwork; - BigInteger uintBroadcast = this.InternalBroadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); + BigInteger + uintBroadcast = this.InternalBroadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); var uintAddress = IPNetwork2.ToBigInteger(contains); bool result = uintAddress >= uintNetwork @@ -40,25 +79,6 @@ public bool Contains(IPAddress contains) return result; } - /// - /// Determines whether the given IP address is part of the given IP network. - /// - /// The IP network. - /// The IP address. - /// - /// true if the IP address is part of the IP network; otherwise, false. - /// - [Obsolete("static Contains is deprecated, please use instance Contains.")] - public static bool Contains(IPNetwork2 network, IPAddress ipaddress) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.Contains(ipaddress); - } - /// /// return true is network2 is fully contained in network. /// @@ -72,11 +92,13 @@ public bool Contains(IPNetwork2 contains) } BigInteger uintNetwork = this.InternalNetwork; - BigInteger uintBroadcast = this.InternalBroadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); + BigInteger + uintBroadcast = this.InternalBroadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); BigInteger uintFirst = contains.InternalNetwork; BigInteger - uintLast = contains.InternalBroadcast; // CreateBroadcast(ref uintFirst, network2._netmask, network2._family); + uintLast = contains + .InternalBroadcast; // CreateBroadcast(ref uintFirst, network2._netmask, network2._family); bool result = uintFirst >= uintNetwork && uintLast <= uintBroadcast; @@ -84,25 +106,6 @@ public bool Contains(IPNetwork2 contains) return result; } - /// - /// Determines if the given contains the specified . - /// - /// The network to check for containment. - /// The network to check if it is contained. - /// - /// true if the contains the ; otherwise, false. - /// - [Obsolete("static Contains is deprecated, please use instance Contains.")] - public static bool Contains(IPNetwork2 network, IPNetwork2 network2) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.Contains(network2); - } - private static BigInteger CreateBroadcast(ref BigInteger network, BigInteger netmask, AddressFamily family) { int width = family == AddressFamily.InterNetwork ? 4 : 16; diff --git a/src/System.Net.IPNetwork/IPNetwork2overlap.cs b/src/System.Net.IPNetwork/IPNetwork2overlap.cs index 7f8c8d80..e1303423 100644 --- a/src/System.Net.IPNetwork/IPNetwork2overlap.cs +++ b/src/System.Net.IPNetwork/IPNetwork2overlap.cs @@ -11,6 +11,23 @@ namespace System.Net; /// public sealed partial class IPNetwork2 { + /// + /// Determines if two IPNetwork2 objects overlap each other. + /// + /// The first IPNetwork2 object. + /// The second IPNetwork2 object. + /// Returns true if the two IPNetwork2 objects overlap, otherwise false. + [Obsolete("static Overlap is deprecated, please use instance Overlap.")] + public static bool Overlap(IPNetwork2 network, IPNetwork2 network2) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.Overlap(network2); + } + /// /// return true is network2 overlap network. /// @@ -37,21 +54,4 @@ public bool Overlap(IPNetwork2 network2) return overlap; } - - /// - /// Determines if two IPNetwork2 objects overlap each other. - /// - /// The first IPNetwork2 object. - /// The second IPNetwork2 object. - /// Returns true if the two IPNetwork2 objects overlap, otherwise false. - [Obsolete("static Overlap is deprecated, please use instance Overlap.")] - public static bool Overlap(IPNetwork2 network, IPNetwork2 network2) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.Overlap(network2); - } } \ No newline at end of file From 8f3cc9a0a842dd55dee5e3633eb4c198abbca605 Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sat, 29 Mar 2025 23:23:29 +0100 Subject: [PATCH 08/25] Chore: documentd --- src/ConsoleApplication/ActionEnum.cs | 3 ++ src/ConsoleApplication/ArgParsed.cs | 29 +++++++++++++++---- src/ConsoleApplication/CidrParseTypeEnum.cs | 3 ++ .../ConsoleApplication.csproj | 12 +++++--- 4 files changed, 38 insertions(+), 9 deletions(-) diff --git a/src/ConsoleApplication/ActionEnum.cs b/src/ConsoleApplication/ActionEnum.cs index 0a71229f..0fc5db5a 100644 --- a/src/ConsoleApplication/ActionEnum.cs +++ b/src/ConsoleApplication/ActionEnum.cs @@ -4,6 +4,9 @@ namespace System.Net; +/// +/// Switch and actions +/// public enum ActionEnum { Usage, diff --git a/src/ConsoleApplication/ArgParsed.cs b/src/ConsoleApplication/ArgParsed.cs index cc64ad9f..defffb9a 100644 --- a/src/ConsoleApplication/ArgParsed.cs +++ b/src/ConsoleApplication/ArgParsed.cs @@ -4,22 +4,41 @@ namespace System.Net; +/// +/// The args from the command line. +/// public class ArgParsed { + /// + /// Position. + /// public int Arg { get; set; } private event ArgParsedDelegate OnArgParsed; + /// + /// An arg has been parsed. + /// public delegate void ArgParsedDelegate(ProgramContext ac, string arg); + /// + /// Run the program with the args. + /// + /// The context. + /// The arg. public void Run(ProgramContext ac, string arg) { - this.OnArgParsed?.Invoke(ac, arg); - } + this.OnArgParsed?.Invoke(ac, arg); + } + /// + /// Initializes a new instance of the class. + /// + /// The arg. + /// The event on parse. public ArgParsed(int arg, ArgParsedDelegate onArgParsed) { - this.Arg = arg; - this.OnArgParsed += onArgParsed; - } + this.Arg = arg; + this.OnArgParsed += onArgParsed; + } } \ No newline at end of file diff --git a/src/ConsoleApplication/CidrParseTypeEnum.cs b/src/ConsoleApplication/CidrParseTypeEnum.cs index b287de63..289315c5 100644 --- a/src/ConsoleApplication/CidrParseTypeEnum.cs +++ b/src/ConsoleApplication/CidrParseTypeEnum.cs @@ -4,6 +4,9 @@ namespace System.Net; +/// +/// CidrParseEnum. +/// public enum CidrParseEnum { Default, diff --git a/src/ConsoleApplication/ConsoleApplication.csproj b/src/ConsoleApplication/ConsoleApplication.csproj index 2290125d..05effda3 100644 --- a/src/ConsoleApplication/ConsoleApplication.csproj +++ b/src/ConsoleApplication/ConsoleApplication.csproj @@ -1,9 +1,7 @@  - Exe net8.0;net9.0 - net9.0 disable True ..\System.Net.IPNetwork.snk @@ -13,6 +11,14 @@ + + + + + + + + @@ -29,9 +35,7 @@ - - From b65ff9bd28941f49d06d928402e741a2b4f5b290 Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sat, 29 Mar 2025 23:29:34 +0100 Subject: [PATCH 09/25] Chore: cleanup --- src/System.Net.IPNetwork/split.py | 83 ------------------------------- 1 file changed, 83 deletions(-) delete mode 100644 src/System.Net.IPNetwork/split.py diff --git a/src/System.Net.IPNetwork/split.py b/src/System.Net.IPNetwork/split.py deleted file mode 100644 index 09e03572..00000000 --- a/src/System.Net.IPNetwork/split.py +++ /dev/null @@ -1,83 +0,0 @@ -import re -import os - -def split_ipnetwork2_into_partials(input_file, output_dir=None): - # Set output directory to current directory if not specified - if output_dir is None: - output_dir = os.path.dirname(input_file) or '.' - - # Create output directory if it doesn't exist - if not os.path.exists(output_dir): - os.makedirs(output_dir) - - # Read the input file - with open(input_file, 'r', encoding='utf-8') as f: - content = f.read() - - # Extract namespace declaration and class declaration - namespace_match = re.search(r'namespace\s+([^\s{]+)', content) - if not namespace_match: - raise ValueError("Could not find namespace declaration") - namespace = namespace_match.group(1) - - class_match = re.search(r'(public\s+(?:sealed\s+)?(?:partial\s+)?class\s+IPNetwork2[^{]*)', content) - if not class_match: - raise ValueError("Could not find IPNetwork2 class declaration") - class_declaration = class_match.group(1) - - # Make sure class declaration includes 'partial' keyword - if 'partial' not in class_declaration: - class_declaration = class_declaration.replace('class', 'partial class') - if 'partial' not in class_declaration: - class_declaration = class_declaration.replace('public', 'public partial') - - # Find using directives - using_directives = re.findall(r'using\s+[^;]+;', content) - using_section = '\n'.join(using_directives) - - # Find all regions - region_pattern = r'#region\s+([^\r\n]+)(.+?)#endregion' - regions = re.findall(region_pattern, content, re.DOTALL) - - if not regions: - print("No regions found in the file.") - return - - # Create a file for each region - for region_name, region_content in regions: - # Clean region name for file name - region_name = region_name.strip() - sanitized_region_name = re.sub(r'[^\w]', '', region_name) - file_name = f"IPNetwork2{sanitized_region_name}.cs" - file_path = os.path.join(output_dir, file_name) - - # Create file content - file_content = f"""// -// Copyright (c) IPNetwork. All rights reserved. -// - -namespace {namespace}; - -{class_declaration} -{{ - {region_content} -}} -""" - - # Write to file - with open(file_path, 'w', encoding='utf-8') as f: - f.write(file_content) - - print(f"Created {file_path}") - - print(f"Successfully split {len(regions)} regions into separate files.") - -if __name__ == "__main__": - import sys - - if len(sys.argv) > 1: - input_file = sys.argv[1] - output_dir = sys.argv[2] if len(sys.argv) > 2 else None - split_ipnetwork2_into_partials(input_file, output_dir) - else: - print("Usage: python split_ipnetwork2.py [output_directory]") From 4ffef5d053360f089a497f41ae596d1ee32c6905 Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sat, 29 Mar 2025 23:53:32 +0100 Subject: [PATCH 10/25] Feat: document and code cleanup --- src/ConsoleApplication/ActionEnum.cs | 2 +- .../BigIntegerExtensions.cs | 3 +- src/System.Net.IPNetwork/CidrClassLess.cs | 27 +- src/System.Net.IPNetwork/IPNetwork2ToCidr.cs | 2 +- .../IPNetwork2TryGuessCidr.cs | 5 +- .../IPNetwork2WideSubnet.cs | 4 +- src/TestProject/CidrClassFullIpv4UnitTest.cs | 18 +- src/TestProject/CidrClassFullIpv6UnitTest.cs | 9 +- src/TestProject/CidrClassLessUnitTest.cs | 27 +- src/TestProject/ContainsUnitTest.cs | 8 +- src/TestProject/EqualsUnitTest.cs | 33 +- src/TestProject/IPAddressExtensionTests.cs | 138 +++---- .../IPNetworkCollectionCtorTests.cs | 4 +- .../IPNetworkCollectionCurrentTests.cs | 2 +- .../IPNetworkTest/IPNetworkCompareTests.cs | 2 +- .../IPNetworkCtorWithIpAndCidrTests.cs | 3 - .../IPNetworkTest/IPNetworkExamplesTests.cs | 2 +- .../IPNetworkTest/IPNetworkIanaBlocksTests.cs | 2 +- .../IPNetworkTest/IPNetworkOverlapTests.cs | 2 +- .../IPNetworkTest/IPNetworkParseIpIpTests.cs | 6 +- .../IPNetworkParseStringStringTests.cs | 8 +- .../IPNetworkTest/IPNetworkParseTests.cs | 37 +- .../IPNetworkTest/IPNetworkPrintTests.cs | 12 +- .../IPNetworkTest/IPNetworkResizeTests.cs | 4 +- .../IPNetworkTest/IPNetworkSortTests.cs | 6 +- .../IPNetworkTest/IPNetworkSubnetTests.cs | 11 +- .../IPNetworkSupernetArrayTests.cs | 6 +- .../IPNetworkTest/IPNetworkSupernetTests.cs | 13 +- .../IPNetworkToBigIntegerTests.cs | 119 +++--- .../IPNetworkToIPAddressTests.cs | 12 +- .../IPNetworkTest/IPNetworkToNetmaskTests.cs | 11 +- .../IPNetworkTryGuessCidrTests.cs | 54 ++- .../IPNetworkTryParseCidrTests.cs | 9 +- .../IPNetworkTest/IPNetworkTryParseTests.cs | 365 +++++++++--------- .../IPNetworkTest/IPNetworkTrySubnetTests.cs | 118 +++--- .../IPNetworkTrySupernetTests.cs | 36 +- .../IPNetworkTryToBigIntegerTests.cs | 93 ++--- .../IPNetworkTest/IPNetworkTryToCidrTests.cs | 88 ++--- .../IPNetworkTryToNetmaskTests.cs | 6 +- .../IPNetworkTest/IPNetworkTryToUintTests.cs | 3 +- .../IPNetworkTryWideSubnetTests.cs | 27 +- .../IPNetworkValidNetmaskTests.cs | 2 +- .../IPNetworkTest/IPNetworkWideSubnetTests.cs | 21 +- src/TestProject/IPNetworkV6UnitTest.cs | 254 +++++------- src/TestProject/SerializeJsonTest.cs | 6 +- src/TestProject/SerializeXmlTest.cs | 4 +- src/TestProject/TryParseUnitTest.cs | 12 +- 47 files changed, 718 insertions(+), 918 deletions(-) diff --git a/src/ConsoleApplication/ActionEnum.cs b/src/ConsoleApplication/ActionEnum.cs index 0fc5db5a..844927f7 100644 --- a/src/ConsoleApplication/ActionEnum.cs +++ b/src/ConsoleApplication/ActionEnum.cs @@ -5,7 +5,7 @@ namespace System.Net; /// -/// Switch and actions +/// Switch and actions. /// public enum ActionEnum { diff --git a/src/System.Net.IPNetwork/BigIntegerExtensions.cs b/src/System.Net.IPNetwork/BigIntegerExtensions.cs index 9736bba4..688130cc 100644 --- a/src/System.Net.IPNetwork/BigIntegerExtensions.cs +++ b/src/System.Net.IPNetwork/BigIntegerExtensions.cs @@ -149,8 +149,7 @@ public static string ToOctalString(this BigInteger bigint) /// /// /// The positive number to bitwise reverse. - /// The width of the parameter. - /// + /// The width of the parameter. /// A number representing the input bitwise reversed. public static BigInteger PositiveReverse(this BigInteger input, int width) { diff --git a/src/System.Net.IPNetwork/CidrClassLess.cs b/src/System.Net.IPNetwork/CidrClassLess.cs index f815f295..5dfe2b2b 100644 --- a/src/System.Net.IPNetwork/CidrClassLess.cs +++ b/src/System.Net.IPNetwork/CidrClassLess.cs @@ -22,21 +22,20 @@ public sealed class CidrClassLess : ICidrGuess /// true if ip was converted successfully; otherwise, false. public bool TryGuessCidr(string ip, out byte cidr) { - IPAddress ipaddress = null; - bool parsed = IPAddress.TryParse(string.Format("{0}", ip), out ipaddress); - if (parsed == false) - { - cidr = 0; - return false; - } - - if (ipaddress.AddressFamily == AddressFamily.InterNetworkV6) - { - cidr = 128; - return true; - } + bool parsed = IPAddress.TryParse(string.Format("{0}", ip), out IPAddress ipaddress); + if (parsed == false) + { + cidr = 0; + return false; + } - cidr = 32; + if (ipaddress.AddressFamily == AddressFamily.InterNetworkV6) + { + cidr = 128; return true; } + + cidr = 32; + return true; + } } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs b/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs index 7f7cae74..6dcf1fb2 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs @@ -56,7 +56,7 @@ private static void InternalToCidr(bool tryParse, IPAddress netmask, out byte? c return; } - bool parsed = IPNetwork2.TryToBigInteger(netmask, out BigInteger? uintNetmask2); + IPNetwork2.TryToBigInteger(netmask, out BigInteger? uintNetmask2); // 20180217 lduchosal // impossible to reach code. diff --git a/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs b/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs index 2aa1ccd8..bb635739 100644 --- a/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs +++ b/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs @@ -31,14 +31,13 @@ public static bool TryGuessCidr(string ip, out byte cidr) /// true if cidr was converted successfully; otherwise, false. public static bool TryParseCidr(string sidr, AddressFamily family, out byte? cidr) { - byte b = 0; - if (!byte.TryParse(sidr, out b)) + if (!byte.TryParse(sidr, out byte b)) { cidr = null; return false; } - if (!IPNetwork2.TryToNetmask(b, family, out IPAddress netmask)) + if (!IPNetwork2.TryToNetmask(b, family, out IPAddress _)) { cidr = null; return false; diff --git a/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs b/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs index 05d7ff39..d424eb74 100644 --- a/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs +++ b/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs @@ -49,7 +49,7 @@ public static IPNetwork2 WideSubnet(string start, string end) } var ipnetwork = new IPNetwork2(0, startIP.AddressFamily, 0); - for (byte cidr = 32; cidr >= 0; cidr--) + for (byte cidr = 32; true; cidr--) { var wideSubnet = IPNetwork2.Parse(start, cidr); if (wideSubnet.Contains(endIP)) @@ -151,7 +151,7 @@ internal static void InternalWideSubnet(bool tryWide, IPNetwork2[] ipnetworks, o } var ipn = new IPNetwork2(0, family, 0); - for (byte cidr = nnin0.cidr; cidr >= 0; cidr--) + for (byte cidr = nnin0.cidr; true; cidr--) { var wideSubnet = new IPNetwork2(uintNnin0, family, cidr); if (wideSubnet.Contains(ipaddressX)) diff --git a/src/TestProject/CidrClassFullIpv4UnitTest.cs b/src/TestProject/CidrClassFullIpv4UnitTest.cs index e5e3cac5..44bc5e15 100644 --- a/src/TestProject/CidrClassFullIpv4UnitTest.cs +++ b/src/TestProject/CidrClassFullIpv4UnitTest.cs @@ -18,8 +18,7 @@ public void TestTryGuessCidrNull() { var cidrguess = new CidrClassFull(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr(null, out cidr); + bool parsed = cidrguess.TryGuessCidr(null, out byte cidr); Assert.AreEqual(false, parsed, "parsed"); Assert.AreEqual(0, cidr, "cidr"); @@ -33,8 +32,7 @@ public void TestTryGuessCidrA() { var cidrguess = new CidrClassFull(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("10.0.0.0", out cidr); + bool parsed = cidrguess.TryGuessCidr("10.0.0.0", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(8, cidr, "cidr"); @@ -48,8 +46,7 @@ public void TestTryGuessCidrB() { var cidrguess = new CidrClassFull(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("172.0.0.0", out cidr); + bool parsed = cidrguess.TryGuessCidr("172.0.0.0", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(16, cidr, "cidr"); @@ -63,8 +60,7 @@ public void TestTryGuessCidrC() { var cidrguess = new CidrClassFull(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("192.0.0.0", out cidr); + bool parsed = cidrguess.TryGuessCidr("192.0.0.0", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(24, cidr, "cidr"); @@ -78,8 +74,7 @@ public void TestTryGuessCidrD() { var cidrguess = new CidrClassFull(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("224.0.0.0", out cidr); + bool parsed = cidrguess.TryGuessCidr("224.0.0.0", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(24, cidr, "cidr"); @@ -93,8 +88,7 @@ public void TestTryGuessCidrE() { var cidrguess = new CidrClassFull(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("240.0.0.0", out cidr); + bool parsed = cidrguess.TryGuessCidr("240.0.0.0", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(24, cidr, "cidr"); diff --git a/src/TestProject/CidrClassFullIpv6UnitTest.cs b/src/TestProject/CidrClassFullIpv6UnitTest.cs index 9b1b726f..4a576b14 100644 --- a/src/TestProject/CidrClassFullIpv6UnitTest.cs +++ b/src/TestProject/CidrClassFullIpv6UnitTest.cs @@ -18,8 +18,7 @@ public void TestIpV6TryGuessCidrNull() { var cidrguess = new CidrClassFull(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr(null, out cidr); + bool parsed = cidrguess.TryGuessCidr(null, out byte cidr); Assert.AreEqual(false, parsed, "parsed"); Assert.AreEqual(0, cidr, "cidr"); @@ -33,8 +32,7 @@ public void TestIpV6TryGuessCidr1() { var cidrguess = new CidrClassFull(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("::", out cidr); + bool parsed = cidrguess.TryGuessCidr("::", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(64, cidr, "cidr"); @@ -48,8 +46,7 @@ public void TestIpV6TryGuessCidr2() { var cidrguess = new CidrClassFull(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("2001:0db8::", out cidr); + bool parsed = cidrguess.TryGuessCidr("2001:0db8::", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(64, cidr, "cidr"); diff --git a/src/TestProject/CidrClassLessUnitTest.cs b/src/TestProject/CidrClassLessUnitTest.cs index 4e0e8ae9..98c9c934 100644 --- a/src/TestProject/CidrClassLessUnitTest.cs +++ b/src/TestProject/CidrClassLessUnitTest.cs @@ -20,8 +20,7 @@ public void TestTryGuessCidrNull() { var cidrguess = new CidrClassLess(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr(null, out cidr); + bool parsed = cidrguess.TryGuessCidr(null, out byte cidr); Assert.AreEqual(false, parsed, "parsed"); Assert.AreEqual(0, cidr, "cidr"); @@ -35,8 +34,7 @@ public void TestTryGuessCidrA() { var cidrguess = new CidrClassLess(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("10.0.0.0", out cidr); + bool parsed = cidrguess.TryGuessCidr("10.0.0.0", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(32, cidr, "cidr"); @@ -50,8 +48,7 @@ public void TestTryGuessCidrB() { var cidrguess = new CidrClassLess(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("172.0.0.0", out cidr); + bool parsed = cidrguess.TryGuessCidr("172.0.0.0", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(32, cidr, "cidr"); @@ -65,8 +62,7 @@ public void TestTryGuessCidrC() { var cidrguess = new CidrClassLess(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("192.0.0.0", out cidr); + bool parsed = cidrguess.TryGuessCidr("192.0.0.0", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(32, cidr, "cidr"); @@ -80,8 +76,7 @@ public void TestTryGuessCidrD() { var cidrguess = new CidrClassLess(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("224.0.0.0", out cidr); + bool parsed = cidrguess.TryGuessCidr("224.0.0.0", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(32, cidr, "cidr"); @@ -95,8 +90,7 @@ public void TestTryGuessCidrE() { var cidrguess = new CidrClassLess(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("240.0.0.0", out cidr); + bool parsed = cidrguess.TryGuessCidr("240.0.0.0", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(32, cidr, "cidr"); @@ -114,8 +108,7 @@ public void TestIpV6TryGuessCidrNull() { var cidrguess = new CidrClassLess(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr(null, out cidr); + bool parsed = cidrguess.TryGuessCidr(null, out byte cidr); Assert.AreEqual(false, parsed, "parsed"); Assert.AreEqual(0, cidr, "cidr"); @@ -129,8 +122,7 @@ public void TestIpV6TryGuessCidr1() { var cidrguess = new CidrClassLess(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("::", out cidr); + bool parsed = cidrguess.TryGuessCidr("::", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(128, cidr, "cidr"); @@ -144,8 +136,7 @@ public void TestIpV6TryGuessCidr2() { var cidrguess = new CidrClassLess(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("2001:0db8::", out cidr); + bool parsed = cidrguess.TryGuessCidr("2001:0db8::", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(128, cidr, "cidr"); diff --git a/src/TestProject/ContainsUnitTest.cs b/src/TestProject/ContainsUnitTest.cs index b66762f7..a6e78db8 100644 --- a/src/TestProject/ContainsUnitTest.cs +++ b/src/TestProject/ContainsUnitTest.cs @@ -61,7 +61,7 @@ public void TestContainsStatic3() IPNetwork2 ipnetwork2 = null; #pragma warning disable 0618 - bool result = IPNetwork2.Contains(ipnetwork, ipnetwork2); + IPNetwork2.Contains(ipnetwork, ipnetwork2); #pragma warning restore 0618 } @@ -91,7 +91,7 @@ public void TestContains8() var ipnetwork = IPNetwork2.Parse("0.0.0.0/0"); IPNetwork2 ipnetwork2 = null; - bool result = ipnetwork.Contains(ipnetwork2); + ipnetwork.Contains(ipnetwork2); } /// @@ -105,7 +105,7 @@ public void TestContainsStatic1() IPAddress ipaddress = null; #pragma warning disable 0618 - bool result = IPNetwork2.Contains(ipnetwork, ipaddress); + IPNetwork2.Contains(ipnetwork, ipaddress); #pragma warning restore 0618 } @@ -134,7 +134,7 @@ public void TestContains10() var ipnetwork = IPNetwork2.Parse("0.0.0.0/0"); IPAddress ipaddress = null; - bool result = ipnetwork.Contains(ipaddress); + ipnetwork.Contains(ipaddress); } /// diff --git a/src/TestProject/EqualsUnitTest.cs b/src/TestProject/EqualsUnitTest.cs index 602c80ab..d0fa15f4 100644 --- a/src/TestProject/EqualsUnitTest.cs +++ b/src/TestProject/EqualsUnitTest.cs @@ -21,9 +21,8 @@ public void TestEquals_ipv6_ipv4_0() var network1 = IPNetwork2.Parse("::/32"); var network2 = IPNetwork2.Parse("0.0.0.0/32"); bool result = network1.Equals(network2); - bool expected = false; - Assert.AreEqual(expected, result, "equals"); + Assert.AreEqual(false, result, "equals"); } #endregion @@ -39,9 +38,8 @@ public void TestEquals_ipv4_1() var network1 = IPNetwork2.Parse("192.168.0.1/24"); var network2 = IPNetwork2.Parse("192.168.0.1/24"); bool result = network1.Equals(network2); - bool expected = true; - Assert.AreEqual(expected, result, "equals"); + Assert.AreEqual(true, result, "equals"); } /// @@ -53,9 +51,8 @@ public void TestEquals_ipv4_2() var network1 = IPNetwork2.Parse("192.168.0.1/24"); IPNetwork2 network2 = null; bool result = network1.Equals(network2); - bool expected = false; - Assert.AreEqual(expected, result, "equals"); + Assert.AreEqual(false, result, "equals"); } /// @@ -67,9 +64,8 @@ public void TestEquals_ipv4_3() var network1 = IPNetwork2.Parse("192.168.0.1/24"); object network2 = string.Empty; bool result = network1.Equals(network2); - bool expected = false; - Assert.AreEqual(expected, result, "equals"); + Assert.AreEqual(false, result, "equals"); } /// @@ -81,9 +77,8 @@ public void TestEquals_ipv4_4() var network1 = IPNetwork2.Parse("192.168.0.1/24"); var network2 = IPNetwork2.Parse("192.168.0.1/25"); bool result = network1.Equals(network2); - bool expected = false; - Assert.AreEqual(expected, result, "equals"); + Assert.AreEqual(false, result, "equals"); } /// @@ -95,9 +90,8 @@ public void TestEquals_ipv4_5() var network1 = IPNetwork2.Parse("192.168.0.1/24"); var network2 = IPNetwork2.Parse("192.168.1.1/24"); bool result = network1.Equals(network2); - bool expected = false; - Assert.AreEqual(expected, result, "equals"); + Assert.AreEqual(false, result, "equals"); } #endregion @@ -113,9 +107,8 @@ public void TestEquals_ipv6_1() var network1 = IPNetwork2.Parse("::1/128"); var network2 = IPNetwork2.Parse("::1/128"); bool result = network1.Equals(network2); - bool expected = true; - Assert.AreEqual(expected, result, "equals"); + Assert.AreEqual(true, result, "equals"); } /// @@ -127,9 +120,8 @@ public void TestEquals_ipv6_2() var network1 = IPNetwork2.Parse("::1/128"); IPNetwork2 network2 = null; bool result = network1.Equals(network2); - bool expected = false; - Assert.AreEqual(expected, result, "equals"); + Assert.AreEqual(false, result, "equals"); } /// @@ -141,9 +133,8 @@ public void TestEquals_ipv6_3() var network1 = IPNetwork2.Parse("::1/128"); object network2 = string.Empty; bool result = network1.Equals(network2); - bool expected = false; - Assert.AreEqual(expected, result, "equals"); + Assert.AreEqual(false, result, "equals"); } /// @@ -155,9 +146,8 @@ public void TestEquals_ipv6_4() var network1 = IPNetwork2.Parse("::1/128"); var network2 = IPNetwork2.Parse("::1/127"); bool result = network1.Equals(network2); - bool expected = false; - Assert.AreEqual(expected, result, "equals"); + Assert.AreEqual(false, result, "equals"); } /// @@ -169,9 +159,8 @@ public void TestEquals_ipv6_5() var network1 = IPNetwork2.Parse("::1/128"); var network2 = IPNetwork2.Parse("::10/128"); bool result = network1.Equals(network2); - bool expected = false; - Assert.AreEqual(expected, result, "equals"); + Assert.AreEqual(false, result, "equals"); } #endregion diff --git a/src/TestProject/IPAddressExtensionTests.cs b/src/TestProject/IPAddressExtensionTests.cs index d621963c..ec084766 100644 --- a/src/TestProject/IPAddressExtensionTests.cs +++ b/src/TestProject/IPAddressExtensionTests.cs @@ -19,30 +19,30 @@ public class IPAddressExtensionTests [TestMethod] public void IPAddressToIPNetwork_SingleAddress_IPv4() { - IPAddressToIPNetwork_SingleAddress_Internal( - 4, - "0.0.0.0", - "0.0.0.1", - "0.255.255.254", - "0.255.255.255", - "1.0.0.0", - "1.1.1.1", - "123.45.67.89", - "126.255.255.254", - "126.255.255.255", - "127.0.0.0", - "127.0.0.1", - "127.255.255.254", - "127.255.255.255", - "192.168.0.0", - "192.168.0.1", - "192.168.0.254", - "192.168.0.255", - "192.168.255.255", - "239.255.255.255", - "240.0.0.0", - "255.255.255.255"); - } + IPAddressToIPNetwork_SingleAddress_Internal( + 4, + "0.0.0.0", + "0.0.0.1", + "0.255.255.254", + "0.255.255.255", + "1.0.0.0", + "1.1.1.1", + "123.45.67.89", + "126.255.255.254", + "126.255.255.255", + "127.0.0.0", + "127.0.0.1", + "127.255.255.254", + "127.255.255.255", + "192.168.0.0", + "192.168.0.1", + "192.168.0.254", + "192.168.0.255", + "192.168.255.255", + "239.255.255.255", + "240.0.0.0", + "255.255.255.255"); + } /// /// Test converting a variety of IPv6 addreses into single-address networks. @@ -50,16 +50,16 @@ public void IPAddressToIPNetwork_SingleAddress_IPv4() [TestMethod] public void IPAddressToIPNetwork_SingleAddress_IPv6() { - IPAddressToIPNetwork_SingleAddress_Internal( - 16, - "::1", - "::", - "::1234:ABCD", - "1234::ABCD", - "1234:ABCD::", - "1:2:3:4:5:6:7:8", - "FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"); - } + IPAddressToIPNetwork_SingleAddress_Internal( + 16, + "::1", + "::", + "::1234:ABCD", + "1234::ABCD", + "1234:ABCD::", + "1:2:3:4:5:6:7:8", + "FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"); + } /// /// Shared test case, called upon by the above two test cases. @@ -70,22 +70,22 @@ private static void IPAddressToIPNetwork_SingleAddress_Internal( int byteCount, params string[] interestingAddrs) { - /* Start the collection of test cases with the addresses from the caller. */ - var addrs = interestingAddrs.ToList(); + /* Start the collection of test cases with the addresses from the caller. */ + var addrs = interestingAddrs.ToList(); - /* Populate with random but deterministic addresses. */ - addrs.AddRange(RandomIPs(byteCount)); + /* Populate with random but deterministic addresses. */ + addrs.AddRange(RandomIPs(byteCount)); - /* Loop through all of the test cases. */ - foreach (IPAddress ipAddr in addrs.Select(IPAddress.Parse)) - { - /* Convert to network, then pass the network object to a checker. */ - TestForSingleAddressNetwork( - ipAddr, - ipAddr.AsIPNetwork(), - byteCount * 8); - } + /* Loop through all of the test cases. */ + foreach (IPAddress ipAddr in addrs.Select(IPAddress.Parse)) + { + /* Convert to network, then pass the network object to a checker. */ + TestForSingleAddressNetwork( + ipAddr, + ipAddr.AsIPNetwork(), + byteCount * 8); } + } /// /// Generate random but deterministic IPs. @@ -94,38 +94,38 @@ private static void IPAddressToIPNetwork_SingleAddress_Internal( /// Collection of random IP addresses. private static IEnumerable RandomIPs(int byteCount) { - /* Start from a fixed starting byte array. - ng a GUID's bytes so the sequence will be unique, with the first - e XOR'd with the byte count so the two sequences will be different. */ - byte[] hashInput = Guid.Parse("12f2c3ba-7bd1-4ec3-922c-a5625b8f5dd5").ToByteArray(); - hashInput[0] ^= (byte)byteCount; + /* Start from a fixed starting byte array. + ng a GUID's bytes so the sequence will be unique, with the first + e XOR'd with the byte count so the two sequences will be different. */ + byte[] hashInput = Guid.Parse("12f2c3ba-7bd1-4ec3-922c-a5625b8f5dd5").ToByteArray(); + hashInput[0] ^= (byte)byteCount; - /* Loop many times. */ - foreach (int i in Enumerable.Range(1, 1000)) + /* Loop many times. */ + foreach (int i in Enumerable.Range(1, 1000)) + { + /* Hash the current interation to get a new block of deterministic bytes. */ + using (var hash = SHA256.Create()) { - /* Hash the current interation to get a new block of deterministic bytes. */ - using (var hash = SHA256.Create()) - { - hashInput = hash.ComputeHash(hashInput); - } - - /* Convert the first n bytes for an address. 4 will have an IPv4. 16 will make an IPv6. */ - yield return new IPAddress(hashInput.Take(byteCount).ToArray()).ToString(); + hashInput = hash.ComputeHash(hashInput); } + + /* Convert the first n bytes for an address. 4 will have an IPv4. 16 will make an IPv6. */ + yield return new IPAddress(hashInput.Take(byteCount).ToArray()).ToString(); } + } /// /// Test if a single address network is valid. /// /// Expected addresss. /// Actual network. - /// Expected CIDRsize. (32 or 128.) + /// Expected CIDRsize. (32 or 128). private static void TestForSingleAddressNetwork(IPAddress ipAddr, IPNetwork2 net, int expectedSize) { - Assert.AreEqual($"{ipAddr}/{expectedSize}", $"{net}"); - Assert.AreEqual(ipAddr, net.FirstUsable); - Assert.AreEqual(ipAddr, net.LastUsable); - Assert.AreEqual(1, net.Total); - Assert.AreEqual(expectedSize, net.Cidr); - } + Assert.AreEqual($"{ipAddr}/{expectedSize}", $"{net}"); + Assert.AreEqual(ipAddr, net.FirstUsable); + Assert.AreEqual(ipAddr, net.LastUsable); + Assert.AreEqual(1, net.Total); + Assert.AreEqual(expectedSize, net.Cidr); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkCollectionCtorTests.cs b/src/TestProject/IPNetworkCollectionCtorTests.cs index 58fdbea6..5487097c 100644 --- a/src/TestProject/IPNetworkCollectionCtorTests.cs +++ b/src/TestProject/IPNetworkCollectionCtorTests.cs @@ -5,7 +5,7 @@ namespace TestProject; /// -/// Test constructor af IPNetworkCollection +/// Test constructor af IPNetworkCollection. /// [TestClass] public class IPNetworkCollectionCtorTests @@ -17,7 +17,6 @@ public class IPNetworkCollectionCtorTests [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestCtor1() { - var ipn = new IPNetworkCollection(IPNetwork2.IANA_ABLK_RESERVED1, 33); } /// @@ -27,6 +26,5 @@ public void TestCtor1() [ExpectedException(typeof(ArgumentException))] public void TestCtor2() { - var ipn = new IPNetworkCollection(IPNetwork2.IANA_ABLK_RESERVED1, 2); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkCollectionCurrentTests.cs b/src/TestProject/IPNetworkCollectionCurrentTests.cs index 79ce1022..f76aeb73 100644 --- a/src/TestProject/IPNetworkCollectionCurrentTests.cs +++ b/src/TestProject/IPNetworkCollectionCurrentTests.cs @@ -5,7 +5,7 @@ namespace TestProject; /// -/// Test IPNetworkCollection Current +/// Test IPNetworkCollection Current. /// [TestClass] public class IPNetworkCollectionCurrentTests diff --git a/src/TestProject/IPNetworkTest/IPNetworkCompareTests.cs b/src/TestProject/IPNetworkTest/IPNetworkCompareTests.cs index 23761d6c..44c69748 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkCompareTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkCompareTests.cs @@ -76,7 +76,7 @@ public void TestCompareTo5() var ipn1 = IPNetwork2.Parse("10.0.0.1/16"); string ipn2 = string.Empty; - int comparison = ipn1.CompareTo(ipn2); + ipn1.CompareTo(ipn2); } /// diff --git a/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs index 402b1c1b..0d44fded 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs @@ -29,8 +29,6 @@ public void CtorWithIpAndCidr1() [ExpectedException(typeof(ArgumentNullException))] public void CtorWithIpAndCidr2() { - IPAddress ip = null; - var ipnetwork = new IPNetwork2(ip, 24); } /// @@ -42,6 +40,5 @@ public void CtorWithIpAndCidr3() { string ipaddress = "192.168.168.100"; var ip = IPAddress.Parse(ipaddress); - var ipnetwork = new IPNetwork2(ip, 33); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkExamplesTests.cs b/src/TestProject/IPNetworkTest/IPNetworkExamplesTests.cs index f9d80401..31e773ed 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkExamplesTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkExamplesTests.cs @@ -178,7 +178,7 @@ public void When_TrySupernet_192_168_0_0_cidr24_add_192_168_10_0_cidr24_Then_Sho var network = IPNetwork2.Parse("192.168.0.0/24"); var network2 = IPNetwork2.Parse("192.168.10.0/24"); - bool supernetted = network.TrySupernet(network2, out IPNetwork2 ipnetwork); + bool supernetted = network.TrySupernet(network2, out IPNetwork2 _); Assert.AreEqual(false, supernetted); } diff --git a/src/TestProject/IPNetworkTest/IPNetworkIanaBlocksTests.cs b/src/TestProject/IPNetworkTest/IPNetworkIanaBlocksTests.cs index 748010c7..022ff7e3 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkIanaBlocksTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkIanaBlocksTests.cs @@ -108,7 +108,7 @@ public void TestIana8() { IPNetwork2 ipnetwork = null; #pragma warning disable 0618 - bool result = IPNetwork2.IsIANAReserved(ipnetwork); + IPNetwork2.IsIANAReserved(ipnetwork); #pragma warning restore 0618 } diff --git a/src/TestProject/IPNetworkTest/IPNetworkOverlapTests.cs b/src/TestProject/IPNetworkTest/IPNetworkOverlapTests.cs index d5318f25..06734fde 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkOverlapTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkOverlapTests.cs @@ -21,7 +21,7 @@ public void TestOverlap1() IPNetwork2 network2 = null; #pragma warning disable 0618 - bool result = IPNetwork2.Overlap(network1, network2); + IPNetwork2.Overlap(network1, network2); #pragma warning restore 0618 } diff --git a/src/TestProject/IPNetworkTest/IPNetworkParseIpIpTests.cs b/src/TestProject/IPNetworkTest/IPNetworkParseIpIpTests.cs index 494bd0a5..f37fd280 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkParseIpIpTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkParseIpIpTests.cs @@ -5,7 +5,7 @@ namespace TestProject.IPNetworkTest; /// -/// Test parse ip +/// Test parse ip. /// [TestClass] public class IPNetworkParseIpIpTests @@ -33,7 +33,7 @@ public void ParseIpIp2() { IPAddress ip = null; IPAddress netm = null; - var ipnetwork = IPNetwork2.Parse(ip, netm); + IPNetwork2.Parse(ip, netm); } /// @@ -46,6 +46,6 @@ public void ParseIpIp3() string ipaddress = "192.168.168.100"; var ip = IPAddress.Parse(ipaddress); IPAddress netm = null; - var ipnetwork = IPNetwork2.Parse(ip, netm); + IPNetwork2.Parse(ip, netm); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkParseStringStringTests.cs b/src/TestProject/IPNetworkTest/IPNetworkParseStringStringTests.cs index 2d8e3ee0..eec473fc 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkParseStringStringTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkParseStringStringTests.cs @@ -33,7 +33,7 @@ public void TestParseStringString2() string ipaddress = null; string netmask = null; - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + IPNetwork2.Parse(ipaddress, netmask); } /// @@ -46,7 +46,7 @@ public void TestParseStringString3() string ipaddress = "192.168.168.100"; string netmask = null; - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + IPNetwork2.Parse(ipaddress, netmask); } /// @@ -59,7 +59,7 @@ public void TestParseStringString4() string ipaddress = string.Empty; string netmask = string.Empty; - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + IPNetwork2.Parse(ipaddress, netmask); } /// @@ -72,6 +72,6 @@ public void TestParseStringString5() string ipaddress = "192.168.168.100"; string netmask = string.Empty; - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + IPNetwork2.Parse(ipaddress, netmask); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkParseTests.cs b/src/TestProject/IPNetworkTest/IPNetworkParseTests.cs index a5b65cd3..97b32220 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkParseTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkParseTests.cs @@ -64,8 +64,8 @@ public void TestParseIPAddressNetmaskAne5() [ExpectedException(typeof(ArgumentException))] public void TestParseIPAddressNetmaskAne8() { - var ipnet = IPNetwork2.Parse("x.x.x.x", "x.x.x.x"); - } + IPNetwork2.Parse("x.x.x.x", "x.x.x.x"); + } /// /// Test. @@ -75,8 +75,8 @@ public void TestParseIPAddressNetmaskAne8() [ExpectedException(typeof(ArgumentException))] public void TestParseIPAddressNetmaskAne9() { - var ipnet = IPNetwork2.Parse("0.0.0.0", "x.x.x.x"); - } + IPNetwork2.Parse("0.0.0.0", "x.x.x.x"); + } /// /// Test. @@ -86,8 +86,8 @@ public void TestParseIPAddressNetmaskAne9() [ExpectedException(typeof(ArgumentException))] public void TestParseIPAddressNetmaskAne10() { - var ipnet = IPNetwork2.Parse("x.x.x.x", 0); - } + IPNetwork2.Parse("x.x.x.x", 0); + } /// /// Test. @@ -97,8 +97,8 @@ public void TestParseIPAddressNetmaskAne10() [ExpectedException(typeof(ArgumentException))] public void TestParseIPAddressNetmaskAne11() { - var ipnet = IPNetwork2.Parse("0.0.0.0", 33); - } + IPNetwork2.Parse("0.0.0.0", 33); + } /// /// Tests Parse functionality with Parse IPAddress Netmask. @@ -565,8 +565,7 @@ public void TestParseIPAddressNoNetmask5() public void TestParseIPAddressNoNetmask127001() { string ipaddress = "127.0.0.1"; - IPNetwork2 result = null; - IPNetwork2.TryParse(ipaddress, out result); + IPNetwork2.TryParse(ipaddress, out IPNetwork2 result); Assert.AreEqual(result.Cidr, 8); } @@ -577,9 +576,9 @@ public void TestParseIPAddressNoNetmask127001() [ExpectedException(typeof(ArgumentException))] public void TestParseStringAe1() { - string ipaddress = "garbage"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - } + string ipaddress = "garbage"; + IPNetwork2.Parse(ipaddress); + } /// /// Test. @@ -588,9 +587,9 @@ public void TestParseStringAe1() [ExpectedException(typeof(ArgumentException))] public void TestParseStringAe2() { - string ipaddress = "0.0.0.0 0.0.1.0"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - } + string ipaddress = "0.0.0.0 0.0.1.0"; + IPNetwork2.Parse(ipaddress); + } /// /// Test. @@ -599,7 +598,7 @@ public void TestParseStringAe2() [ExpectedException(typeof(ArgumentNullException))] public void TestParseStringAne1() { - string ipaddress = null; - var ipnetwork = IPNetwork2.Parse(ipaddress); - } + string ipaddress = null; + IPNetwork2.Parse(ipaddress); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkPrintTests.cs b/src/TestProject/IPNetworkTest/IPNetworkPrintTests.cs index 017552fc..517ee119 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkPrintTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkPrintTests.cs @@ -38,11 +38,11 @@ public void Print() [ExpectedException(typeof(ArgumentNullException))] public void PrintNull() { - IPNetwork2 ipn = null; + IPNetwork2 ipn = null; #pragma warning disable 0618 - string print = IPNetwork2.Print(ipn); + IPNetwork2.Print(ipn); #pragma warning restore 0618 - } + } /// /// Tests Print functionality. @@ -50,9 +50,9 @@ public void PrintNull() [TestMethod] public void PrintStatic() { - IPNetwork2 ipn = IPNetwork2.IANA_ABLK_RESERVED1; + IPNetwork2 ipn = IPNetwork2.IANA_ABLK_RESERVED1; #pragma warning disable 0618 - string print = IPNetwork2.Print(ipn); + IPNetwork2.Print(ipn); #pragma warning restore 0618 - } + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs b/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs index 0e7fadd2..9b15ddca 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs @@ -17,6 +17,6 @@ public class IPNetworkResizeTests [ExpectedException(typeof(ArgumentException))] public void TestResize1() { - byte[] resut = IPNetwork2.Resize(new byte[33], AddressFamily.InterNetwork); - } + IPNetwork2.Resize(new byte[33], AddressFamily.InterNetwork); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkSortTests.cs b/src/TestProject/IPNetworkTest/IPNetworkSortTests.cs index c1de933d..1ef4bf9b 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkSortTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkSortTests.cs @@ -20,8 +20,7 @@ public void TestSort1() var ipns = new List(); foreach (string ip in ips) { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) + if (IPNetwork2.TryParse(ip, 32, out IPNetwork2 ipn)) { ipns.Add(ipn); } @@ -44,8 +43,7 @@ public void TestSort2() var ipns = new List(); foreach (string ip in ips) { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, out ipn)) + if (IPNetwork2.TryParse(ip, out IPNetwork2 ipn)) { ipns.Add(ipn); } diff --git a/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs index 7b0fc6cc..70203881 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs @@ -21,7 +21,7 @@ public void TestSubnet1() byte cidr = 9; #pragma warning disable 0618 - IPNetworkCollection result = IPNetwork2.Subnet(ipnetwork, cidr); + IPNetwork2.Subnet(ipnetwork, cidr); #pragma warning restore 0618 } @@ -35,7 +35,7 @@ public void TestSubnetStatic1() byte cidr = 9; #pragma warning disable 0618 - IPNetworkCollection result = IPNetwork2.Subnet(ipnetwork, cidr); + IPNetwork2.Subnet(ipnetwork, cidr); #pragma warning restore 0618 } @@ -49,7 +49,7 @@ public void TestSubnet3() IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; byte cidr = 55; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + ipnetwork.Subnet(cidr); } /// @@ -62,7 +62,7 @@ public void TestSubnet4() IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; byte cidr = 1; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + ipnetwork.Subnet(cidr); } /// @@ -218,6 +218,5 @@ public void TestSubnet13() IPNetwork2 ipnetwork = IPNetwork2.IANA_CBLK_RESERVED1; byte cidr = 20; IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - IPNetwork2 error = subnets[1000]; - } + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkSupernetArrayTests.cs b/src/TestProject/IPNetworkTest/IPNetworkSupernetArrayTests.cs index 089410a0..53db8b5c 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkSupernetArrayTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkSupernetArrayTests.cs @@ -51,9 +51,9 @@ public void TestTrySupernetArray1() [ExpectedException(typeof(ArgumentNullException))] public void TestTrySupernetArray2() { - IPNetwork2[] ipnetworks = null; - IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); - } + IPNetwork2[] ipnetworks = null; + IPNetwork2.Supernet(ipnetworks); + } /// /// Tests Supernet Array functionality with Try Supernet Array3. diff --git a/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs index b35b19b4..4266043a 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs @@ -16,8 +16,7 @@ public class IPNetworkSupernetTests [TestMethod] public void TestSupernetInternal1() { - IPNetwork2 result; - IPNetwork2.InternalSupernet(true, null, null, out result); + IPNetwork2.InternalSupernet(true, null, null, out IPNetwork2 result); Assert.AreEqual(null, result, "supernet"); } @@ -101,7 +100,7 @@ public void TestSupernet2() { IPNetwork2 network1 = null; var network2 = IPNetwork2.Parse("192.168.1.1/24"); - IPNetwork2 supernet = network1.Supernet(network2); + network1.Supernet(network2); } /// @@ -113,7 +112,7 @@ public void TestSupernet3() { var network1 = IPNetwork2.Parse("192.168.1.1/24"); IPNetwork2 network2 = null; - IPNetwork2 supernet = network1.Supernet(network2); + network1.Supernet(network2); } /// @@ -125,7 +124,7 @@ public void TestSupernet4() { var network1 = IPNetwork2.Parse("192.168.0.1/24"); var network2 = IPNetwork2.Parse("192.168.1.1/25"); - IPNetwork2 supernet = network1.Supernet(network2); + network1.Supernet(network2); } /// @@ -137,7 +136,7 @@ public void TestSupernet5() { var network1 = IPNetwork2.Parse("192.168.0.1/24"); var network2 = IPNetwork2.Parse("192.168.5.1/24"); - IPNetwork2 supernet = network1.Supernet(network2); + network1.Supernet(network2); } /// @@ -193,7 +192,7 @@ public void TestSupernet8() { var network1 = IPNetwork2.Parse("192.168.1.1/24"); var network2 = IPNetwork2.Parse("192.168.2.1/24"); - IPNetwork2 supernet = network1.Supernet(network2); + network1.Supernet(network2); } /// diff --git a/src/TestProject/IPNetworkTest/IPNetworkToBigIntegerTests.cs b/src/TestProject/IPNetworkTest/IPNetworkToBigIntegerTests.cs index 2be7bc55..c25783a4 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkToBigIntegerTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkToBigIntegerTests.cs @@ -16,12 +16,12 @@ public class IPNetworkToBigIntegerTests [TestMethod] public void TestToBigInteger32() { - var mask = IPAddress.Parse("255.255.255.255"); - uint uintMask = 0xffffffff; - var result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("255.255.255.255"); + uint uintMask = 0xffffffff; + var result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } /// /// Tests To Big Integer functionality with To Big Integer24. @@ -29,12 +29,12 @@ public void TestToBigInteger32() [TestMethod] public void TestToBigInteger24() { - var mask = IPAddress.Parse("255.255.255.0"); - uint uintMask = 0xffffff00; - BigInteger? result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("255.255.255.0"); + uint uintMask = 0xffffff00; + BigInteger? result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } /// /// Tests To Big Integer functionality with To Big Integer16. @@ -42,12 +42,12 @@ public void TestToBigInteger24() [TestMethod] public void TestToBigInteger16() { - var mask = IPAddress.Parse("255.255.0.0"); - uint uintMask = 0xffff0000; - BigInteger? result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("255.255.0.0"); + uint uintMask = 0xffff0000; + BigInteger? result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } /// /// Tests To Big Integer functionality with To Big Integer8. @@ -55,12 +55,12 @@ public void TestToBigInteger16() [TestMethod] public void TestToBigInteger8() { - var mask = IPAddress.Parse("255.0.0.0"); - uint uintMask = 0xff000000; - BigInteger? result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("255.0.0.0"); + uint uintMask = 0xff000000; + BigInteger? result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } /// /// Tests To Big Integer functionality with To Big Integer0. @@ -68,12 +68,12 @@ public void TestToBigInteger8() [TestMethod] public void TestToBigInteger0() { - var mask = IPAddress.Parse("0.0.0.0"); - uint uintMask = 0x00000000; - BigInteger? result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("0.0.0.0"); + uint uintMask = 0x00000000; + BigInteger? result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } /// /// Try to convert from null. @@ -82,8 +82,8 @@ public void TestToBigInteger0() [ExpectedException(typeof(ArgumentNullException))] public void TestToBigIntegerAne() { - BigInteger? result = IPNetwork2.ToBigInteger(null); - } + IPNetwork2.ToBigInteger(null); + } /// /// Try to convert from null IPAddress. @@ -92,9 +92,9 @@ public void TestToBigIntegerAne() [ExpectedException(typeof(ArgumentNullException))] public void TestToBigIntegerAne3() { - IPAddress ip = null; - BigInteger? result = IPNetwork2.ToBigInteger(ip); - } + IPAddress ip = null; + IPNetwork2.ToBigInteger(ip); + } /// /// Tests To Big Integer functionality with To Big Integer ANE2. @@ -102,10 +102,10 @@ public void TestToBigIntegerAne3() [TestMethod] public void TestToBigIntegerAne2() { - BigInteger? result = IPNetwork2.ToBigInteger(IPAddress.IPv6Any); - uint expected = 0; - Assert.AreEqual(expected, result, "result"); - } + BigInteger? result = IPNetwork2.ToBigInteger(IPAddress.IPv6Any); + uint expected = 0; + Assert.AreEqual(expected, result, "result"); + } /// /// Try to convert from invalid cidr. @@ -114,8 +114,8 @@ public void TestToBigIntegerAne2() [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestToBigIntegerByte() { - BigInteger result = IPNetwork2.ToUint(33, AddressFamily.InterNetwork); - } + IPNetwork2.ToUint(33, AddressFamily.InterNetwork); + } /// /// Tests To Big Integer functionality with To Big Integer Byte2. @@ -123,10 +123,10 @@ public void TestToBigIntegerByte() [TestMethod] public void TestToBigIntegerByte2() { - BigInteger result = IPNetwork2.ToUint(32, AddressFamily.InterNetwork); - uint expected = 4294967295; - Assert.AreEqual(expected, result, "result"); - } + BigInteger result = IPNetwork2.ToUint(32, AddressFamily.InterNetwork); + uint expected = 4294967295; + Assert.AreEqual(expected, result, "result"); + } /// /// Tests To Big Integer functionality with To Big Integer Byte3. @@ -134,10 +134,10 @@ public void TestToBigIntegerByte2() [TestMethod] public void TestToBigIntegerByte3() { - BigInteger result = IPNetwork2.ToUint(0, AddressFamily.InterNetwork); - uint expected = 0; - Assert.AreEqual(expected, result, "result"); - } + BigInteger result = IPNetwork2.ToUint(0, AddressFamily.InterNetwork); + uint expected = 0; + Assert.AreEqual(expected, result, "result"); + } /// /// Tests To Big Integer functionality with To Big Integer Internal1. @@ -145,10 +145,9 @@ public void TestToBigIntegerByte3() [TestMethod] public void TestToBigIntegerInternal1() { - BigInteger? result = null; - IPNetwork2.InternalToBigInteger(true, 33, AddressFamily.InterNetwork, out result); - Assert.AreEqual(null, result, "result"); - } + IPNetwork2.InternalToBigInteger(true, 33, AddressFamily.InterNetwork, out BigInteger? result); + Assert.AreEqual(null, result, "result"); + } /// /// Tests To Big Integer functionality with To Big Integer Internal2. @@ -156,10 +155,9 @@ public void TestToBigIntegerInternal1() [TestMethod] public void TestToBigIntegerInternal2() { - BigInteger? result = null; - IPNetwork2.InternalToBigInteger(true, 129, AddressFamily.InterNetworkV6, out result); - Assert.AreEqual(null, result, "result"); - } + IPNetwork2.InternalToBigInteger(true, 129, AddressFamily.InterNetworkV6, out BigInteger? result); + Assert.AreEqual(null, result, "result"); + } /// /// Try to convert from invalid IPV6 cidr. @@ -168,9 +166,8 @@ public void TestToBigIntegerInternal2() [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestToBigIntegerInternal3() { - BigInteger? result = null; - IPNetwork2.InternalToBigInteger(false, 129, AddressFamily.InterNetworkV6, out result); - } + IPNetwork2.InternalToBigInteger(false, 129, AddressFamily.InterNetworkV6, out BigInteger? _); + } /// /// Try to convert from invalid AddressFamily. @@ -179,9 +176,8 @@ public void TestToBigIntegerInternal3() [ExpectedException(typeof(NotSupportedException))] public void TestToBigIntegerInternal4() { - BigInteger? result = null; - IPNetwork2.InternalToBigInteger(false, 32, AddressFamily.AppleTalk, out result); - } + IPNetwork2.InternalToBigInteger(false, 32, AddressFamily.AppleTalk, out BigInteger? _); + } /// /// Tests To Big Integer functionality with To Big Integer Internal5. @@ -189,8 +185,7 @@ public void TestToBigIntegerInternal4() [TestMethod] public void TestToBigIntegerInternal5() { - BigInteger? result = null; - IPNetwork2.InternalToBigInteger(true, 32, AddressFamily.AppleTalk, out result); - Assert.AreEqual(null, result, "result"); - } + IPNetwork2.InternalToBigInteger(true, 32, AddressFamily.AppleTalk, out BigInteger? result); + Assert.AreEqual(null, result, "result"); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkToIPAddressTests.cs b/src/TestProject/IPNetworkTest/IPNetworkToIPAddressTests.cs index e6a0534e..2f5613bb 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkToIPAddressTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkToIPAddressTests.cs @@ -28,9 +28,9 @@ public void TestToIPAddress() [ExpectedException(typeof(ArgumentException))] public void TestToIPAddress2() { - var ip = new BigInteger(0); - var result = IPNetwork2.ToIPAddress(ip, AddressFamily.AppleTalk); - } + var ip = new BigInteger(0); + IPNetwork2.ToIPAddress(ip, AddressFamily.AppleTalk); + } /// /// Test. @@ -39,7 +39,7 @@ public void TestToIPAddress2() [ExpectedException(typeof(ArgumentException))] public void TestToIPAddress3() { - var ip = new BigInteger(new byte[] + var ip = new BigInteger(new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -51,6 +51,6 @@ public void TestToIPAddress3() 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }); - var result = IPNetwork2.ToIPAddress(ip, AddressFamily.AppleTalk); - } + IPNetwork2.ToIPAddress(ip, AddressFamily.AppleTalk); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkToNetmaskTests.cs b/src/TestProject/IPNetworkTest/IPNetworkToNetmaskTests.cs index 62201ca9..5f9465f1 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkToNetmaskTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkToNetmaskTests.cs @@ -31,7 +31,7 @@ public void ToNetmask32() public void ToNetmaskNonInet() { byte cidr = 0; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.AppleTalk).ToString(); + IPNetwork2.ToNetmask(cidr, AddressFamily.AppleTalk); } /// @@ -43,18 +43,18 @@ public void ToNetmaskNegative() { byte cidr = 0; cidr--; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); + IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork); } /// - /// Test with too big of a cidr + /// Test with too big of a cidr. /// [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void ToNetmaskOore1() { byte cidr = 33; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); + IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork); } /// @@ -63,8 +63,7 @@ public void ToNetmaskOore1() [TestMethod] public void ToNetmaskInternal1() { - IPAddress result; - IPNetwork2.InternalToNetmask(true, 0, AddressFamily.AppleTalk, out result); + IPNetwork2.InternalToNetmask(true, 0, AddressFamily.AppleTalk, out IPAddress result); Assert.AreEqual(null, result); } diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryGuessCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryGuessCidrTests.cs index 4590f319..ee3fe6bd 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryGuessCidrTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryGuessCidrTests.cs @@ -16,12 +16,11 @@ public class IPNetworkTryGuessCidrTests [TestMethod] public void TestTryGuessCidrNull() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr(null, out cidr); + bool parsed = IPNetwork2.TryGuessCidr(null, out byte cidr); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(0, cidr, "cidr"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(0, cidr, "cidr"); + } /// /// Tests Try Guess Cidr functionality with Try Guess Cidr A. @@ -29,12 +28,11 @@ public void TestTryGuessCidrNull() [TestMethod] public void TestTryGuessCidrA() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("10.0.0.0", out cidr); + bool parsed = IPNetwork2.TryGuessCidr("10.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(8, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(8, cidr, "cidr"); + } /// /// Tests Try Guess Cidr functionality with Try Guess Cidr B. @@ -42,12 +40,11 @@ public void TestTryGuessCidrA() [TestMethod] public void TestTryGuessCidrB() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("172.0.0.0", out cidr); + bool parsed = IPNetwork2.TryGuessCidr("172.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(16, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(16, cidr, "cidr"); + } /// /// Tests Try Guess Cidr functionality with Try Guess Cidr C. @@ -55,12 +52,11 @@ public void TestTryGuessCidrB() [TestMethod] public void TestTryGuessCidrC() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("192.0.0.0", out cidr); + bool parsed = IPNetwork2.TryGuessCidr("192.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(24, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(24, cidr, "cidr"); + } /// /// Tests Try Guess Cidr functionality with Try Guess Cidr D. @@ -68,12 +64,11 @@ public void TestTryGuessCidrC() [TestMethod] public void TestTryGuessCidrD() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("224.0.0.0", out cidr); + bool parsed = IPNetwork2.TryGuessCidr("224.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(24, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(24, cidr, "cidr"); + } /// /// Tests Try Guess Cidr functionality with Try Guess Cidr E. @@ -81,10 +76,9 @@ public void TestTryGuessCidrD() [TestMethod] public void TestTryGuessCidrE() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("240.0.0.0", out cidr); + bool parsed = IPNetwork2.TryGuessCidr("240.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(24, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(24, cidr, "cidr"); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryParseCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryParseCidrTests.cs index d2b2003a..a14291ee 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryParseCidrTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryParseCidrTests.cs @@ -17,9 +17,8 @@ public class IPNetworkTryParseCidrTests public void TryParseCidr1() { string sidr = "0"; - byte? cidr; byte? result = 0; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetwork, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetwork, out byte? cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); @@ -32,10 +31,9 @@ public void TryParseCidr1() public void TryParseCidr2() { string sidr = "sadsd"; - byte? cidr; byte? result = null; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetwork, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetwork, out byte? cidr); Assert.AreEqual(false, parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); @@ -48,10 +46,9 @@ public void TryParseCidr2() public void TryParseCidr3() { string sidr = "33"; - byte? cidr; byte? result = null; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetwork, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetwork, out byte? cidr); Assert.AreEqual(false, parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs index 6ed27924..fee8caf7 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs @@ -16,13 +16,12 @@ public class IPNetworkTryParseTests [TestMethod] public void TestTryParseIPAddressNetmaskAne2() { - IPNetwork2 ipnet = null; - IPAddress ip = null; - bool parsed = IPNetwork2.TryParse(ip, ip, out ipnet); + IPAddress ip = null; + bool parsed = IPNetwork2.TryParse(ip, ip, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE3. @@ -30,12 +29,11 @@ public void TestTryParseIPAddressNetmaskAne2() [TestMethod] public void TestTryParseIPAddressNetmaskAne3() { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse(string.Empty, 0, out ipnet); + bool parsed = IPNetwork2.TryParse(string.Empty, 0, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE4. @@ -43,12 +41,11 @@ public void TestTryParseIPAddressNetmaskAne3() [TestMethod] public void TestTryParseIPAddressNetmaskAne4() { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse(null, 0, out ipnet); + bool parsed = IPNetwork2.TryParse(null, 0, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE5. @@ -56,13 +53,12 @@ public void TestTryParseIPAddressNetmaskAne4() [TestMethod] public void TestTryParseIPAddressNetmaskAne5() { - string n = null; - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse(n, n, out ipnet); + string n = null; + bool parsed = IPNetwork2.TryParse(n, n, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE6. @@ -70,11 +66,10 @@ public void TestTryParseIPAddressNetmaskAne5() [TestMethod] public void TestTryParseIPAddressNetmaskAne6() { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse(IPAddress.Parse("10.10.10.10"), null, out ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + bool parsed = IPNetwork2.TryParse(IPAddress.Parse("10.10.10.10"), null, out IPNetwork2 ipnet); + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE7. @@ -82,12 +77,11 @@ public void TestTryParseIPAddressNetmaskAne6() [TestMethod] public void TestTryParseIPAddressNetmaskAne7() { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse("0.0.0.0", netmask: null, out ipnet); + bool parsed = IPNetwork2.TryParse("0.0.0.0", netmask: null, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE8. @@ -95,12 +89,11 @@ public void TestTryParseIPAddressNetmaskAne7() [TestMethod] public void TestTryParseIPAddressNetmaskAne8() { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse("x.x.x.x", "x.x.x.x", out ipnet); + bool parsed = IPNetwork2.TryParse("x.x.x.x", "x.x.x.x", out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE9. @@ -108,12 +101,11 @@ public void TestTryParseIPAddressNetmaskAne8() [TestMethod] public void TestTryParseIPAddressNetmaskAne9() { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse("0.0.0.0", "x.x.x.x", out ipnet); + bool parsed = IPNetwork2.TryParse("0.0.0.0", "x.x.x.x", out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE10. @@ -121,12 +113,11 @@ public void TestTryParseIPAddressNetmaskAne9() [TestMethod] public void TestTryParseIPAddressNetmaskAne10() { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse("x.x.x.x", 0, out ipnet); + bool parsed = IPNetwork2.TryParse("x.x.x.x", 0, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE11. @@ -134,12 +125,11 @@ public void TestTryParseIPAddressNetmaskAne10() [TestMethod] public void TestTryParseIPAddressNetmaskAne11() { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse("0.0.0.0", 33, out ipnet); + bool parsed = IPNetwork2.TryParse("0.0.0.0", 33, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Tests Try Parse functionality with Try Parse IPAddress Netmask. @@ -147,27 +137,26 @@ public void TestTryParseIPAddressNetmaskAne11() [TestMethod] public void TestTryParseIPAddressNetmask() { - IPNetwork2 ipnetwork = null; - string ipaddress = "192.168.168.100"; - string netmask = "255.255.255.0"; - - string network = "192.168.168.0"; - string broadcast = "192.168.168.255"; - string firstUsable = "192.168.168.1"; - string lastUsable = "192.168.168.254"; - byte cidr = 24; - uint usable = 254; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "192.168.168.100"; + string netmask = "255.255.255.0"; + + string network = "192.168.168.0"; + string broadcast = "192.168.168.255"; + string firstUsable = "192.168.168.1"; + string lastUsable = "192.168.168.254"; + byte cidr = 24; + uint usable = 254; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Tests Try Parse functionality with Try Parse String1. @@ -175,27 +164,26 @@ public void TestTryParseIPAddressNetmask() [TestMethod] public void TestTryParseString1() { - IPNetwork2 ipnetwork = null; - string ipaddress = "192.168.168.100 255.255.255.0"; - - string network = "192.168.168.0"; - string netmask = "255.255.255.0"; - string broadcast = "192.168.168.255"; - string firstUsable = "192.168.168.1"; - string lastUsable = "192.168.168.254"; - byte cidr = 24; - uint usable = 254; - - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "192.168.168.100 255.255.255.0"; + + string network = "192.168.168.0"; + string netmask = "255.255.255.0"; + string broadcast = "192.168.168.255"; + string firstUsable = "192.168.168.1"; + string lastUsable = "192.168.168.254"; + byte cidr = 24; + uint usable = 254; + + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Tests Try Parse functionality with Try Parse String2. @@ -203,27 +191,26 @@ public void TestTryParseString1() [TestMethod] public void TestTryParseString2() { - IPNetwork2 ipnetwork = null; - string ipaddress = "192.168.168.100/24"; - - string network = "192.168.168.0"; - string netmask = "255.255.255.0"; - string broadcast = "192.168.168.255"; - string firstUsable = "192.168.168.1"; - string lastUsable = "192.168.168.254"; - byte cidr = 24; - uint usable = 254; - - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "192.168.168.100/24"; + + string network = "192.168.168.0"; + string netmask = "255.255.255.0"; + string broadcast = "192.168.168.255"; + string firstUsable = "192.168.168.1"; + string lastUsable = "192.168.168.254"; + byte cidr = 24; + uint usable = 254; + + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Tests Try Parse functionality with Try Parse String3. @@ -231,27 +218,26 @@ public void TestTryParseString2() [TestMethod] public void TestTryParseString3() { - IPNetwork2 ipnetwork = null; - string ipaddress = "0.0.0.0/0"; - - string network = "0.0.0.0"; - string netmask = "0.0.0.0"; - string broadcast = "255.255.255.255"; - string firstUsable = "0.0.0.1"; - string lastUsable = "255.255.255.254"; - byte cidr = 0; - uint usable = 4294967294; - - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "0.0.0.0/0"; + + string network = "0.0.0.0"; + string netmask = "0.0.0.0"; + string broadcast = "255.255.255.255"; + string firstUsable = "0.0.0.1"; + string lastUsable = "255.255.255.254"; + byte cidr = 0; + uint usable = 4294967294; + + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Tests Try Parse functionality with Try Parse String4. @@ -259,27 +245,26 @@ public void TestTryParseString3() [TestMethod] public void TestTryParseString4() { - IPNetwork2 ipnetwork = null; - string ipaddress = "0.0.0.0/32"; - - string network = "0.0.0.0"; - string netmask = "255.255.255.255"; - string broadcast = "0.0.0.0"; - string firstUsable = "0.0.0.0"; - string lastUsable = "0.0.0.0"; - byte cidr = 32; - uint usable = 0; - - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "0.0.0.0/32"; + + string network = "0.0.0.0"; + string netmask = "255.255.255.255"; + string broadcast = "0.0.0.0"; + string firstUsable = "0.0.0.0"; + string lastUsable = "0.0.0.0"; + byte cidr = 32; + uint usable = 0; + + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Tests Try Parse functionality with Try Parse String5. @@ -287,27 +272,26 @@ public void TestTryParseString4() [TestMethod] public void TestTryParseString5() { - IPNetwork2 ipnetwork = null; - string ipaddress = "255.255.255.255/32"; - - string network = "255.255.255.255"; - string netmask = "255.255.255.255"; - string broadcast = "255.255.255.255"; - string firstUsable = "255.255.255.255"; - string lastUsable = "255.255.255.255"; - byte cidr = 32; - uint usable = 0; - - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "255.255.255.255/32"; + + string network = "255.255.255.255"; + string netmask = "255.255.255.255"; + string broadcast = "255.255.255.255"; + string firstUsable = "255.255.255.255"; + string lastUsable = "255.255.255.255"; + byte cidr = 32; + uint usable = 0; + + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Tests Try Parse functionality with Try Parse String AE1. @@ -315,11 +299,10 @@ public void TestTryParseString5() [TestMethod] public void TestTryParseStringAe1() { - string ipaddress = "garbage"; - IPNetwork2 ipnetwork = null; - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(false, parsed, "parsed"); - } + string ipaddress = "garbage"; + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 _); + Assert.AreEqual(false, parsed, "parsed"); + } /// /// Tests Try Parse functionality with Try Parse String AE2. @@ -327,11 +310,9 @@ public void TestTryParseStringAe1() [TestMethod] public void TestTryParseStringAe2() { - string ipaddress = "0.0.0.0 0.0.1.0"; - IPNetwork2 ipnetwork = null; - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(false, parsed, "parsed"); - } + bool parsed = IPNetwork2.TryParse("0.0.0.0 0.0.1.0", out IPNetwork2 _); + Assert.AreEqual(false, parsed, "parsed"); + } /// /// Tests Try Parse functionality with Try Parse String ANE1. @@ -339,9 +320,7 @@ public void TestTryParseStringAe2() [TestMethod] public void TestTryParseStringAne1() { - string ipaddress = null; - IPNetwork2 ipnetwork = null; - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(false, parsed, "parsed"); - } + bool parsed = IPNetwork2.TryParse(null, out IPNetwork2 _); + Assert.AreEqual(false, parsed, "parsed"); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTrySubnetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTrySubnetTests.cs index 5df0f416..44d1d298 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTrySubnetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTrySubnetTests.cs @@ -16,10 +16,9 @@ public class IPNetworkTrySubnetTests [TestMethod] public void TestInternalSubnet1() { - IPNetworkCollection subnets = null; - IPNetwork2.InternalSubnet(true, null, 0, out subnets); - Assert.AreEqual(null, subnets, "subnets"); - } + IPNetwork2.InternalSubnet(true, null, 0, out IPNetworkCollection subnets); + Assert.AreEqual(null, subnets, "subnets"); + } /// /// Test a null collection. @@ -28,24 +27,20 @@ public void TestInternalSubnet1() [ExpectedException(typeof(ArgumentNullException))] public void TestInternalSubnet2() { - IPNetworkCollection subnets = null; - IPNetwork2.InternalSubnet(false, null, 0, out subnets); - } + IPNetwork2.InternalSubnet(false, null, 0, out IPNetworkCollection _); + } /// - /// Test a null network + /// Test a null network. /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestTrySubnet1() { - IPNetwork2 ipnetwork = null; - byte cidr = 9; - #pragma warning disable 0618 - bool subnetted = IPNetwork2.TrySubnet(ipnetwork, cidr, out var _); + IPNetwork2.TrySubnet(null, 9, out var _); #pragma warning restore 0618 - } + } /// /// Tests Try Subnet functionality with Try Subnet Static1. @@ -53,14 +48,13 @@ public void TestTrySubnet1() [TestMethod] public void TestTrySubnetStatic1() { - IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; - byte cidr = 9; + IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; + byte cidr = 9; - IPNetworkCollection subnets = null; #pragma warning disable 0618 - bool subnetted = IPNetwork2.TrySubnet(ipnetwork, cidr, out subnets); + IPNetwork2.TrySubnet(ipnetwork, cidr, out IPNetworkCollection _); #pragma warning restore 0618 - } + } /// /// Tests Try Subnet functionality with Try Subnet3. @@ -68,14 +62,13 @@ public void TestTrySubnetStatic1() [TestMethod] public void TestTrySubnet3() { - IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; - byte cidr = 55; + IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; + byte cidr = 55; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection _); - Assert.AreEqual(false, subnetted, "subnetted"); - } + Assert.AreEqual(false, subnetted, "subnetted"); + } /// /// Tests Try Subnet functionality with Try Subnet4. @@ -83,14 +76,13 @@ public void TestTrySubnet3() [TestMethod] public void TestTrySubnet4() { - IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; - byte cidr = 1; + IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; + byte cidr = 1; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection _); - Assert.AreEqual(false, subnetted, "subnetted"); - } + Assert.AreEqual(false, subnetted, "subnetted"); + } /// /// Tests Try Subnet functionality with Try Subnet5. @@ -98,17 +90,16 @@ public void TestTrySubnet4() [TestMethod] public void TestTrySubnet5() { - IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; - byte cidr = 9; + IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; + byte cidr = 9; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection subnets); - Assert.AreEqual(true, subnetted, "subnetted"); - Assert.AreEqual(2, subnets.Count, "count"); - Assert.AreEqual("10.0.0.0/9", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("10.128.0.0/9", subnets[1].ToString(), "subnet2"); - } + Assert.AreEqual(true, subnetted, "subnetted"); + Assert.AreEqual(2, subnets.Count, "count"); + Assert.AreEqual("10.0.0.0/9", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("10.128.0.0/9", subnets[1].ToString(), "subnet2"); + } /// /// Tests Try Subnet functionality with Try Subnet6. @@ -116,29 +107,28 @@ public void TestTrySubnet5() [TestMethod] public void TestTrySubnet6() { - IPNetwork2 ipnetwork = IPNetwork2.IANA_CBLK_RESERVED1; - byte cidr = 20; - - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); - - Assert.AreEqual(true, subnetted, "subnetted"); - Assert.AreEqual(16, subnets.Count, "count"); - Assert.AreEqual("192.168.0.0/20", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("192.168.16.0/20", subnets[1].ToString(), "subnet2"); - Assert.AreEqual("192.168.32.0/20", subnets[2].ToString(), "subnet3"); - Assert.AreEqual("192.168.48.0/20", subnets[3].ToString(), "subnet4"); - Assert.AreEqual("192.168.64.0/20", subnets[4].ToString(), "subnet5"); - Assert.AreEqual("192.168.80.0/20", subnets[5].ToString(), "subnet6"); - Assert.AreEqual("192.168.96.0/20", subnets[6].ToString(), "subnet7"); - Assert.AreEqual("192.168.112.0/20", subnets[7].ToString(), "subnet8"); - Assert.AreEqual("192.168.128.0/20", subnets[8].ToString(), "subnet9"); - Assert.AreEqual("192.168.144.0/20", subnets[9].ToString(), "subnet10"); - Assert.AreEqual("192.168.160.0/20", subnets[10].ToString(), "subnet11"); - Assert.AreEqual("192.168.176.0/20", subnets[11].ToString(), "subnet12"); - Assert.AreEqual("192.168.192.0/20", subnets[12].ToString(), "subnet13"); - Assert.AreEqual("192.168.208.0/20", subnets[13].ToString(), "subnet14"); - Assert.AreEqual("192.168.224.0/20", subnets[14].ToString(), "subnet15"); - Assert.AreEqual("192.168.240.0/20", subnets[15].ToString(), "subnet16"); - } + IPNetwork2 ipnetwork = IPNetwork2.IANA_CBLK_RESERVED1; + byte cidr = 20; + + bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection subnets); + + Assert.AreEqual(true, subnetted, "subnetted"); + Assert.AreEqual(16, subnets.Count, "count"); + Assert.AreEqual("192.168.0.0/20", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("192.168.16.0/20", subnets[1].ToString(), "subnet2"); + Assert.AreEqual("192.168.32.0/20", subnets[2].ToString(), "subnet3"); + Assert.AreEqual("192.168.48.0/20", subnets[3].ToString(), "subnet4"); + Assert.AreEqual("192.168.64.0/20", subnets[4].ToString(), "subnet5"); + Assert.AreEqual("192.168.80.0/20", subnets[5].ToString(), "subnet6"); + Assert.AreEqual("192.168.96.0/20", subnets[6].ToString(), "subnet7"); + Assert.AreEqual("192.168.112.0/20", subnets[7].ToString(), "subnet8"); + Assert.AreEqual("192.168.128.0/20", subnets[8].ToString(), "subnet9"); + Assert.AreEqual("192.168.144.0/20", subnets[9].ToString(), "subnet10"); + Assert.AreEqual("192.168.160.0/20", subnets[10].ToString(), "subnet11"); + Assert.AreEqual("192.168.176.0/20", subnets[11].ToString(), "subnet12"); + Assert.AreEqual("192.168.192.0/20", subnets[12].ToString(), "subnet13"); + Assert.AreEqual("192.168.208.0/20", subnets[13].ToString(), "subnet14"); + Assert.AreEqual("192.168.224.0/20", subnets[14].ToString(), "subnet15"); + Assert.AreEqual("192.168.240.0/20", subnets[15].ToString(), "subnet16"); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTrySupernetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTrySupernetTests.cs index fb56166f..ca209f14 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTrySupernetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTrySupernetTests.cs @@ -19,9 +19,8 @@ public void TestTrySupernet1() var network1 = IPNetwork2.Parse("192.168.0.1/24"); var network2 = IPNetwork2.Parse("192.168.1.1/24"); var supernetExpected = IPNetwork2.Parse("192.168.0.0/23"); - IPNetwork2 supernet; bool parsed = true; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -39,7 +38,7 @@ public void TestTrySupernet2() IPNetwork2 supernet; #pragma warning disable 0618 - bool result = IPNetwork2.TrySupernet(network1, network2, out supernet); + IPNetwork2.TrySupernet(network1, network2, out supernet); #pragma warning restore 0618 } @@ -54,7 +53,7 @@ public void TestTrySupernetStatic2() IPNetwork2 supernet; #pragma warning disable 0618 - bool result = IPNetwork2.TrySupernet(network1, network2, out supernet); + IPNetwork2.TrySupernet(network1, network2, out supernet); #pragma warning restore 0618 } @@ -67,9 +66,8 @@ public void TestTrySupernet3() var network1 = IPNetwork2.Parse("192.168.1.1/24"); IPNetwork2 network2 = null; IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -84,9 +82,8 @@ public void TestTrySupernet4() var network1 = IPNetwork2.Parse("192.168.0.1/24"); var network2 = IPNetwork2.Parse("192.168.1.1/25"); IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -101,9 +98,8 @@ public void TestTrySupernet5() var network1 = IPNetwork2.Parse("192.168.0.1/24"); var network2 = IPNetwork2.Parse("192.168.5.1/24"); IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -118,9 +114,8 @@ public void TestTrySupernet6() var network1 = IPNetwork2.Parse("192.168.0.1/24"); var network2 = IPNetwork2.Parse("192.168.0.1/25"); var supernetExpected = IPNetwork2.Parse("192.168.0.0/24"); - IPNetwork2 supernet; bool parsed = true; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -135,9 +130,8 @@ public void TestTrySupernet7() var network1 = IPNetwork2.Parse("192.168.0.1/25"); var network2 = IPNetwork2.Parse("192.168.0.1/24"); var supernetExpected = IPNetwork2.Parse("192.168.0.0/24"); - IPNetwork2 supernet; bool parsed = true; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -152,9 +146,8 @@ public void TestTrySupernet8() var network1 = IPNetwork2.Parse("192.168.1.1/24"); var network2 = IPNetwork2.Parse("192.168.2.1/24"); IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -170,9 +163,8 @@ public void TestTrySupernet9() var network2 = IPNetwork2.Parse("192.168.2.1/24"); IPNetwork2[] network3 = { network1, network2 }; IPNetwork2[] supernetExpected = { network1, network2 }; - IPNetwork2[] supernet; bool parsed = true; - bool result = IPNetwork2.TrySupernet(network3, out supernet); + bool result = IPNetwork2.TrySupernet(network3, out IPNetwork2[] supernet); Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); Assert.AreEqual(supernetExpected[1], supernet[1], "supernet"); @@ -189,9 +181,8 @@ public void TestTrySupernet10() var network2 = IPNetwork2.Parse("192.168.1.1/24"); IPNetwork2[] network3 = { network1, network2 }; IPNetwork2[] supernetExpected = { IPNetwork2.Parse("192.168.0.0/23") }; - IPNetwork2[] supernet; bool parsed = true; - bool result = IPNetwork2.TrySupernet(network3, out supernet); + bool result = IPNetwork2.TrySupernet(network3, out IPNetwork2[] supernet); Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -204,10 +195,9 @@ public void TestTrySupernet10() public void TestTrySupernet11() { IPNetwork2[] network3 = null; - IPNetwork2[] supernetExpected = { IPNetwork2.Parse("192.168.0.0/23") }; - IPNetwork2[] supernet; + _ = new[] { IPNetwork2.Parse("192.168.0.0/23") }; bool parsed = false; - bool result = IPNetwork2.TrySupernet(network3, out supernet); + bool result = IPNetwork2.TrySupernet(network3, out IPNetwork2[] supernet); Assert.AreEqual(null, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryToBigIntegerTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryToBigIntegerTests.cs index 6ea33970..5bc2c0db 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryToBigIntegerTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryToBigIntegerTests.cs @@ -16,14 +16,13 @@ public class IPNetworkTryToBigIntegerTests [TestMethod] public void TestTryToBigInteger32() { - var mask = IPAddress.Parse("255.255.255.255"); - uint uintMask = 0xffffffff; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + var mask = IPAddress.Parse("255.255.255.255"); + uint uintMask = 0xffffffff; + bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Tests Try To Big Integer functionality with Try To Big Integer24. @@ -31,14 +30,13 @@ public void TestTryToBigInteger32() [TestMethod] public void TestTryToBigInteger24() { - var mask = IPAddress.Parse("255.255.255.0"); - uint uintMask = 0xffffff00; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + var mask = IPAddress.Parse("255.255.255.0"); + uint uintMask = 0xffffff00; + bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Tests Try To Big Integer functionality with Try To Big Integer16. @@ -46,14 +44,13 @@ public void TestTryToBigInteger24() [TestMethod] public void TestTryToBigInteger16() { - var mask = IPAddress.Parse("255.255.0.0"); - uint uintMask = 0xffff0000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + var mask = IPAddress.Parse("255.255.0.0"); + uint uintMask = 0xffff0000; + bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Tests Try To Big Integer functionality with Try To Big Integer8. @@ -61,15 +58,14 @@ public void TestTryToBigInteger16() [TestMethod] public void TestTryToBigInteger8() { - var mask = IPAddress.Parse("255.0.0.0"); - uint uintMask = 0xff000000; + var mask = IPAddress.Parse("255.0.0.0"); + uint uintMask = 0xff000000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Tests Try To Big Integer functionality with Try To Big Integer0. @@ -77,14 +73,13 @@ public void TestTryToBigInteger8() [TestMethod] public void TestTryToBigInteger0() { - var mask = IPAddress.Parse("0.0.0.0"); - uint uintMask = 0x00000000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + var mask = IPAddress.Parse("0.0.0.0"); + uint uintMask = 0x00000000; + bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Tests Try To Big Integer functionality with Try To Big Integer ANE. @@ -92,12 +87,11 @@ public void TestTryToBigInteger0() [TestMethod] public void TestTryToBigIntegerAne() { - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(null, out result); + bool parsed = IPNetwork2.TryToBigInteger(null, out BigInteger? result); - Assert.AreEqual(null, result, "uint"); - Assert.AreEqual(false, parsed, "parsed"); - } + Assert.AreEqual(null, result, "uint"); + Assert.AreEqual(false, parsed, "parsed"); + } /// /// Tests Try To Big Integer functionality with Try To Big Integer ANE3. @@ -105,13 +99,11 @@ public void TestTryToBigIntegerAne() [TestMethod] public void TestTryToBigIntegerAne3() { - IPAddress ip = null; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(ip, out result); + bool parsed = IPNetwork2.TryToBigInteger(null, out BigInteger? result); - Assert.AreEqual(null, result, "uint"); - Assert.AreEqual(false, parsed, "parsed"); - } + Assert.AreEqual(null, result, "uint"); + Assert.AreEqual(false, parsed, "parsed"); + } /// /// Tests Try To Big Integer functionality with Try To Big Integer ANE2. @@ -119,10 +111,9 @@ public void TestTryToBigIntegerAne3() [TestMethod] public void TestTryToBigIntegerAne2() { - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(IPAddress.IPv6Any, out result); + bool parsed = IPNetwork2.TryToBigInteger(IPAddress.IPv6Any, out BigInteger? result); - Assert.AreEqual(0, result, "result"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(0, result, "result"); + Assert.AreEqual(true, parsed, "parsed"); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryToCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryToCidrTests.cs index 68c18676..f6126c7c 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryToCidrTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryToCidrTests.cs @@ -16,10 +16,9 @@ public class IPNetworkTryToCidrTests [TestMethod] public void TestTryToCidrAne() { - byte? cidr = null; - bool parsed = IPNetwork2.TryToCidr(null, out cidr); - Assert.AreEqual(false, parsed, "parsed"); - } + bool parsed = IPNetwork2.TryToCidr(null, out byte? _); + Assert.AreEqual(false, parsed, "parsed"); + } /// /// Tests Try To Cidr functionality with Try To Cidr AE. @@ -27,11 +26,10 @@ public void TestTryToCidrAne() [TestMethod] public void TestTryToCidrAe() { - byte? cidr = null; - bool parsed = IPNetwork2.TryToCidr(IPAddress.IPv6Any, out cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual((byte)0, cidr, "cidr"); - } + bool parsed = IPNetwork2.TryToCidr(IPAddress.IPv6Any, out byte? cidr); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual((byte)0, cidr, "cidr"); + } /// /// Tests Try To Cidr functionality with Try To Cidr AE2. @@ -39,10 +37,9 @@ public void TestTryToCidrAe() [TestMethod] public void TestTryToCidrAe2() { - byte? cidr = null; - bool parsed = IPNetwork2.TryToCidr(IPAddress.Parse("6.6.6.6"), out cidr); - Assert.AreEqual(false, parsed, "parsed"); - } + bool parsed = IPNetwork2.TryToCidr(IPAddress.Parse("6.6.6.6"), out byte? _); + Assert.AreEqual(false, parsed, "parsed"); + } /// /// Tests Try To Cidr functionality with Try To Cidr32. @@ -50,14 +47,13 @@ public void TestTryToCidrAe2() [TestMethod] public void TestTryToCidr32() { - byte? cidr = null; - var mask = IPAddress.Parse("255.255.255.255"); - byte result = 32; - bool parsed = IPNetwork2.TryToCidr(mask, out cidr); + var mask = IPAddress.Parse("255.255.255.255"); + byte result = 32; + bool parsed = IPNetwork2.TryToCidr(mask, out byte? cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Tests Try To Cidr functionality with Try To Cidr24. @@ -65,14 +61,13 @@ public void TestTryToCidr32() [TestMethod] public void TestTryToCidr24() { - byte? cidr = null; - var mask = IPAddress.Parse("255.255.255.0"); - byte result = 24; - bool parsed = IPNetwork2.TryToCidr(mask, out cidr); + var mask = IPAddress.Parse("255.255.255.0"); + byte result = 24; + bool parsed = IPNetwork2.TryToCidr(mask, out byte? cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Tests Try To Cidr functionality with Try To Cidr16. @@ -80,14 +75,13 @@ public void TestTryToCidr24() [TestMethod] public void TestTryToCidr16() { - byte? cidr = null; - var mask = IPAddress.Parse("255.255.0.0"); - byte result = 16; - bool parsed = IPNetwork2.TryToCidr(mask, out cidr); + var mask = IPAddress.Parse("255.255.0.0"); + byte result = 16; + bool parsed = IPNetwork2.TryToCidr(mask, out byte? cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Tests Try To Cidr functionality with Try To Cidr8. @@ -95,14 +89,13 @@ public void TestTryToCidr16() [TestMethod] public void TestTryToCidr8() { - byte? cidr = null; - var mask = IPAddress.Parse("255.0.0.0"); - byte result = 8; - bool parsed = IPNetwork2.TryToCidr(mask, out cidr); + var mask = IPAddress.Parse("255.0.0.0"); + byte result = 8; + bool parsed = IPNetwork2.TryToCidr(mask, out byte? cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Tests Try To Cidr functionality with Try To Cidr0. @@ -110,12 +103,11 @@ public void TestTryToCidr8() [TestMethod] public void TestTryToCidr0() { - byte? cidr = null; - var mask = IPAddress.Parse("0.0.0.0"); - byte result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out cidr); + var mask = IPAddress.Parse("0.0.0.0"); + byte result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out byte? cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryToNetmaskTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryToNetmaskTests.cs index 94ed7e51..08d9936e 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryToNetmaskTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryToNetmaskTests.cs @@ -16,8 +16,7 @@ public class IPNetworkTryToNetmaskTests [TestMethod] public void TryToNetmask1() { - IPAddress result = null; - bool parsed = IPNetwork2.TryToNetmask(0, AddressFamily.InterNetwork, out result); + bool parsed = IPNetwork2.TryToNetmask(0, AddressFamily.InterNetwork, out IPAddress result); var expected = IPAddress.Parse("0.0.0.0"); Assert.AreEqual(expected, result, "Netmask"); @@ -30,8 +29,7 @@ public void TryToNetmask1() [TestMethod] public void TryToNetmask2() { - IPAddress result = null; - bool parsed = IPNetwork2.TryToNetmask(33, AddressFamily.InterNetwork, out result); + bool parsed = IPNetwork2.TryToNetmask(33, AddressFamily.InterNetwork, out IPAddress result); IPAddress expected = null; Assert.AreEqual(expected, result, "Netmask"); diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryToUintTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryToUintTests.cs index 54ba71ab..d40ebab0 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryToUintTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryToUintTests.cs @@ -16,8 +16,7 @@ public class IPNetworkTryToUintTests [TestMethod] public void TestTryToUint1() { - BigInteger? result = null; - bool parsed = IPNetwork2.TryToUint(32, AddressFamily.InterNetwork, out result); + bool parsed = IPNetwork2.TryToUint(32, AddressFamily.InterNetwork, out BigInteger? result); Assert.IsNotNull(result, "uint"); Assert.AreEqual(true, parsed, "parsed"); diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryWideSubnetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryWideSubnetTests.cs index 275149e2..eb5342ee 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryWideSubnetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryWideSubnetTests.cs @@ -20,15 +20,13 @@ public void TryWideSubnet1() var ipns = new List(); foreach (string ip in ips) { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) + if (IPNetwork2.TryParse(ip, 32, out IPNetwork2 ipn)) { ipns.Add(ipn); } } - IPNetwork2 ipnetwork = null; - bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out ipnetwork); + bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out IPNetwork2 ipnetwork); Assert.AreEqual(true, wide, "wide"); Assert.AreEqual("0.0.0.0/0", ipnetwork.ToString(), "ipnetwork"); } @@ -43,15 +41,13 @@ public void TryWideSubnet2() var ipns = new List(); foreach (string ip in ips) { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) + if (IPNetwork2.TryParse(ip, 32, out IPNetwork2 ipn)) { ipns.Add(ipn); } } - IPNetwork2 ipnetwork = null; - bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out ipnetwork); + bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out IPNetwork2 ipnetwork); Assert.AreEqual(true, wide, "wide"); Assert.AreEqual("0.0.0.0/4", ipnetwork.ToString(), "ipnetwork"); } @@ -66,15 +62,13 @@ public void TryWideSubnet3() var ipns = new List(); foreach (string ip in ips) { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) + if (IPNetwork2.TryParse(ip, 32, out IPNetwork2 ipn)) { ipns.Add(ipn); } } - IPNetwork2 ipnetwork = null; - bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out ipnetwork); + bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out IPNetwork2 _); Assert.AreEqual(false, wide, "wide"); } @@ -88,15 +82,13 @@ public void TryWideSubnet4() var ipns = new List(); foreach (string ip in ips) { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) + if (IPNetwork2.TryParse(ip, 32, out IPNetwork2 ipn)) { ipns.Add(ipn); } } - IPNetwork2 ipnetwork = null; - bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out ipnetwork); + bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out IPNetwork2 ipnetwork); Assert.AreEqual(true, wide, "wide"); Assert.AreEqual("1.1.1.1/32", ipnetwork.ToString(), "ipnetwork"); } @@ -107,8 +99,7 @@ public void TryWideSubnet4() [TestMethod] public void TryWideSubnetNull() { - IPNetwork2 ipnetwork = null; - bool wide = IPNetwork2.TryWideSubnet(null, out ipnetwork); + bool wide = IPNetwork2.TryWideSubnet(null, out IPNetwork2 _); Assert.AreEqual(false, wide, "wide"); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkValidNetmaskTests.cs b/src/TestProject/IPNetworkTest/IPNetworkValidNetmaskTests.cs index 79786976..55ea95d0 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkValidNetmaskTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkValidNetmaskTests.cs @@ -17,7 +17,7 @@ public class IPNetworkValidNetmaskTests [ExpectedException(typeof(ArgumentException))] public void TestValidNetmaskInvalid1() { - bool resut = IPNetwork2.InternalValidNetmask(BigInteger.Zero, AddressFamily.AppleTalk); + IPNetwork2.InternalValidNetmask(BigInteger.Zero, AddressFamily.AppleTalk); } /// diff --git a/src/TestProject/IPNetworkTest/IPNetworkWideSubnetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkWideSubnetTests.cs index 2c7a79b4..45d2c9a3 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkWideSubnetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkWideSubnetTests.cs @@ -20,8 +20,7 @@ public void WideSubnet1() var ipns = new List(); foreach (string ip in ips) { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) + if (IPNetwork2.TryParse(ip, 32, out IPNetwork2 ipn)) { ipns.Add(ipn); } @@ -41,8 +40,7 @@ public void WideSubnet2() var ipns = new List(); foreach (string ip in ips) { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) + if (IPNetwork2.TryParse(ip, 32, out IPNetwork2 ipn)) { ipns.Add(ipn); } @@ -59,8 +57,8 @@ public void WideSubnet2() [ExpectedException(typeof(ArgumentNullException))] public void WideSubnetNull() { - var ipnetwork = IPNetwork2.WideSubnet(null); - } + IPNetwork2.WideSubnet(null); + } /// /// Tests WideSubnet with invalid IP addresses to ensure it throws ArgumentException. @@ -73,14 +71,13 @@ public void WideSubnetNull2() var ipns = new List(); foreach (string ip in ips) { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) + if (IPNetwork2.TryParse(ip, 32, out IPNetwork2 ipn)) { ipns.Add(ipn); } } - var ipnetwork = IPNetwork2.WideSubnet(ipns.ToArray()); + IPNetwork2.WideSubnet(ipns.ToArray()); } /// @@ -90,11 +87,11 @@ public void WideSubnetNull2() [ExpectedException(typeof(ArgumentException))] public void WideSubnetMixed() { - var ipns = new List + var ipns = new List { IPNetwork2.IANA_ABLK_RESERVED1, IPNetwork2.Parse("2001:0db8::/64"), }; - var ipnetwork = IPNetwork2.WideSubnet(ipns.ToArray()); - } + IPNetwork2.WideSubnet(ipns.ToArray()); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkV6UnitTest.cs b/src/TestProject/IPNetworkV6UnitTest.cs index db13ebbf..1a6f6a57 100644 --- a/src/TestProject/IPNetworkV6UnitTest.cs +++ b/src/TestProject/IPNetworkV6UnitTest.cs @@ -5,7 +5,7 @@ namespace TestProject; /// -/// Test parsing of IPV6 IPNetworks +/// Test parsing of IPV6 IPNetworks. /// [TestClass] public class IPNetworkV6UnitTest @@ -15,29 +15,29 @@ public class IPNetworkV6UnitTest /// /// Test parse of IPv6 networks. /// - /// First parameter - /// Second parameter + /// First parameter. + /// Second parameter. [DataTestMethod] [DataRow("xxxx::", "xxxx::")] [DataRow("::", "xxxx::")] [ExpectedException(typeof(ArgumentException))] public void TestParseIPAddressNetmaskAne8(string withFirst, string andSecond) { - var ipnet = IPNetwork2.Parse(withFirst, andSecond); + IPNetwork2.Parse(withFirst, andSecond); } /// /// Test parse of IPv6 networks. /// - /// First parameter - /// Second parameter + /// First parameter. + /// Second parameter. [DataTestMethod] [DataRow("xxxx::", 0)] [DataRow("::", 129)] [ExpectedException(typeof(ArgumentException))] public void TestParseIPAddressNetmaskAne10(string withFirst, string andSecond) { - var ipnet = IPNetwork2.Parse(withFirst, andSecond); + IPNetwork2.Parse(withFirst, andSecond); } /// @@ -46,7 +46,6 @@ public void TestParseIPAddressNetmaskAne10(string withFirst, string andSecond) [TestMethod] public void TestParsev6_128() { - IPNetwork2 ipnetwork = null; string ipaddress = "2001:db8::"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; @@ -59,7 +58,7 @@ public void TestParsev6_128() byte cidr = 128; BigInteger usable = 1; - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); @@ -76,7 +75,6 @@ public void TestParsev6_128() [TestMethod] public void TestParsev6_127() { - IPNetwork2 ipnetwork = null; string ipaddress = "2001:db8::"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; @@ -89,7 +87,7 @@ public void TestParsev6_127() byte cidr = 127; BigInteger usable = 2; - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); @@ -106,7 +104,6 @@ public void TestParsev6_127() [TestMethod] public void TestParsev6_126() { - IPNetwork2 ipnetwork = null; string ipaddress = "2001:db8::"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; @@ -119,7 +116,7 @@ public void TestParsev6_126() byte cidr = 126; BigInteger usable = 4; - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); @@ -136,7 +133,6 @@ public void TestParsev6_126() [TestMethod] public void TestParsev6_125() { - IPNetwork2 ipnetwork = null; string ipaddress = "2001:db8::"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"; @@ -149,7 +145,7 @@ public void TestParsev6_125() byte cidr = 125; BigInteger usable = 8; - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); @@ -166,7 +162,6 @@ public void TestParsev6_125() [TestMethod] public void TestParsev6_124() { - IPNetwork2 ipnetwork = null; string ipaddress = "2001:db8::"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; @@ -179,7 +174,7 @@ public void TestParsev6_124() byte cidr = 124; BigInteger usable = 16; - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); @@ -196,7 +191,6 @@ public void TestParsev6_124() [TestMethod] public void TestParsev6_123() { - IPNetwork2 ipnetwork = null; string ipaddress = "2001:0db8::"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"; @@ -209,7 +203,7 @@ public void TestParsev6_123() byte cidr = 123; BigInteger usable = 32; - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); @@ -226,7 +220,6 @@ public void TestParsev6_123() [TestMethod] public void TestParsev6_112() { - IPNetwork2 ipnetwork = null; string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"; @@ -239,7 +232,7 @@ public void TestParsev6_112() byte cidr = 112; uint usable = 65536; - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); @@ -256,7 +249,6 @@ public void TestParsev6_112() [TestMethod] public void TestParsev6_64() { - IPNetwork2 ipnetwork = null; string ipaddress = "ffff:ffff:ffff:ffff:1234:1234:1234:1234"; string netmask = "ffff:ffff:ffff:ffff:0000:0000:0000:0000"; @@ -269,7 +261,7 @@ public void TestParsev6_64() byte cidr = 64; var usable = BigInteger.Pow(2, 128 - cidr); - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); @@ -286,7 +278,6 @@ public void TestParsev6_64() [TestMethod] public void TestParsev6_16() { - IPNetwork2 ipnetwork = null; string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; string netmask = "ffff:0000:0000:0000:0000:0000:0000:0000"; @@ -299,7 +290,7 @@ public void TestParsev6_16() byte cidr = 16; var usable = BigInteger.Pow(2, 128 - cidr); - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); @@ -316,7 +307,6 @@ public void TestParsev6_16() [TestMethod] public void TestParsev6_EDGE() { - IPNetwork2 ipnetwork = null; string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; @@ -326,7 +316,7 @@ public void TestParsev6_EDGE() byte cidr = 128; uint usable = 1; - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); @@ -379,14 +369,13 @@ public void TestParseString3() string netmask = "::"; string firstUsable = "::"; string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 0; - var usable = BigInteger.Pow(2, 128 - cidr); + var usable = BigInteger.Pow(2, 128); var ipnetwork = IPNetwork2.Parse(ipaddress); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(0, ipnetwork.Cidr, "Cidr"); Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); @@ -404,14 +393,13 @@ public void TestParseString4() string netmask = "::"; string firstUsable = "::"; string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 0; - var usable = BigInteger.Pow(2, 128 - cidr); + var usable = BigInteger.Pow(2, 128); var ipnetwork = IPNetwork2.Parse(ipaddress); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(0, ipnetwork.Cidr, "Cidr"); Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); @@ -842,7 +830,7 @@ public void TestParseIPAddressNoNetmask5_ClassLess() public void TestParseStringAe1() { string ipaddress = "garbage"; - var ipnetwork = IPNetwork2.Parse(ipaddress); + IPNetwork2.Parse(ipaddress); } /// @@ -853,7 +841,7 @@ public void TestParseStringAe1() public void TestParseStringAe2() { string ipaddress = "0:0:0:0:0:0:1:0:0 0:1:2:3:4:5:6:7:8"; - var ipnetwork = IPNetwork2.Parse(ipaddress); + IPNetwork2.Parse(ipaddress); } /// @@ -863,8 +851,7 @@ public void TestParseStringAe2() [ExpectedException(typeof(ArgumentNullException))] public void TestParseStringAne1() { - string ipaddress = null; - var ipnetwork = IPNetwork2.Parse(ipaddress); + IPNetwork2.Parse(null); } #endregion @@ -894,11 +881,11 @@ public void TestParseStringString3() string ipaddress = "2001:0db8::"; string netmask = null; - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + IPNetwork2.Parse(ipaddress, netmask); } /// - /// Test ParseString with string string + /// Test ParseString with string string. /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] @@ -907,7 +894,7 @@ public void TestParseStringString5() string ipaddress = "2001:0db8::"; string netmask = string.Empty; - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + IPNetwork2.Parse(ipaddress, netmask); } #endregion @@ -915,7 +902,7 @@ public void TestParseStringString5() #region ParseIpIp /// - /// Test ParseString with IP + /// Test ParseString with IP. /// [TestMethod] public void ParseIpIp1() @@ -929,7 +916,7 @@ public void ParseIpIp1() } /// - /// Test ParseString with IP + /// Test ParseString with IP. /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] @@ -938,7 +925,7 @@ public void ParseIpIp3() string ipaddress = "2001:0db8::"; var ip = IPAddress.Parse(ipaddress); IPAddress netm = null; - var ipnetwork = IPNetwork2.Parse(ip, netm); + IPNetwork2.Parse(ip, netm); } #endregion @@ -966,7 +953,6 @@ public void CtorWithIpAndCidr2() { string ipaddress = "2001:db8::"; var ip = IPAddress.Parse(ipaddress); - var ipnetwork = new IPNetwork2(ip, 129); } #endregion @@ -1304,8 +1290,7 @@ public void TestTryToCidr128() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); byte cidr = 128; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1319,8 +1304,7 @@ public void TestTryToCidr127() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"); byte cidr = 127; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1334,8 +1318,7 @@ public void TestTryToCidr126() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"); byte cidr = 126; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1349,8 +1332,7 @@ public void TestTryToCidr125() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"); byte cidr = 125; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1364,8 +1346,7 @@ public void TestTryToCidr124() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); byte cidr = 124; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1379,8 +1360,7 @@ public void TestTryToCidr123() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"); byte cidr = 123; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1394,8 +1374,7 @@ public void TestTryToCidr122() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffc0"); byte cidr = 122; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1409,8 +1388,7 @@ public void TestTryToCidr121() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff80"); byte cidr = 121; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1424,8 +1402,7 @@ public void TestTryToCidr120() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00"); byte cidr = 120; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1439,8 +1416,7 @@ public void TestTryToCidr119() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fe00"); byte cidr = 119; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1454,8 +1430,7 @@ public void TestTryToCidr118() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fc00"); byte cidr = 118; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1469,8 +1444,7 @@ public void TestTryToCidr117() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f800"); byte cidr = 117; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1484,8 +1458,7 @@ public void TestTryToCidr116() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f000"); byte cidr = 116; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1499,8 +1472,7 @@ public void TestTryToCidr115() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:e000"); byte cidr = 115; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1514,8 +1486,7 @@ public void TestTryToCidr114() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:c000"); byte cidr = 114; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1529,8 +1500,7 @@ public void TestTryToCidr113() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:8000"); byte cidr = 113; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1544,8 +1514,7 @@ public void TestTryToCidr112() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); byte cidr = 112; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1559,8 +1528,7 @@ public void TestTryToCidr111() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffe:0"); byte cidr = 111; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1574,8 +1542,7 @@ public void TestTryToCidr110() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffc:0"); byte cidr = 110; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1589,8 +1556,7 @@ public void TestTryToCidr109() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff8:0"); byte cidr = 109; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1604,8 +1570,7 @@ public void TestTryToCidr108() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff0:0"); byte cidr = 108; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1619,8 +1584,7 @@ public void TestTryToCidr001() { var mask = IPAddress.Parse("8000::"); byte cidr = 1; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1634,8 +1598,7 @@ public void TestTryToCidr000() { var mask = IPAddress.Parse("::"); byte cidr = 0; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1722,8 +1685,7 @@ public void TestTryToBigInteger32() { var mask = IPAddress.Parse("::ffff:ffff"); uint uintMask = 0xffffffff; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); Assert.AreEqual(uintMask, result, "uint"); Assert.AreEqual(true, parsed, "parsed"); @@ -1737,8 +1699,7 @@ public void TestTryToBigInteger24() { var mask = IPAddress.Parse("::ffff:ff00"); uint uintMask = 0xffffff00; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); Assert.AreEqual(uintMask, result, "uint"); Assert.AreEqual(true, parsed, "parsed"); @@ -1752,8 +1713,7 @@ public void TestTryToBigInteger16() { var mask = IPAddress.Parse("::ffff:0"); uint uintMask = 0xffff0000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); Assert.AreEqual(uintMask, result, "uint"); Assert.AreEqual(true, parsed, "parsed"); @@ -1768,8 +1728,7 @@ public void TestTryToBigInteger8() var mask = IPAddress.Parse("::ff00:0"); uint uintMask = 0xff000000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); Assert.AreEqual(uintMask, result, "uint"); Assert.AreEqual(true, parsed, "parsed"); @@ -1783,8 +1742,7 @@ public void TestTryToBigInteger0() { var mask = IPAddress.Parse("::"); uint uintMask = 0x00000000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); Assert.AreEqual(uintMask, result, "uint"); Assert.AreEqual(true, parsed, "parsed"); @@ -1800,8 +1758,7 @@ public void TestTryToBigInteger0() [TestMethod] public void TryToNetmask1() { - IPAddress result = null; - bool parsed = IPNetwork2.TryToNetmask(0, AddressFamily.InterNetworkV6, out result); + bool parsed = IPNetwork2.TryToNetmask(0, AddressFamily.InterNetworkV6, out IPAddress result); var expected = IPAddress.Parse("::"); Assert.AreEqual(expected, result, "Netmask"); @@ -1814,8 +1771,7 @@ public void TryToNetmask1() [TestMethod] public void TryToNetmask2() { - IPAddress result = null; - bool parsed = IPNetwork2.TryToNetmask(33, AddressFamily.InterNetworkV6, out result); + bool parsed = IPNetwork2.TryToNetmask(33, AddressFamily.InterNetworkV6, out IPAddress result); var expected = IPAddress.Parse("ffff:ffff:8000::"); Assert.AreEqual(expected, result, "Netmask"); @@ -1899,7 +1855,7 @@ public void ToNetmask0() public void ToNetmaskOore1() { byte cidr = 129; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); + IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); } #endregion @@ -2131,7 +2087,7 @@ public void TestContains10() var ipnetwork = IPNetwork2.Parse("::/0"); IPAddress ipaddress = null; - bool result = ipnetwork.Contains(ipaddress); + ipnetwork.Contains(ipaddress); } /// @@ -2423,7 +2379,7 @@ public void TestSubnet3() var ipnetwork = IPNetwork2.Parse("::"); byte cidr = 129; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + ipnetwork.Subnet(cidr); } /// @@ -2436,7 +2392,7 @@ public void TestSubnet4() var ipnetwork = IPNetwork2.Parse("::"); byte cidr = 1; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + ipnetwork.Subnet(cidr); } /// @@ -2558,7 +2514,6 @@ public void TestSubnet13() var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); byte cidr = 70; IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - IPNetwork2 error = subnets[1000]; } /// @@ -2593,8 +2548,7 @@ public void TestTrySubnet3() var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); byte cidr = 255; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection _); Assert.AreEqual(false, subnetted, "subnetted"); } @@ -2608,8 +2562,7 @@ public void TestTrySubnet4() var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); byte cidr = 63; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection _); Assert.AreEqual(false, subnetted, "subnetted"); } @@ -2623,8 +2576,7 @@ public void TestTrySubnet5() var ipnetwork = IPNetwork2.Parse("2001:db8::/64"); byte cidr = 65; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection subnets); Assert.AreEqual(true, subnetted, "subnetted"); Assert.AreEqual(2, subnets.Count, "count"); @@ -2641,8 +2593,7 @@ public void TestTrySubnet6() var ipnetwork = IPNetwork2.Parse("2001:db8::/64"); byte cidr = 68; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection subnets); Assert.AreEqual(true, subnetted, "subnetted"); Assert.AreEqual(16, subnets.Count, "count"); @@ -2677,9 +2628,8 @@ public void TestTrySupernet1() var network1 = IPNetwork2.Parse("2001:db8::/65"); var network2 = IPNetwork2.Parse("2001:db8:0:0:8000::/65"); var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); - IPNetwork2 supernet; bool supernetted = true; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetted, result, "supernetted"); Assert.AreEqual(supernetExpected, supernet, "supernet"); @@ -2696,7 +2646,7 @@ public void TestTrySupernet2() var network2 = IPNetwork2.Parse("2001:db8::/64"); IPNetwork2 supernet; #pragma warning disable 0618 - bool result = IPNetwork2.TrySupernet(network1, network2, out supernet); + IPNetwork2.TrySupernet(network1, network2, out supernet); #pragma warning restore 0618 } @@ -2709,9 +2659,8 @@ public void TestTrySupernet3() var network1 = IPNetwork2.Parse("2001:db8::/64"); IPNetwork2 network2 = null; IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -2726,9 +2675,8 @@ public void TestTrySupernet4() var network1 = IPNetwork2.Parse("2001:db8::/64"); var network2 = IPNetwork2.Parse("2001:db9::/65"); IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -2743,9 +2691,8 @@ public void TestTrySupernet5() var network1 = IPNetwork2.Parse("2001:db8::/64"); var network2 = IPNetwork2.Parse("2001:dba::/64"); IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -2760,9 +2707,8 @@ public void TestTrySupernet6() var network1 = IPNetwork2.Parse("2001:db8::/64"); var network2 = IPNetwork2.Parse("2001:db8::1/65"); var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); - IPNetwork2 supernet; bool parsed = true; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -2777,9 +2723,8 @@ public void TestTrySupernet8() var network1 = IPNetwork2.Parse("2001:db0::/64"); var network2 = IPNetwork2.Parse("2001:dbf::/64"); IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -2795,9 +2740,8 @@ public void TestTrySupernet9() var network2 = IPNetwork2.Parse("192.168.2.1/24"); IPNetwork2[] network3 = { network1, network2 }; IPNetwork2[] supernetExpected = { network1, network2 }; - IPNetwork2[] supernet; bool parsed = true; - bool result = IPNetwork2.TrySupernet(network3, out supernet); + bool result = IPNetwork2.TrySupernet(network3, out IPNetwork2[] supernet); Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); Assert.AreEqual(supernetExpected[1], supernet[1], "supernet"); @@ -2814,9 +2758,8 @@ public void TestTrySupernet10() var network2 = IPNetwork2.Parse("2001:db8:0:0:8000::/65"); IPNetwork2[] network3 = { network1, network2 }; IPNetwork2[] supernetExpected = { IPNetwork2.Parse("2001:db8::/64") }; - IPNetwork2[] supernet; bool parsed = true; - bool result = IPNetwork2.TrySupernet(network3, out supernet); + bool result = IPNetwork2.TrySupernet(network3, out IPNetwork2[] supernet); Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -2829,10 +2772,9 @@ public void TestTrySupernet10() public void TestTrySupernet11() { IPNetwork2[] network3 = null; - IPNetwork2[] supernetExpected = { IPNetwork2.Parse("2001:db8::/64") }; - IPNetwork2[] supernet; + _ = new[] { IPNetwork2.Parse("2001:db8::/64") }; bool parsed = false; - bool result = IPNetwork2.TrySupernet(network3, out supernet); + bool result = IPNetwork2.TrySupernet(network3, out IPNetwork2[] supernet); Assert.AreEqual(null, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -2843,13 +2785,12 @@ public void TestTrySupernet11() #region TryGuessCidr /// - /// Test TryGuessCidrNull + /// Test TryGuessCidrNull. /// [TestMethod] public void TestTryGuessCidrNull() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr(null, out cidr); + bool parsed = IPNetwork2.TryGuessCidr(null, out byte cidr); Assert.AreEqual(false, parsed, "parsed"); Assert.AreEqual(0, cidr, "cidr"); @@ -2861,8 +2802,7 @@ public void TestTryGuessCidrNull() [TestMethod] public void TestTryGuessCidr1() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("::", out cidr); + bool parsed = IPNetwork2.TryGuessCidr("::", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(64, cidr, "cidr"); @@ -2874,8 +2814,7 @@ public void TestTryGuessCidr1() [TestMethod] public void TestTryGuessCidr2() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("2001:0db8::", out cidr); + bool parsed = IPNetwork2.TryGuessCidr("2001:0db8::", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(64, cidr, "cidr"); @@ -2886,7 +2825,7 @@ public void TestTryGuessCidr2() #region Count /// - /// Test Total32 + /// Test Total32. /// [TestMethod] public void Total32() @@ -2967,7 +2906,7 @@ public void Total0() #region Usable /// - /// Test Usable32 + /// Test Usable32. /// [TestMethod] public void Usable32() @@ -3054,9 +2993,8 @@ public void Usable0() public void TryParseCidr1() { string sidr = "0"; - byte? cidr; byte? result = 0; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out byte? cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); @@ -3069,13 +3007,11 @@ public void TryParseCidr1() public void TryParseCidr2() { string sidr = "sadsd"; - byte? cidr; - byte? result = null; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out byte? cidr); Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(result, cidr, "cidr"); + Assert.AreEqual(null, cidr, "cidr"); } /// @@ -3085,10 +3021,9 @@ public void TryParseCidr2() public void TryParseCidr33() { string sidr = "33"; - byte? cidr; byte result = 33; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out byte? cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); @@ -3101,10 +3036,9 @@ public void TryParseCidr33() public void TryParseCidr128() { string sidr = "128"; - byte? cidr; byte result = 128; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out byte? cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); @@ -3116,14 +3050,10 @@ public void TryParseCidr128() [TestMethod] public void TryParseCidr129() { - string sidr = "129"; - byte? cidr; - byte? result = null; - - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr("129", AddressFamily.InterNetworkV6, out byte? cidr); Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(result, cidr, "cidr"); + Assert.AreEqual(null, cidr, "cidr"); } #endregion diff --git a/src/TestProject/SerializeJsonTest.cs b/src/TestProject/SerializeJsonTest.cs index f3688baa..067a00e2 100644 --- a/src/TestProject/SerializeJsonTest.cs +++ b/src/TestProject/SerializeJsonTest.cs @@ -63,7 +63,7 @@ public void Test_1_000_000_Serialize_Json() for (int i = 0; i < 1000000; i++) { - string json = JsonConvert.SerializeObject(ipnetwork); + JsonConvert.SerializeObject(ipnetwork); } // 3.06 seconds(Ad hoc). @@ -80,7 +80,7 @@ public void Test_1_000_000_Deserialize_Json() for (int i = 0; i < 1000000; i++) { - IPNetwork2 result = JsonConvert.DeserializeObject(json); + JsonConvert.DeserializeObject(json); } // 10.20 seconds(Ad hoc). @@ -98,7 +98,7 @@ public void Test_1_000_000_Serialize_Deserialize_Json() for (int i = 0; i < 1000000; i++) { string json = JsonConvert.SerializeObject(ipnetwork); - IPNetwork2 result = JsonConvert.DeserializeObject(json); + JsonConvert.DeserializeObject(json); } // 13.49 seconds(Ad hoc). diff --git a/src/TestProject/SerializeXmlTest.cs b/src/TestProject/SerializeXmlTest.cs index c2101375..ba9e70b1 100644 --- a/src/TestProject/SerializeXmlTest.cs +++ b/src/TestProject/SerializeXmlTest.cs @@ -112,7 +112,7 @@ public void Test_1_000_000_Deserialize_Xml() for (int i = 0; i < 1000000; i++) { - object result = serializer.Deserialize(mem); + serializer.Deserialize(mem); mem.Position = 0; } @@ -136,7 +136,7 @@ public void Test_1_000_000_Serialize_Deserialize_Xml() serializer.Serialize(mem, ipnetwork); mem.Position = 0; - object ipnetwork2 = serializer.Deserialize(mem); + serializer.Deserialize(mem); mem.SetLength(0); } diff --git a/src/TestProject/TryParseUnitTest.cs b/src/TestProject/TryParseUnitTest.cs index 0f443e0e..a75d7f00 100644 --- a/src/TestProject/TryParseUnitTest.cs +++ b/src/TestProject/TryParseUnitTest.cs @@ -18,7 +18,7 @@ public class TryParseUnitTest [TestMethod] public void Test_IPNetwork_TryParse_Issue294() { - bool result = IPNetwork2.TryParse("*", out IPNetwork2 ipaddress1); + bool result = IPNetwork2.TryParse("*", out IPNetwork2 _); Assert.AreEqual(false, result, "parsed1"); } @@ -324,7 +324,7 @@ public void TestTryParseString5() public void TestTryParseStringAe1() { string ipaddress = "garbage"; - bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 _); Assert.AreEqual(false, parsed, "parsed"); } @@ -336,7 +336,7 @@ public void TestTryParseStringAe1() public void TestTryParseStringAe2() { string ipaddress = "0.0.0.0 0.0.1.0"; - bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 _); Assert.AreEqual(false, parsed, "parsed"); } @@ -348,7 +348,7 @@ public void TestTryParseStringAe2() public void TestTryParseStringAne1() { string ipaddress = null; - bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 _); Assert.AreEqual(false, parsed, "parsed"); } @@ -392,7 +392,7 @@ public void Test_TryParse_InvalidIpv6_return_valid_ipv6network() [DataRow("001:02b8::/64", false, true)] public void Test_TryParse(string ipnetwork, bool sanitanize, bool parsed) { - bool result = IPNetwork2.TryParse(ipnetwork, sanitanize, out IPNetwork2 ipnetwork1); + bool result = IPNetwork2.TryParse(ipnetwork, sanitanize, out IPNetwork2 _); Assert.AreEqual(parsed, result, "parsed1"); } @@ -412,7 +412,7 @@ public void Test_TryParse(string ipnetwork, bool sanitanize, bool parsed) [DataRow("001:02b8:: ", false)] public void Test_IPAddress_TryParse(string ipaddress, bool parsed) { - bool result = IPAddress.TryParse(ipaddress, out IPAddress ipaddress1); + bool result = IPAddress.TryParse(ipaddress, out IPAddress _); Assert.AreEqual(parsed, result, "parsed1"); } From 1bae8a6df9d51a84b9f3ef841a38082cfe052bc1 Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sun, 30 Mar 2025 00:18:31 +0100 Subject: [PATCH 11/25] Fix: unit tests --- .../IPNetworkCollectionCtorTests.cs | 2 + .../IPNetworkCtorWithIpAndCidrTests.cs | 3 + src/TestProject/IPNetworkV6UnitTest.cs | 74 +++++++------------ 3 files changed, 31 insertions(+), 48 deletions(-) diff --git a/src/TestProject/IPNetworkCollectionCtorTests.cs b/src/TestProject/IPNetworkCollectionCtorTests.cs index 5487097c..cab77255 100644 --- a/src/TestProject/IPNetworkCollectionCtorTests.cs +++ b/src/TestProject/IPNetworkCollectionCtorTests.cs @@ -17,6 +17,7 @@ public class IPNetworkCollectionCtorTests [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestCtor1() { + var _ = new IPNetworkCollection(IPNetwork2.IANA_ABLK_RESERVED1, 33); } /// @@ -26,5 +27,6 @@ public void TestCtor1() [ExpectedException(typeof(ArgumentException))] public void TestCtor2() { + var _ = new IPNetworkCollection(IPNetwork2.IANA_ABLK_RESERVED1, 2); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs index 0d44fded..402b1c1b 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs @@ -29,6 +29,8 @@ public void CtorWithIpAndCidr1() [ExpectedException(typeof(ArgumentNullException))] public void CtorWithIpAndCidr2() { + IPAddress ip = null; + var ipnetwork = new IPNetwork2(ip, 24); } /// @@ -40,5 +42,6 @@ public void CtorWithIpAndCidr3() { string ipaddress = "192.168.168.100"; var ip = IPAddress.Parse(ipaddress); + var ipnetwork = new IPNetwork2(ip, 33); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkV6UnitTest.cs b/src/TestProject/IPNetworkV6UnitTest.cs index 1a6f6a57..dfe66b4e 100644 --- a/src/TestProject/IPNetworkV6UnitTest.cs +++ b/src/TestProject/IPNetworkV6UnitTest.cs @@ -953,6 +953,7 @@ public void CtorWithIpAndCidr2() { string ipaddress = "2001:db8::"; var ip = IPAddress.Parse(ipaddress); + var _ = new IPNetwork2(ip, 129); } #endregion @@ -1869,10 +1870,9 @@ public void ToNetmaskOore1() public void TestValidNetmask0() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); - bool expected = true; bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); + Assert.AreEqual(true, result, "ValidNetmask"); } /// @@ -1882,10 +1882,9 @@ public void TestValidNetmask0() public void TestValidNetmask1() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); - bool expected = true; bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); + Assert.AreEqual(true, result, "ValidNetmask"); } /// @@ -1895,10 +1894,9 @@ public void TestValidNetmask1() public void TestValidNetmask2() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); - bool expected = true; bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); + Assert.AreEqual(true, result, "ValidNetmask"); } /// @@ -1908,10 +1906,9 @@ public void TestValidNetmask2() public void TestValidNetmaskEae1() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:0000:ffff"); - bool expected = false; bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); + Assert.AreEqual(false, result, "ValidNetmask"); } /// @@ -1921,10 +1918,9 @@ public void TestValidNetmaskEae1() public void TestValidNetmaskEae3() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:0000:0001"); - bool expected = false; bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); + Assert.AreEqual(false, result, "ValidNetmask"); } #endregion @@ -1997,9 +1993,8 @@ public void TestContains1() var ipaddress = IPAddress.Parse("2001:0db8::1"); bool result = ipnetwork.Contains(ipaddress); - bool expected = true; - Assert.AreEqual(expected, result, "contains"); + Assert.AreEqual(true, result, "contains"); } /// @@ -2012,9 +2007,8 @@ public void TestContains2() var ipaddress = IPAddress.Parse("2001:0db8:0:1::"); bool result = ipnetwork.Contains(ipaddress); - bool expected = false; - Assert.AreEqual(expected, result, "contains"); + Assert.AreEqual(false, result, "contains"); } /// @@ -2027,9 +2021,8 @@ public void TestContains3() var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/64"); bool result = ipnetwork.Contains(ipnetwork2); - bool expected = true; - Assert.AreEqual(expected, result, "contains"); + Assert.AreEqual(true, result, "contains"); } /// @@ -2042,9 +2035,8 @@ public void TestContains4() var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/65"); bool result = ipnetwork.Contains(ipnetwork2); - bool expected = true; - Assert.AreEqual(expected, result, "contains"); + Assert.AreEqual(true, result, "contains"); } /// @@ -2057,9 +2049,8 @@ public void TestContains5() var ipnetwork2 = IPNetwork2.Parse("2001:0db8:1::/65"); bool result = ipnetwork.Contains(ipnetwork2); - bool expected = false; - Assert.AreEqual(expected, result, "contains"); + Assert.AreEqual(false, result, "contains"); } /// @@ -2072,9 +2063,8 @@ public void TestContains6() var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/63"); bool result = ipnetwork.Contains(ipnetwork2); - bool expected = false; - Assert.AreEqual(expected, result, "contains"); + Assert.AreEqual(false, result, "contains"); } /// @@ -2128,9 +2118,8 @@ public void TestOverlap3() var network1 = IPNetwork2.Parse("2001:0db8::/64"); var network2 = IPNetwork2.Parse("2001:0db8::/64"); bool result = network1.Overlap(network2); - bool expected = true; - Assert.AreEqual(expected, result, "overlap"); + Assert.AreEqual(true, result, "overlap"); } /// @@ -2142,9 +2131,8 @@ public void TestOverlap4() var network1 = IPNetwork2.Parse("2001:0db8::/64"); var network2 = IPNetwork2.Parse("2001:0db8:0:0:1::/65"); bool result = network1.Overlap(network2); - bool expected = true; - Assert.AreEqual(expected, result, "overlap"); + Assert.AreEqual(true, result, "overlap"); } /// @@ -2156,9 +2144,8 @@ public void TestOverlap5() var network1 = IPNetwork2.Parse("2001:0db8:0:1::/68"); var network2 = IPNetwork2.Parse("2001:0db8:0:2::/68"); bool result = network1.Overlap(network2); - bool expected = false; - Assert.AreEqual(expected, result, "overlap"); + Assert.AreEqual(false, result, "overlap"); } /// @@ -2170,9 +2157,8 @@ public void TestOverlap6() var network1 = IPNetwork2.Parse("2001:0db8:0:1::/68"); var network2 = IPNetwork2.Parse("2001:0db8:0:2::/62"); bool result = network1.Overlap(network2); - bool expected = true; - Assert.AreEqual(expected, result, "overlap"); + Assert.AreEqual(true, result, "overlap"); } #endregion @@ -2514,6 +2500,7 @@ public void TestSubnet13() var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); byte cidr = 70; IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + IPNetwork2 error = subnets[1000]; } /// @@ -2628,10 +2615,9 @@ public void TestTrySupernet1() var network1 = IPNetwork2.Parse("2001:db8::/65"); var network2 = IPNetwork2.Parse("2001:db8:0:0:8000::/65"); var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); - bool supernetted = true; bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); - Assert.AreEqual(supernetted, result, "supernetted"); + Assert.AreEqual(true, result, "supernetted"); Assert.AreEqual(supernetExpected, supernet, "supernet"); } @@ -2659,11 +2645,10 @@ public void TestTrySupernet3() var network1 = IPNetwork2.Parse("2001:db8::/64"); IPNetwork2 network2 = null; IPNetwork2 supernetExpected = null; - bool parsed = false; bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); + Assert.AreEqual(false, result, "parsed"); } /// @@ -2675,11 +2660,10 @@ public void TestTrySupernet4() var network1 = IPNetwork2.Parse("2001:db8::/64"); var network2 = IPNetwork2.Parse("2001:db9::/65"); IPNetwork2 supernetExpected = null; - bool parsed = false; bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); + Assert.AreEqual(false, result, "parsed"); } /// @@ -2691,11 +2675,10 @@ public void TestTrySupernet5() var network1 = IPNetwork2.Parse("2001:db8::/64"); var network2 = IPNetwork2.Parse("2001:dba::/64"); IPNetwork2 supernetExpected = null; - bool parsed = false; bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); + Assert.AreEqual(false, result, "parsed"); } /// @@ -2707,11 +2690,10 @@ public void TestTrySupernet6() var network1 = IPNetwork2.Parse("2001:db8::/64"); var network2 = IPNetwork2.Parse("2001:db8::1/65"); var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); - bool parsed = true; bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); + Assert.AreEqual(true, result, "parsed"); } /// @@ -2723,11 +2705,10 @@ public void TestTrySupernet8() var network1 = IPNetwork2.Parse("2001:db0::/64"); var network2 = IPNetwork2.Parse("2001:dbf::/64"); IPNetwork2 supernetExpected = null; - bool parsed = false; bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); + Assert.AreEqual(false, result, "parsed"); } /// @@ -2740,12 +2721,11 @@ public void TestTrySupernet9() var network2 = IPNetwork2.Parse("192.168.2.1/24"); IPNetwork2[] network3 = { network1, network2 }; IPNetwork2[] supernetExpected = { network1, network2 }; - bool parsed = true; bool result = IPNetwork2.TrySupernet(network3, out IPNetwork2[] supernet); Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); Assert.AreEqual(supernetExpected[1], supernet[1], "supernet"); - Assert.AreEqual(parsed, result, "parsed"); + Assert.AreEqual(true, result, "parsed"); } /// @@ -2758,11 +2738,10 @@ public void TestTrySupernet10() var network2 = IPNetwork2.Parse("2001:db8:0:0:8000::/65"); IPNetwork2[] network3 = { network1, network2 }; IPNetwork2[] supernetExpected = { IPNetwork2.Parse("2001:db8::/64") }; - bool parsed = true; bool result = IPNetwork2.TrySupernet(network3, out IPNetwork2[] supernet); Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); - Assert.AreEqual(parsed, result, "parsed"); + Assert.AreEqual(true, result, "parsed"); } /// @@ -2773,11 +2752,10 @@ public void TestTrySupernet11() { IPNetwork2[] network3 = null; _ = new[] { IPNetwork2.Parse("2001:db8::/64") }; - bool parsed = false; bool result = IPNetwork2.TrySupernet(network3, out IPNetwork2[] supernet); Assert.AreEqual(null, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); + Assert.AreEqual(false, result, "parsed"); } #endregion From 635d704e4dd471aadfb4b9ae148f9c26ecd9db89 Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sun, 30 Mar 2025 00:18:57 +0100 Subject: [PATCH 12/25] Fix: unit tests --- src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs index 70203881..fe2370fa 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs @@ -218,5 +218,6 @@ public void TestSubnet13() IPNetwork2 ipnetwork = IPNetwork2.IANA_CBLK_RESERVED1; byte cidr = 20; IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + IPNetwork2 error = subnets[1000]; } } \ No newline at end of file From 2e547a64d86aff7c37fb82a92a0774beae2b4376 Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sat, 29 Mar 2025 17:43:37 +0100 Subject: [PATCH 13/25] Chore: file scoped namespace --- src/System.Net.IPNetwork/CidrClassFull.cs | 3 +- src/System.Net.IPNetwork/CidrGuess.cs | 8 +- src/System.Net.IPNetwork/ICidrGuess.cs | 4 +- .../IPAddressCollection.cs | 154 +- src/System.Net.IPNetwork/IPNetwork2.cs | 2613 ++++++++++++++++- .../IPNetworkCollection.cs | 119 +- 6 files changed, 2742 insertions(+), 159 deletions(-) diff --git a/src/System.Net.IPNetwork/CidrClassFull.cs b/src/System.Net.IPNetwork/CidrClassFull.cs index 5d717f99..64b4ec21 100644 --- a/src/System.Net.IPNetwork/CidrClassFull.cs +++ b/src/System.Net.IPNetwork/CidrClassFull.cs @@ -29,7 +29,8 @@ public sealed class CidrClassFull : ICidrGuess /// true if ip was converted successfully; otherwise, false. public bool TryGuessCidr(string ip, out byte cidr) { - bool parsed = IPAddress.TryParse(string.Format("{0}", ip), out var ipaddress); + IPAddress ipaddress = null; + bool parsed = IPAddress.TryParse(string.Format("{0}", ip), out ipaddress); if (parsed == false) { cidr = 0; diff --git a/src/System.Net.IPNetwork/CidrGuess.cs b/src/System.Net.IPNetwork/CidrGuess.cs index a2a47b2d..f1c86888 100644 --- a/src/System.Net.IPNetwork/CidrGuess.cs +++ b/src/System.Net.IPNetwork/CidrGuess.cs @@ -12,13 +12,13 @@ public static class CidrGuess /// /// Gets classFull guess. /// - public static ICidrGuess ClassFull { get => CidrClassfull.Value; } + public static ICidrGuess ClassFull { get => _cidr_classfull.Value; } /// /// Gets classLess guess. /// - public static ICidrGuess ClassLess { get => CidrClassless.Value; } + public static ICidrGuess ClassLess { get => _cidr_classless.Value; } - private static readonly Lazy CidrClassless = new (() => new CidrClassLess()); - private static readonly Lazy CidrClassfull = new (() => new CidrClassFull()); + private static readonly Lazy _cidr_classless = new(() => new CidrClassLess()); + private static readonly Lazy _cidr_classfull = new(() => new CidrClassFull()); } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/ICidrGuess.cs b/src/System.Net.IPNetwork/ICidrGuess.cs index 78d6b146..2b061c2f 100644 --- a/src/System.Net.IPNetwork/ICidrGuess.cs +++ b/src/System.Net.IPNetwork/ICidrGuess.cs @@ -5,12 +5,12 @@ namespace System.Net; /// -/// An interface to have multiple implemntatino ao CIDR Guesser. +/// /// public interface ICidrGuess { /// - /// Try to guess the CIDR. + /// /// /// An ip adress to guess the ip network CIDR. /// A byte representing the netmask in cidr format (/24). diff --git a/src/System.Net.IPNetwork/IPAddressCollection.cs b/src/System.Net.IPNetwork/IPAddressCollection.cs index ef26e041..db1598fd 100644 --- a/src/System.Net.IPNetwork/IPAddressCollection.cs +++ b/src/System.Net.IPNetwork/IPAddressCollection.cs @@ -17,7 +17,6 @@ public enum FilterEnum /// Every IPAdresses are returned /// All, - /// /// Returns only usable IPAdresses /// @@ -29,21 +28,16 @@ public enum FilterEnum /// public class IPAddressCollection : IEnumerable, IEnumerator { - private readonly IPNetwork2 ipnetwork; - private readonly FilterEnum filter; - private BigInteger enumerator; + private readonly IPNetwork2 _ipnetwork; + private readonly FilterEnum _filter; + private BigInteger _enumerator; - /// - /// Initializes a new instance of the class. - /// - /// The network. - /// The filter. internal IPAddressCollection(IPNetwork2 ipnetwork, FilterEnum filter) { - this.ipnetwork = ipnetwork; - this.filter = filter; - this.Reset(); - } + this._ipnetwork = ipnetwork; + this._filter = filter; + this.Reset(); + } #region Count, Array, Enumerator @@ -57,19 +51,19 @@ public BigInteger Count { get { - BigInteger count = this.ipnetwork.Total; - if (this.filter == FilterEnum.Usable) - { - count -= 2; + BigInteger count = this._ipnetwork.Total; + if (this._filter == FilterEnum.Usable) + { + count -= 2; + } + + if (count < 0) + { + count = 0; + } + + return count; } - - if (count < 0) - { - count = 0; - } - - return count; - } } /// @@ -82,22 +76,22 @@ public IPAddress this[BigInteger i] { get { - if (i >= this.Count) - { - throw new ArgumentOutOfRangeException("i"); - } + if (i >= this.Count) + { + throw new ArgumentOutOfRangeException("i"); + } - byte width = this.ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetwork ? (byte)32 : (byte)128; - IPNetworkCollection ipn = this.ipnetwork.Subnet(width); + byte width = this._ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetwork ? (byte)32 : (byte)128; + IPNetworkCollection ipn = this._ipnetwork.Subnet(width); - BigInteger index = i; - if (this.filter == FilterEnum.Usable) - { - index++; - } + BigInteger index = i; + if (this._filter == FilterEnum.Usable) + { + index++; + } - return ipn[index].Network; - } + return ipn[index].Network; + } } #endregion @@ -112,107 +106,101 @@ public IPAddress Current { get { - return this[this.enumerator]; - } + return this[this._enumerator]; + } } - /// object IEnumerator.Current { get { - return this.Current; - } + return this.Current; + } } /// public bool MoveNext() { - this.enumerator++; - if (this.enumerator >= this.Count) - { - return false; - } + this._enumerator++; + if (this._enumerator >= this.Count) + { + return false; + } - return true; - } + return true; + } /// public void Reset() { - this.enumerator = -1; - } + this._enumerator = -1; + } /// public void Dispose() { - // nothing to dispose - } - + // nothing to dispose + } #endregion #region Enumeration - - /// IEnumerator IEnumerable.GetEnumerator() { - return new Enumerator(this); - } + return new Enumerator(this); + } - /// IEnumerator IEnumerable.GetEnumerator() { - return new Enumerator(this); - } + return new Enumerator(this); + } private struct Enumerator : IEnumerator { - private readonly IPAddressCollection collection; - private BigInteger enumerator; + private readonly IPAddressCollection _collection; + private BigInteger _enumerator; object IEnumerator.Current { get { - return this.Current; - } + return this.Current; + } } public IPAddress Current { get { - return this.collection[this.enumerator]; - } + return this._collection[this._enumerator]; + } } public void Dispose() { - // nothing to dispose - } + // nothing to dispose + } public bool MoveNext() { - this.enumerator++; - if (this.enumerator >= this.collection.Count) - { - return false; - } + this._enumerator++; + if (this._enumerator >= this._collection.Count) + { + return false; + } - return true; - } + return true; + } public void Reset() { - this.enumerator = -1; - } + this._enumerator = -1; + } public Enumerator(IPAddressCollection collection) { - this.collection = collection; - this.enumerator = -1; - } + this._collection = collection; + this._enumerator = -1; + } } - #endregion } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2.cs b/src/System.Net.IPNetwork/IPNetwork2.cs index 61ba5349..b5ddfec9 100644 --- a/src/System.Net.IPNetwork/IPNetwork2.cs +++ b/src/System.Net.IPNetwork/IPNetwork2.cs @@ -4,7 +4,12 @@ namespace System.Net; +using System.Collections.Generic; +using System.IO; +using System.Net.Sockets; +using System.Numerics; using System.Runtime.Serialization; +using System.Text.RegularExpressions; /// /// IP Network utility class. @@ -12,16 +17,2612 @@ namespace System.Net; /// [Serializable] [CLSCompliant(true)] -public sealed partial class IPNetwork2 : IComparable, ISerializable +public sealed class IPNetwork2 : IComparable, ISerializable { + #region properties + + private readonly object _sync = new(); + private readonly int _hashCode; + private BigInteger _ipaddress; + private byte _cidr; + private BigInteger? _cachedBroadcast; + + private AddressFamily _family; + + /// + /// Gets or sets the value of the IPNetwork property. + /// + [DataMember(Name = "IPNetwork", IsRequired = true)] + public string Value + { + get + { + return this.ToString(); + } + + set + { + var ipnetwork = IPNetwork2.Parse(value); + this._ipaddress = ipnetwork._ipaddress; + this._family = ipnetwork._family; + this._cidr = ipnetwork._cidr; + lock (_sync) + { + this._cachedBroadcast = null; + } + } + } + + #endregion + + #region accessors + + internal BigInteger _network + { + get + { + BigInteger uintNetwork = this._ipaddress & this._netmask; + return uintNetwork; + } + } + + /// + /// Gets network address. + /// + public IPAddress Network + { + get + { + return IPNetwork2.ToIPAddress(this._network, this._family); + } + } + + /// + /// Gets address Family. + /// + public AddressFamily AddressFamily + { + get + { + return this._family; + } + } + + internal BigInteger _netmask + { + get + { + return IPNetwork2.ToUint(this._cidr, this._family); + } + } + + /// + /// Gets netmask. + /// + public IPAddress Netmask + { + get + { + return IPNetwork2.ToIPAddress(this._netmask, this._family); + } + } + + internal BigInteger _broadcast + { + get + { + var cached = this._cachedBroadcast; + if (cached != null) + { + return cached.Value; + } + + lock (_sync) + { + var cached2 = this._cachedBroadcast; + if (cached2 != null) + { + return cached2.Value; + } + + var network = this._network; + var computed = CreateBroadcast(ref network, this._netmask, this._family); + this._cachedBroadcast = computed; + return computed; + } + } + } + + /// + /// Gets broadcast address. + /// + public IPAddress Broadcast + { + get + { + if (this._family == Sockets.AddressFamily.InterNetworkV6) + { + return null; + } + + return IPNetwork2.ToIPAddress(this._broadcast, this._family); + } + } + + /// + /// Gets first usable IP adress in Network. + /// + public IPAddress FirstUsable + { + get + { + BigInteger first = this._family == Sockets.AddressFamily.InterNetworkV6 + ? this._network + : (this.Usable <= 0) ? this._network : this._network + 1; + return IPNetwork2.ToIPAddress(first, this._family); + } + } + + /// + /// Gets last usable IP adress in Network. + /// + public IPAddress LastUsable + { + get + { + BigInteger last = this._family == Sockets.AddressFamily.InterNetworkV6 + ? this._broadcast + : (this.Usable <= 0) ? this._network : this._broadcast - 1; + return IPNetwork2.ToIPAddress(last, this._family); + } + } + + /// + /// Gets number of usable IP adress in Network. + /// + public BigInteger Usable + { + get + { + if (this._family == Sockets.AddressFamily.InterNetworkV6) + { + return this.Total; + } + + byte[] mask = new byte[] { 0xff, 0xff, 0xff, 0xff, 0x00 }; + var bmask = new BigInteger(mask); + BigInteger usableIps = (this._cidr > 30) ? 0 : ((bmask >> this._cidr) - 1); + return usableIps; + } + } + + /// + /// Gets number of IP adress in Network. + /// + public BigInteger Total + { + get + { + int max = this._family == Sockets.AddressFamily.InterNetwork ? 32 : 128; + var count = BigInteger.Pow(2, max - this._cidr); + return count; + } + } + + /// + /// Gets the CIDR netmask notation. + /// + public byte Cidr + { + get + { + return this._cidr; + } + } + + #endregion + + #region constructor + +#if TRAVISCI + public +#else + /// + /// Initializes a new instance of the class with the specified IP address, address family, and CIDR. + /// + /// The IP address of the network. + /// The address family of the network. + /// The CIDR (Classless Inter-Domain Routing) notation of the network. + internal +#endif + IPNetwork2(BigInteger ipaddress, AddressFamily family, byte cidr) + { + this.Init(ipaddress, family, cidr); + this._hashCode = this.ComputeHashCode(); + } + + /// + /// Initializes a new instance of the class. + /// Creates a new IPNetwork. + /// + /// An ipaddress. + /// A byte representing the netmask in cidr format (/24). + /// ipaddress is null. + public IPNetwork2(IPAddress ipaddress, byte cidr) + { + if (ipaddress == null) + { + throw new ArgumentNullException("ipaddress"); + } + + BigInteger uintIpAddress = ToBigInteger(ipaddress); + + this.Init(uintIpAddress, ipaddress.AddressFamily, cidr); + this._hashCode = this.ComputeHashCode(); + } + + private void Init(BigInteger ipaddress, AddressFamily family, byte cidr) + { + int maxCidr = family == AddressFamily.InterNetwork ? 32 : 128; + if (cidr > maxCidr) + { + throw new ArgumentOutOfRangeException("cidr"); + } + + this._ipaddress = ipaddress; + this._family = family; + this._cidr = cidr; + } + + #endregion + + #region parsers + + /// + /// 192.168.168.100 - 255.255.255.0 + /// + /// ``` + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255 + /// ```. + /// + /// + /// A string containing an ip address to convert. + /// A string representing a netmask in std format (255.255.255.0). + /// An IPNetwork equivalent to the network contained in ipaddress/netmask. + public static IPNetwork2 Parse(string ipaddress, string netmask) + { + IPNetwork2.InternalParse(false, ipaddress, netmask, out IPNetwork2 ipnetwork); + return ipnetwork; + } + + /// + /// 192.168.168.100/24 + /// + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255. + /// + /// A string containing an ip address to convert. + /// A byte representing the netmask in cidr format (/24). + /// An IPNetwork equivalent to the network contained in ipaddress/cidr. + public static IPNetwork2 Parse(string ipaddress, byte cidr) + { + IPNetwork2.InternalParse(false, ipaddress, cidr, out IPNetwork2 ipnetwork); + return ipnetwork; + } + + /// + /// 192.168.168.100 255.255.255.0 + /// + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255. + /// + /// A string containing an ip address to convert. + /// A netmask to be used to create the IPNetwork. + /// An IPNetwork equivalent to the network contained in ipaddress/netmask. + public static IPNetwork2 Parse(IPAddress ipaddress, IPAddress netmask) + { + IPNetwork2.InternalParse(false, ipaddress, netmask, out IPNetwork2 ipnetwork); + return ipnetwork; + } + + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// An IPNetwork equivalent to the network contained in string network. + public static IPNetwork2 Parse(string network) + { + IPNetwork2.InternalParse(false, network, CidrGuess.ClassFull, true, out IPNetwork2 ipnetwork); + return ipnetwork; + } + + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// Whether to sanitize network or not. + /// An IPNetwork equivalent to the network contained in string network. + public static IPNetwork2 Parse(string network, bool sanitanize) + { + IPNetwork2.InternalParse(false, network, CidrGuess.ClassFull, sanitanize, out IPNetwork2 ipnetwork); + return ipnetwork; + } + + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// A ICidrGuess implementation that will be used to guess CIDR during converion. + /// An IPNetwork equivalent to the network contained in string network. + public static IPNetwork2 Parse(string network, ICidrGuess cidrGuess) + { + IPNetwork2.InternalParse(false, network, cidrGuess, true, out IPNetwork2 ipnetwork); + return ipnetwork; + } + + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// A ICidrGuess implementation that will be used to guess CIDR during converion. + /// Whether to sanitize network or not. + /// An IPNetwork equivalent to the network contained in string network. + public static IPNetwork2 Parse(string network, ICidrGuess cidrGuess, bool sanitanize) + { + IPNetwork2.InternalParse(false, network, cidrGuess, sanitanize, out IPNetwork2 ipnetwork); + return ipnetwork; + } + + #endregion + + #region TryParse + + /// + /// 192.168.168.100 - 255.255.255.0 + /// + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255. + /// + /// A string containing an ip address to convert. + /// A string containing a netmaks to convert (255.255.255.0). + /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. + /// true if ipaddress/netmask was converted successfully; otherwise, false.. + public static bool TryParse(string ipaddress, string netmask, out IPNetwork2 ipnetwork) + { + IPNetwork2.InternalParse(true, ipaddress, netmask, out IPNetwork2 ipnetwork2); + bool parsed = ipnetwork2 != null; + ipnetwork = ipnetwork2; + + return parsed; + } + + /// + /// 192.168.168.100/24 + /// + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255. + /// + /// A string containing an ip address to convert. + /// A byte representing the netmask in cidr format (/24). + /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. + /// true if ipaddress/cidr was converted successfully; otherwise, false.. + public static bool TryParse(string ipaddress, byte cidr, out IPNetwork2 ipnetwork) + { + IPNetwork2.InternalParse(true, ipaddress, cidr, out IPNetwork2 ipnetwork2); + bool parsed = ipnetwork2 != null; + ipnetwork = ipnetwork2; + + return parsed; + } + + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. + /// true if network was converted successfully; otherwise, false.. + public static bool TryParse(string network, out IPNetwork2 ipnetwork) + { + bool sanitanize = true; + IPNetwork2.InternalParse(true, network, CidrGuess.ClassFull, sanitanize, out IPNetwork2 ipnetwork2); + bool parsed = ipnetwork2 != null; + ipnetwork = ipnetwork2; + + return parsed; + } + + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// Whether to sanitize network or not. + /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. + /// true if network was converted successfully; otherwise, false.. + public static bool TryParse(string network, bool sanitanize, out IPNetwork2 ipnetwork) + { + IPNetwork2.InternalParse(true, network, CidrGuess.ClassFull, sanitanize, out IPNetwork2 ipnetwork2); + bool parsed = ipnetwork2 != null; + ipnetwork = ipnetwork2; + + return parsed; + } + + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// An IPAdresse to convert. + /// A IPAdresse to be used as netmaks to convert. + /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. + /// true if network was converted successfully; otherwise, false.. + public static bool TryParse(IPAddress ipaddress, IPAddress netmask, out IPNetwork2 ipnetwork) + { + IPNetwork2.InternalParse(true, ipaddress, netmask, out IPNetwork2 ipnetwork2); + bool parsed = ipnetwork2 != null; + ipnetwork = ipnetwork2; + + return parsed; + } + + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// A ICidrGuess implementation that will be used to guess CIDR during converion. + /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. + /// true if network was converted successfully; otherwise, false.. + public static bool TryParse(string network, ICidrGuess cidrGuess, out IPNetwork2 ipnetwork) + { + IPNetwork2.InternalParse(true, network, cidrGuess, true, out IPNetwork2 ipnetwork2); + bool parsed = ipnetwork2 != null; + ipnetwork = ipnetwork2; + + return parsed; + } + + /// + /// 192.168.0.1/24 + /// 192.168.0.1 255.255.255.0 + /// + /// Network : 192.168.0.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.0.1 + /// End : 192.168.0.254 + /// Broadcast : 192.168.0.255. + /// + /// A string containing an ip network to convert. + /// A ICidrGuess implementation that will be used to guess CIDR during converion. + /// Whether to sanitize network or not. + /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. + /// true if network was converted successfully; otherwise, false.. + public static bool TryParse(string network, ICidrGuess cidrGuess, bool sanitanize, out IPNetwork2 ipnetwork) + { + IPNetwork2.InternalParse(true, network, cidrGuess, sanitanize, out IPNetwork2 ipnetwork2); + bool parsed = ipnetwork2 != null; + ipnetwork = ipnetwork2; + + return parsed; + } + + #endregion + + #region InternalParse + + /// + /// 192.168.168.100 - 255.255.255.0 + /// + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255. + /// + /// Whether to throw exception or not during conversion. + /// A string containing an ip address to convert. + /// A string containing a netmask to convert (255.255.255.0). + /// The resulting IPNetwork. + private static void InternalParse(bool tryParse, string ipaddress, string netmask, out IPNetwork2 ipnetwork) + { + if (string.IsNullOrEmpty(ipaddress)) + { + if (tryParse == false) + { + throw new ArgumentNullException("ipaddress"); + } + + ipnetwork = null; + return; + } + + if (string.IsNullOrEmpty(netmask)) + { + if (tryParse == false) + { + throw new ArgumentNullException("netmask"); + } + + ipnetwork = null; + return; + } + + bool ipaddressParsed = IPAddress.TryParse(ipaddress, out IPAddress ip); + if (ipaddressParsed == false) + { + if (tryParse == false) + { + throw new ArgumentException("ipaddress"); + } + + ipnetwork = null; + return; + } + + bool netmaskParsed = IPAddress.TryParse(netmask, out IPAddress mask); + if (netmaskParsed == false) + { + if (tryParse == false) + { + throw new ArgumentException("netmask"); + } + + ipnetwork = null; + return; + } + + IPNetwork2.InternalParse(tryParse, ip, mask, out ipnetwork); + } + + private static void InternalParse(bool tryParse, string network, ICidrGuess cidrGuess, bool sanitanize, out IPNetwork2 ipnetwork) + { + if (string.IsNullOrEmpty(network)) + { + if (tryParse == false) + { + throw new ArgumentNullException("network"); + } + + ipnetwork = null; + return; + } + + if (sanitanize) + { + network = Regex.Replace(network, @"[^0-9a-fA-F\.\/\s\:]+", string.Empty, RegexOptions.None, TimeSpan.FromMilliseconds(100)); + network = Regex.Replace(network, @"\s{2,}", " ", RegexOptions.None, TimeSpan.FromMilliseconds(100)); + network = network.Trim(); + } + + StringSplitOptions splitOptions = sanitanize ? StringSplitOptions.RemoveEmptyEntries : StringSplitOptions.None; + string[] args = network.Split(new char[] { ' ', '/' }, splitOptions); + byte cidr = 0; + + if (args.Length == 0) + { + if (tryParse == false) + { + throw new ArgumentNullException("network"); + } + + ipnetwork = null; + return; + } + + if (args.Length == 1) + { + string cidrlessNetwork = args[0]; + if (cidrGuess.TryGuessCidr(cidrlessNetwork, out cidr)) + { + IPNetwork2.InternalParse(tryParse, cidrlessNetwork, cidr, out ipnetwork); + return; + } + + if (tryParse == false) + { + throw new ArgumentException("network"); + } + + ipnetwork = null; + return; + } + + if (byte.TryParse(args[1], out cidr)) + { + IPNetwork2.InternalParse(tryParse, args[0], cidr, out ipnetwork); + return; + } + + IPNetwork2.InternalParse(tryParse, args[0], args[1], out ipnetwork); + return; + } + + /// + /// 192.168.168.100 255.255.255.0 + /// + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255. + /// + /// Whether to throw exception or not during conversion. + /// An ip address to convert. + /// A netmask to convert (255.255.255.0). + /// The resulting IPNetwork. + private static void InternalParse(bool tryParse, IPAddress ipaddress, IPAddress netmask, out IPNetwork2 ipnetwork) + { + if (ipaddress == null) + { + if (tryParse == false) + { + throw new ArgumentNullException("ipaddress"); + } + + ipnetwork = null; + return; + } + + if (netmask == null) + { + if (tryParse == false) + { + throw new ArgumentNullException("netmask"); + } + + ipnetwork = null; + return; + } + + var uintIpAddress = IPNetwork2.ToBigInteger(ipaddress); + bool parsed = IPNetwork2.TryToCidr(netmask, out byte? cidr2); + if (parsed == false) + { + if (tryParse == false) + { + throw new ArgumentException("netmask"); + } + + ipnetwork = null; + return; + } + + byte cidr = (byte)cidr2; + + var ipnet = new IPNetwork2(uintIpAddress, ipaddress.AddressFamily, cidr); + ipnetwork = ipnet; + + return; + } + + /// + /// 192.168.168.100/24 + /// + /// Network : 192.168.168.0 + /// Netmask : 255.255.255.0 + /// Cidr : 24 + /// Start : 192.168.168.1 + /// End : 192.168.168.254 + /// Broadcast : 192.168.168.255. + /// + /// Whether to throw exception or not during conversion. + /// A string containing an ip address to convert. + /// A byte representing the CIDR to be used in conversion (/24). + /// The resulting IPNetwork. + private static void InternalParse(bool tryParse, string ipaddress, byte cidr, out IPNetwork2 ipnetwork) + { + if (string.IsNullOrEmpty(ipaddress)) + { + if (tryParse == false) + { + throw new ArgumentNullException("ipaddress"); + } + + ipnetwork = null; + return; + } + + bool ipaddressParsed = IPAddress.TryParse(ipaddress, out IPAddress ip); + if (ipaddressParsed == false) + { + if (tryParse == false) + { + throw new ArgumentException("ipaddress"); + } + + ipnetwork = null; + return; + } + + bool parsedNetmask = IPNetwork2.TryToNetmask(cidr, ip.AddressFamily, out IPAddress mask); + if (parsedNetmask == false) + { + if (tryParse == false) + { + throw new ArgumentException("cidr"); + } + + ipnetwork = null; + return; + } + + IPNetwork2.InternalParse(tryParse, ip, mask, out ipnetwork); + } + #endregion + + #region converters + + #region ToUint + + /// + /// Convert an ipadress to decimal + /// 0.0.0.0 -> 0 + /// 0.0.1.0 -> 256. + /// + /// A string containing an ip address to convert. + /// A number representing the ipaddress. + public static BigInteger ToBigInteger(IPAddress ipaddress) + { + IPNetwork2.InternalToBigInteger(false, ipaddress, out BigInteger? uintIpAddress); + + return (BigInteger)uintIpAddress; + } + + /// + /// Convert an ipadress to decimal + /// 0.0.0.0 -> 0 + /// 0.0.1.0 -> 256. + /// + /// A string containing an ip address to convert. + /// A number representing the IPAdress. + /// true if ipaddress was converted successfully; otherwise, false. + public static bool TryToBigInteger(IPAddress ipaddress, out BigInteger? uintIpAddress) + { + IPNetwork2.InternalToBigInteger(true, ipaddress, out BigInteger? uintIpAddress2); + bool parsed = uintIpAddress2 != null; + uintIpAddress = uintIpAddress2; + + return parsed; + } + +#if TRAVISCI + public +#else + internal +#endif + static void InternalToBigInteger(bool tryParse, IPAddress ipaddress, out BigInteger? uintIpAddress) + { + if (ipaddress == null) + { + if (tryParse == false) + { + throw new ArgumentNullException("ipaddress"); + } + + uintIpAddress = null; + return; + } + +#if NET5_0 || NETSTANDARD2_1 + byte[] bytes = ipaddress.AddressFamily == AddressFamily.InterNetwork ? new byte[4] : new byte[16]; + Span span = bytes.AsSpan(); + if (!ipaddress.TryWriteBytes(span, out _)) + { + if (tryParse == false) + { + throw new ArgumentException("ipaddress"); + } + + uintIpAddress = null; + return; + } + + uintIpAddress = new BigInteger(span, isUnsigned: true, isBigEndian: true); +#elif NET45 || NET46 || NET47 || NETSTANDARD20 + byte[] bytes = ipaddress.GetAddressBytes(); + bytes.AsSpan().Reverse(); + + // add trailing 0 to make unsigned + byte[] unsigned = new byte[bytes.Length + 1]; + Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); + uintIpAddress = new BigInteger(unsigned); +#else + byte[] bytes = ipaddress.GetAddressBytes(); + Array.Reverse(bytes); + + // add trailing 0 to make unsigned + byte[] unsigned = new byte[bytes.Length + 1]; + Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); + uintIpAddress = new BigInteger(unsigned); +#endif + } + + /// + /// Convert a cidr to BigInteger netmask. + /// + /// A byte representing the netmask in cidr format (/24). + /// Either IPv4 or IPv6. + /// A number representing the netmask exprimed in CIDR. + public static BigInteger ToUint(byte cidr, AddressFamily family) + { + IPNetwork2.InternalToBigInteger(false, cidr, family, out BigInteger? uintNetmask); + + return (BigInteger)uintNetmask; + } + + /// + /// Convert a cidr to uint netmask. + /// + /// A byte representing the netmask in cidr format (/24). + /// Either IPv4 or IPv6. + /// A number representing the netmask. + /// true if cidr was converted successfully; otherwise, false. + public static bool TryToUint(byte cidr, AddressFamily family, out BigInteger? uintNetmask) + { + IPNetwork2.InternalToBigInteger(true, cidr, family, out BigInteger? uintNetmask2); + bool parsed = uintNetmask2 != null; + uintNetmask = uintNetmask2; + + return parsed; + } + + /// + /// Convert a cidr to uint netmask. + /// + /// Whether to throw exception or not during conversion. + /// A byte representing the netmask in cidr format (/24). + /// Either IPv4 or IPv6. + /// A number representing the netmask. +#if TRAVISCI + public +#else + internal +#endif + static void InternalToBigInteger(bool tryParse, byte cidr, AddressFamily family, out BigInteger? uintNetmask) + { + if (family == AddressFamily.InterNetwork && cidr > 32) + { + if (tryParse == false) + { + throw new ArgumentOutOfRangeException("cidr"); + } + + uintNetmask = null; + return; + } + + if (family == AddressFamily.InterNetworkV6 && cidr > 128) + { + if (tryParse == false) + { + throw new ArgumentOutOfRangeException("cidr"); + } + + uintNetmask = null; + return; + } + + if (family != AddressFamily.InterNetwork + && family != AddressFamily.InterNetworkV6) + { + if (tryParse == false) + { + throw new NotSupportedException(family.ToString()); + } + + uintNetmask = null; + return; + } + + if (family == AddressFamily.InterNetwork) + { + uintNetmask = cidr == 0 ? 0 : 0xffffffff << (32 - cidr); + return; + } + + var mask = new BigInteger(new byte[] + { + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0x00, + }); + + BigInteger masked = cidr == 0 ? 0 : mask << (128 - cidr); + byte[] m = masked.ToByteArray(); + byte[] bmask = new byte[17]; + int copy = m.Length > 16 ? 16 : m.Length; + Array.Copy(m, 0, bmask, 0, copy); + uintNetmask = new BigInteger(bmask); + } + + #endregion + + #region ToCidr + + /// + /// Convert netmask to CIDR + /// 255.255.255.0 -> 24 + /// 255.255.0.0 -> 16 + /// 255.0.0.0 -> 8. + /// + /// Whether to throw exception or not during conversion. + /// A number representing the netmask to convert. + /// Either IPv4 or IPv6. + /// A byte representing the netmask in cidr format (/24). + private static void InternalToCidr(bool tryParse, BigInteger netmask, AddressFamily family, out byte? cidr) + { + if (!IPNetwork2.InternalValidNetmask(netmask, family)) + { + if (tryParse == false) + { + throw new ArgumentException("netmask"); + } + + cidr = null; + return; + } + + byte cidr2 = IPNetwork2.BitsSet(netmask, family); + cidr = cidr2; + + return; + } + + /// + /// Convert netmask to CIDR + /// 255.255.255.0 -> 24 + /// 255.255.0.0 -> 16 + /// 255.0.0.0 -> 8. + /// + /// An IPAdress representing the CIDR to convert. + /// A byte representing the CIDR converted from the netmask. + public static byte ToCidr(IPAddress netmask) + { + IPNetwork2.InternalToCidr(false, netmask, out byte? cidr); + return (byte)cidr; + } + + /// + /// Convert netmask to CIDR + /// 255.255.255.0 -> 24 + /// 255.255.0.0 -> 16 + /// 255.0.0.0 -> 8. + /// + /// An IPAdress representing the CIDR to convert. + /// A byte representing the netmask in cidr format (/24). + /// true if netmask was converted successfully; otherwise, false. + public static bool TryToCidr(IPAddress netmask, out byte? cidr) + { + IPNetwork2.InternalToCidr(true, netmask, out byte? cidr2); + bool parsed = cidr2 != null; + cidr = cidr2; + return parsed; + } + + private static void InternalToCidr(bool tryParse, IPAddress netmask, out byte? cidr) + { + if (netmask == null) + { + if (tryParse == false) + { + throw new ArgumentNullException("netmask"); + } + + cidr = null; + return; + } + + bool parsed = IPNetwork2.TryToBigInteger(netmask, out BigInteger? uintNetmask2); + + // 20180217 lduchosal + // impossible to reach code. + // if (parsed == false) { + // if (tryParse == false) { + // throw new ArgumentException("netmask"); + // } + // cidr = null; + // return; + // } + var uintNetmask = (BigInteger)uintNetmask2; + + IPNetwork2.InternalToCidr(tryParse, uintNetmask, netmask.AddressFamily, out byte? cidr2); + cidr = cidr2; + + return; + } + + #endregion + + #region ToNetmask + + /// + /// Convert CIDR to netmask + /// 24 -> 255.255.255.0 + /// 16 -> 255.255.0.0 + /// 8 -> 255.0.0.0. + /// + /// + /// A byte representing the netmask in cidr format (/24). + /// Either IPv4 or IPv6. + /// An IPAdress representing cidr. + public static IPAddress ToNetmask(byte cidr, AddressFamily family) + { + IPNetwork2.InternalToNetmask(false, cidr, family, out IPAddress netmask); + + return netmask; + } + + /// + /// Convert CIDR to netmask + /// 24 -> 255.255.255.0 + /// 16 -> 255.255.0.0 + /// 8 -> 255.0.0.0. + /// + /// + /// A byte representing the netmask in cidr format (/24). + /// Either IPv4 or IPv6. + /// The resulting netmask. + /// true if cidr was converted successfully; otherwise, false. + public static bool TryToNetmask(byte cidr, AddressFamily family, out IPAddress netmask) + { + IPNetwork2.InternalToNetmask(true, cidr, family, out IPAddress netmask2); + bool parsed = netmask2 != null; + netmask = netmask2; + + return parsed; + } + +#if TRAVISCI + public +#else + internal +#endif + static void InternalToNetmask(bool tryParse, byte cidr, AddressFamily family, out IPAddress netmask) + { + if (family != AddressFamily.InterNetwork + && family != AddressFamily.InterNetworkV6) + { + if (tryParse == false) + { + throw new ArgumentException("family"); + } + + netmask = null; + return; + } + + // 20180217 lduchosal + // impossible to reach code, byte cannot be negative : + // + // if (cidr < 0) { + // if (tryParse == false) { + // throw new ArgumentOutOfRangeException("cidr"); + // } + // netmask = null; + // return; + // } + int maxCidr = family == Sockets.AddressFamily.InterNetwork ? 32 : 128; + if (cidr > maxCidr) + { + if (tryParse == false) + { + throw new ArgumentOutOfRangeException("cidr"); + } + + netmask = null; + return; + } + + BigInteger mask = IPNetwork2.ToUint(cidr, family); + var netmask2 = IPNetwork2.ToIPAddress(mask, family); + netmask = netmask2; + + return; + } + + #endregion + + #endregion + + #region utils + + #region BitsSet + + /// + /// Count bits set to 1 in netmask. + /// + /// + /// A number representing the netmask to count bits from. + /// Either IPv4 or IPv6. + /// The number of bytes set to 1. + private static byte BitsSet(BigInteger netmask, AddressFamily family) + { + string s = netmask.ToBinaryString(); + + return (byte)s.Replace("0", string.Empty) + .ToCharArray() + .Length; + } + + /// + /// Count bits set to 1 in netmask. + /// + /// A number representing the netmask to count bits from. + /// The number of bytes set to 1. + public static uint BitsSet(IPAddress netmask) + { + var uintNetmask = IPNetwork2.ToBigInteger(netmask); + uint bits = IPNetwork2.BitsSet(uintNetmask, netmask.AddressFamily); + + return bits; + } + + #endregion + + #region ValidNetmask + + /// + /// return true if netmask is a valid netmask + /// 255.255.255.0, 255.0.0.0, 255.255.240.0, ... + /// + /// + /// A number representing the netmask to validate. + /// true if netmask is a valid IP Netmask; otherwise, false. + public static bool ValidNetmask(IPAddress netmask) + { + if (netmask == null) + { + throw new ArgumentNullException("netmask"); + } + + var uintNetmask = IPNetwork2.ToBigInteger(netmask); + bool valid = IPNetwork2.InternalValidNetmask(uintNetmask, netmask.AddressFamily); + + return valid; + } + +#if TRAVISCI + public +#else + internal +#endif + static bool InternalValidNetmask(BigInteger netmask, AddressFamily family) + { + if (family != AddressFamily.InterNetwork + && family != AddressFamily.InterNetworkV6) + { + throw new ArgumentException("family"); + } + + BigInteger mask = family == AddressFamily.InterNetwork + ? new BigInteger(0x0ffffffff) + : new BigInteger(new byte[] + { + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, + 0x00, + }); + + BigInteger neg = (~netmask) & mask; + bool isNetmask = ((neg + 1) & neg) == 0; + + return isNetmask; + } + + #endregion + + #region ToIPAddress + + /// + /// Transform a uint ipaddress into IPAddress object. + /// + /// A number representing an ip address to convert. + /// Either IPv4 or IPv6. + /// An ip adress. + public static IPAddress ToIPAddress(BigInteger ipaddress, AddressFamily family) + { + int width = family == AddressFamily.InterNetwork ? 4 : 16; + byte[] bytes = ipaddress.ToByteArray(); + byte[] bytes2 = new byte[width]; + int copy = bytes.Length > width ? width : bytes.Length; + Array.Copy(bytes, 0, bytes2, 0, copy); + Array.Reverse(bytes2); + + byte[] sized = Resize(bytes2, family); + var ip = new IPAddress(sized); + return ip; + } + +#if TRAVISCI + public +#else + internal +#endif + static byte[] Resize(byte[] bytes, AddressFamily family) + { + if (family != AddressFamily.InterNetwork + && family != AddressFamily.InterNetworkV6) + { + throw new ArgumentException("family"); + } + + int width = family == AddressFamily.InterNetwork ? 4 : 16; + + if (bytes.Length > width) + { + throw new ArgumentException("bytes"); + } + + byte[] result = new byte[width]; + Array.Copy(bytes, 0, result, 0, bytes.Length); + + return result; + } + + #endregion + + #endregion + + #region contains + + /// + /// return true if ipaddress is contained in network. + /// + /// A string containing an ip address to convert. + /// true if ipaddress is contained into the IP Network; otherwise, false. + public bool Contains(IPAddress contains) + { + if (contains == null) + { + throw new ArgumentNullException("contains"); + } + + if (this.AddressFamily != contains.AddressFamily) + { + return false; + } + + BigInteger uintNetwork = this._network; + BigInteger uintBroadcast = this._broadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); + var uintAddress = IPNetwork2.ToBigInteger(contains); + + bool result = uintAddress >= uintNetwork + && uintAddress <= uintBroadcast; + + return result; + } + + /// + /// Determines whether the given IP address is part of the given IP network. + /// + /// The IP network. + /// The IP address. + /// + /// true if the IP address is part of the IP network; otherwise, false. + /// + [Obsolete("static Contains is deprecated, please use instance Contains.")] + public static bool Contains(IPNetwork2 network, IPAddress ipaddress) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.Contains(ipaddress); + } + + /// + /// return true is network2 is fully contained in network. + /// + /// The network to test. + /// It returns the boolean value. If network2 is in IPNetwork then it returns True, otherwise returns False. + public bool Contains(IPNetwork2 contains) + { + if (contains == null) + { + throw new ArgumentNullException("contains"); + } + + BigInteger uintNetwork = this._network; + BigInteger uintBroadcast = this._broadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); + + BigInteger uintFirst = contains._network; + BigInteger uintLast = contains._broadcast; // CreateBroadcast(ref uintFirst, network2._netmask, network2._family); + + bool result = uintFirst >= uintNetwork + && uintLast <= uintBroadcast; + + return result; + } + + /// + /// Determines if the given contains the specified . + /// + /// The network to check for containment. + /// The network to check if it is contained. + /// + /// true if the contains the ; otherwise, false. + /// + [Obsolete("static Contains is deprecated, please use instance Contains.")] + public static bool Contains(IPNetwork2 network, IPNetwork2 network2) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.Contains(network2); + } + + private static BigInteger CreateBroadcast(ref BigInteger network, BigInteger netmask, AddressFamily family) + { + int width = family == AddressFamily.InterNetwork ? 4 : 16; + BigInteger uintBroadcast = network + netmask.PositiveReverse(width); + + return uintBroadcast; + } + + #endregion + + #region overlap + + /// + /// return true is network2 overlap network. + /// + /// The network to test. + /// true if network2 overlaps into the IP Network; otherwise, false. + public bool Overlap(IPNetwork2 network2) + { + if (network2 == null) + { + throw new ArgumentNullException("network2"); + } + + BigInteger uintNetwork = this._network; + BigInteger uintBroadcast = this._broadcast; + + BigInteger uintFirst = network2._network; + BigInteger uintLast = network2._broadcast; + + bool overlap = + (uintFirst >= uintNetwork && uintFirst <= uintBroadcast) + || (uintLast >= uintNetwork && uintLast <= uintBroadcast) + || (uintFirst <= uintNetwork && uintLast >= uintBroadcast) + || (uintFirst >= uintNetwork && uintLast <= uintBroadcast); + + return overlap; + } + + /// + /// Determines if two IPNetwork2 objects overlap each other. + /// + /// The first IPNetwork2 object. + /// The second IPNetwork2 object. + /// Returns true if the two IPNetwork2 objects overlap, otherwise false. + [Obsolete("static Overlap is deprecated, please use instance Overlap.")] + public static bool Overlap(IPNetwork2 network, IPNetwork2 network2) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.Overlap(network2); + } + + #endregion + + #region ToString + + /// + /// Returns a string representation of the object. + /// + /// + /// A string representation of the object which includes the Network and Cidr values separated by a "/". + /// + public override string ToString() + { + return string.Format("{0}/{1}", this.Network, this.Cidr); + } + + #endregion + + #region IANA block + + private static readonly Lazy _iana_ablock_reserved = new(() => IPNetwork2.Parse("10.0.0.0/8")); + private static readonly Lazy _iana_bblock_reserved = new(() => IPNetwork2.Parse("172.16.0.0/12")); + private static readonly Lazy _iana_cblock_reserved = new(() => IPNetwork2.Parse("192.168.0.0/16")); + + /// + /// Gets 10.0.0.0/8. + /// + /// The IANA reserved IPNetwork 10.0.0.0/8. + public static IPNetwork2 IANA_ABLK_RESERVED1 + { + get + { + return _iana_ablock_reserved.Value; + } + } + + /// + /// Gets 172.12.0.0/12. + /// + /// The IANA reserved IPNetwork 172.12.0.0/12. + public static IPNetwork2 IANA_BBLK_RESERVED1 + { + get + { + return _iana_bblock_reserved.Value; + } + } + + /// + /// Gets 192.168.0.0/16. + /// + /// The IANA reserved IPNetwork 192.168.0.0/16. + public static IPNetwork2 IANA_CBLK_RESERVED1 + { + get + { + return _iana_cblock_reserved.Value; + } + } + + /// + /// return true if ipaddress is contained in + /// IANA_ABLK_RESERVED1, IANA_BBLK_RESERVED1, IANA_CBLK_RESERVED1. + /// + /// A string containing an ip address to convert. + /// true if ipaddress is a IANA reserverd IP Netowkr ; otherwise, false. + public static bool IsIANAReserved(IPAddress ipaddress) + { + if (ipaddress == null) + { + throw new ArgumentNullException("ipaddress"); + } + + return IPNetwork2.IANA_ABLK_RESERVED1.Contains(ipaddress) + || IPNetwork2.IANA_BBLK_RESERVED1.Contains(ipaddress) + || IPNetwork2.IANA_CBLK_RESERVED1.Contains(ipaddress); + } + + /// + /// return true if ipnetwork is contained in + /// IANA_ABLK_RESERVED1, IANA_BBLK_RESERVED1, IANA_CBLK_RESERVED1. + /// + /// true if the ipnetwork is a IANA reserverd IP Netowkr ; otherwise, false. + public bool IsIANAReserved() + { + return IPNetwork2.IANA_ABLK_RESERVED1.Contains(this) + || IPNetwork2.IANA_BBLK_RESERVED1.Contains(this) + || IPNetwork2.IANA_CBLK_RESERVED1.Contains(this); + } + + /// + /// Determines whether the specified IP network is reserved according to the IANA Reserved ranges. + /// + /// The IP network to check. + /// + /// true if the specified IP network is reserved according to the IANA Reserved ranges; otherwise, false. + /// + /// + /// + /// This method is obsolete and should not be used. Please use the instance method instead. + /// + /// + /// Throws an if is null. + /// + /// + [Obsolete("static IsIANAReserved is deprecated, please use instance IsIANAReserved.")] + public static bool IsIANAReserved(IPNetwork2 ipnetwork) + { + if (ipnetwork == null) + { + throw new ArgumentNullException("ipnetwork"); + } + + return ipnetwork.IsIANAReserved(); + } + + #endregion + + #region Subnet + + /// + /// Subnet a network into multiple nets of cidr mask + /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 + /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. + /// + /// A byte representing the CIDR to be used to subnet the current IPNetwork. + /// A IPNetworkCollection splitted by CIDR. + public IPNetworkCollection Subnet(byte cidr) + { + IPNetwork2.InternalSubnet(false, this, cidr, out IPNetworkCollection ipnetworkCollection); + + return ipnetworkCollection; + } + + /// + /// Subnet method is used to divide the given IP network into subnets with the specified CIDR. + /// + /// The IP network to be subnetted. + /// The CIDR (Classless Inter-Domain Routing) value used to subnet the network. + /// + /// A collection of subnets created from the given network using the specified CIDR. + /// + [Obsolete("static Subnet is deprecated, please use instance Subnet.")] + public static IPNetworkCollection Subnet(IPNetwork2 network, byte cidr) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.Subnet(cidr); + } + + /// + /// Subnet a network into multiple nets of cidr mask + /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 + /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. + /// + /// A byte representing the CIDR to be used to subnet the current IPNetwork. + /// The resulting subnetted IPNetwork. + /// true if network was split successfully; otherwise, false. + public bool TrySubnet(byte cidr, out IPNetworkCollection ipnetworkCollection) + { + IPNetwork2.InternalSubnet(true, this, cidr, out IPNetworkCollection inc); + if (inc == null) + { + ipnetworkCollection = null; + return false; + } + + ipnetworkCollection = inc; + return true; + } + + /// + /// Subnet a network into multiple nets of cidr mask + /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 + /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. + /// + /// + /// A byte representing the CIDR to be used to subnet the current IPNetwork. + /// The resulting subnetted IPNetwork. + /// true if network was split successfully; otherwise, false. + [Obsolete("static TrySubnet is deprecated, please use instance TrySubnet.")] + public static bool TrySubnet(IPNetwork2 network, byte cidr, out IPNetworkCollection ipnetworkCollection) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.TrySubnet(cidr, out ipnetworkCollection); + } + +#if TRAVISCI + public +#else + internal +#endif + static void InternalSubnet(bool trySubnet, IPNetwork2 network, byte cidr, out IPNetworkCollection ipnetworkCollection) + { + if (network == null) + { + if (trySubnet == false) + { + throw new ArgumentNullException("network"); + } + + ipnetworkCollection = null; + return; + } + + int maxCidr = network._family == Sockets.AddressFamily.InterNetwork ? 32 : 128; + if (cidr > maxCidr) + { + if (trySubnet == false) + { + throw new ArgumentOutOfRangeException("cidr"); + } + + ipnetworkCollection = null; + return; + } + + if (cidr < network.Cidr) + { + if (trySubnet == false) + { + throw new ArgumentException("cidr"); + } + + ipnetworkCollection = null; + return; + } + + ipnetworkCollection = new IPNetworkCollection(network, cidr); + return; + } + + #endregion + + #region Supernet + /// - /// Returns a string representation of the object. + /// Supernet two consecutive cidr equal subnet into a single one + /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 + /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 + /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. + /// + /// The network to supernet with. + /// A supernetted IP Network. + public IPNetwork2 Supernet(IPNetwork2 network2) + { + IPNetwork2.InternalSupernet(false, this, network2, out IPNetwork2 supernet); + return supernet; + } + + /// + /// Supernet two consecutive cidr equal subnet into a single one + /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 + /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 + /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. + /// + /// + /// The network to supernet with. + /// A supernetted IP Network. + [Obsolete("static Supernet is deprecated, please use instance Supernet.")] + public static IPNetwork2 Supernet(IPNetwork2 network, IPNetwork2 network2) + { + return network.Supernet(network2); + } + + /// + /// Try to supernet two consecutive cidr equal subnet into a single one + /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 + /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 + /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. + /// + /// The network to supernet with. + /// The resulting IPNetwork. + /// true if network2 was supernetted successfully; otherwise, false. + public bool TrySupernet(IPNetwork2 network2, out IPNetwork2 supernet) + { + IPNetwork2.InternalSupernet(true, this, network2, out IPNetwork2 outSupernet); + bool parsed = outSupernet != null; + supernet = outSupernet; + return parsed; + } + + /// + /// Try to supernet two consecutive cidr equal subnet into a single one + /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 + /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 + /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. + /// + /// + /// The network to supernet with. + /// The resulting IPNetwork. + /// true if network2 was supernetted successfully; otherwise, false. + [Obsolete("static TrySupernet is deprecated, please use instance TrySupernet.")] + public static bool TrySupernet(IPNetwork2 network, IPNetwork2 network2, out IPNetwork2 supernet) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.TrySupernet(network2, out supernet); + } + +#if TRAVISCI + public +#else + internal +#endif + static void InternalSupernet(bool trySupernet, IPNetwork2 network1, IPNetwork2 network2, out IPNetwork2 supernet) + { + if (network1 == null) + { + if (trySupernet == false) + { + throw new ArgumentNullException("network1"); + } + + supernet = null; + return; + } + + if (network2 == null) + { + if (trySupernet == false) + { + throw new ArgumentNullException("network2"); + } + + supernet = null; + return; + } + + if (network1.Contains(network2)) + { + supernet = new IPNetwork2(network1._network, network1._family, network1.Cidr); + return; + } + + if (network2.Contains(network1)) + { + supernet = new IPNetwork2(network2._network, network2._family, network2.Cidr); + return; + } + + if (network1._cidr != network2._cidr) + { + if (trySupernet == false) + { + throw new ArgumentException("cidr"); + } + + supernet = null; + return; + } + + IPNetwork2 first = (network1._network < network2._network) ? network1 : network2; + IPNetwork2 last = (network1._network > network2._network) ? network1 : network2; + + // Starting from here : + // network1 and network2 have the same cidr, + // network1 does not contain network2, + // network2 does not contain network1, + // first is the lower subnet + // last is the higher subnet + if ((first._broadcast + 1) != last._network) + { + if (trySupernet == false) + { + throw new ArgumentOutOfRangeException("network1"); + } + + supernet = null; + return; + } + + BigInteger uintSupernet = first._network; + byte cidrSupernet = (byte)(first._cidr - 1); + + var networkSupernet = new IPNetwork2(uintSupernet, first._family, cidrSupernet); + if (networkSupernet._network != first._network) + { + if (trySupernet == false) + { + throw new ArgumentException("network"); + } + + supernet = null; + return; + } + + supernet = networkSupernet; + return; + } + + #endregion + + #region GetHashCode + + /// + public override int GetHashCode() + { + return this._hashCode; + } + + /// + /// 20221105 : ldvhcosal + /// GetHashCode uses mutable attributes. That introduce undefined behaviour on Hashtable and dictionary. + /// + /// An number representing the hashCode. + private int ComputeHashCode() + { + return string.Format( + "{0}|{1}|{2}", + this._family.GetHashCode(), + this._network.GetHashCode(), + this._cidr.GetHashCode()).GetHashCode(); + } + + #endregion + + #region SupernetArray + + /// + /// Supernet a list of subnet + /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 + /// 192.168.0.0/24 + 192.168.1.0/24 + 192.168.2.0/24 + 192.168.3.0/24 = 192.168.0.0/22. + /// + /// A list of IPNetwork to merge into common supernets. + /// The result of IPNetwork if merges succeed, the first ipnetwork otherwise. + public static IPNetwork2[] Supernet(IPNetwork2[] ipnetworks) + { + InternalSupernet(false, ipnetworks, out IPNetwork2[] supernet); + return supernet; + } + + /// + /// Supernet a list of subnet + /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 + /// 192.168.0.0/24 + 192.168.1.0/24 + 192.168.2.0/24 + 192.168.3.0/24 = 192.168.0.0/22. + /// + /// A list of IPNetwork to merge into common supernets. + /// The result of IPNetwork merges. + /// true if ipnetworks was supernetted successfully; otherwise, false. + public static bool TrySupernet(IPNetwork2[] ipnetworks, out IPNetwork2[] supernet) + { + bool supernetted = InternalSupernet(true, ipnetworks, out supernet); + return supernetted; + } + +#if TRAVISCI + public +#else + internal +#endif + static bool InternalSupernet(bool trySupernet, IPNetwork2[] ipnetworks, out IPNetwork2[] supernet) + { + if (ipnetworks == null) + { + if (trySupernet == false) + { + throw new ArgumentNullException("ipnetworks"); + } + + supernet = null; + return false; + } + + if (ipnetworks.Length <= 0) + { + supernet = new IPNetwork2[0]; + return true; + } + + var supernetted = new List(); + List ipns = IPNetwork2.Array2List(ipnetworks); + Stack current = IPNetwork2.List2Stack(ipns); + int previousCount = 0; + int currentCount = current.Count; + + while (previousCount != currentCount) + { + supernetted.Clear(); + while (current.Count > 1) + { + IPNetwork2 ipn1 = current.Pop(); + IPNetwork2 ipn2 = current.Peek(); + + bool success = ipn1.TrySupernet(ipn2, out IPNetwork2 outNetwork); + if (success) + { + current.Pop(); + current.Push(outNetwork); + } + else + { + supernetted.Add(ipn1); + } + } + + if (current.Count == 1) + { + supernetted.Add(current.Pop()); + } + + previousCount = currentCount; + currentCount = supernetted.Count; + current = IPNetwork2.List2Stack(supernetted); + } + + supernet = supernetted.ToArray(); + return true; + } + + private static Stack List2Stack(List list) + { + var stack = new Stack(); + list.ForEach(new Action( + delegate(IPNetwork2 ipn) + { + stack.Push(ipn); + })); + return stack; + } + + private static List Array2List(IPNetwork2[] array) + { + var ipns = new List(); + ipns.AddRange(array); + IPNetwork2.RemoveNull(ipns); + ipns.Sort(new Comparison( + delegate(IPNetwork2 ipn1, IPNetwork2 ipn2) + { + int networkCompare = ipn1._network.CompareTo(ipn2._network); + if (networkCompare == 0) + { + int cidrCompare = ipn1._cidr.CompareTo(ipn2._cidr); + return cidrCompare; + } + + return networkCompare; + })); + ipns.Reverse(); + + return ipns; + } + + private static void RemoveNull(List ipns) + { + ipns.RemoveAll(new Predicate( + delegate(IPNetwork2 ipn) + { + if (ipn == null) + { + return true; + } + + return false; + })); + } + + #endregion + + #region WideSubnet + + /// + /// Finds the widest subnet that can contain both the start and end IP addresses. + /// + /// The starting IP address. + /// The ending IP address. + /// The widest subnet that contains both the start and end IP addresses. + /// Thrown when either the start or end IP address is null or empty. + /// Thrown when the start or end IP addresses are not valid. + /// Thrown when the start and end IP addresses have different address families. + public static IPNetwork2 WideSubnet(string start, string end) + { + if (string.IsNullOrEmpty(start)) + { + throw new ArgumentNullException("start"); + } + + if (string.IsNullOrEmpty(end)) + { + throw new ArgumentNullException("end"); + } + + if (!IPAddress.TryParse(start, out IPAddress startIP)) + { + throw new ArgumentException("start"); + } + + if (!IPAddress.TryParse(end, out IPAddress endIP)) + { + throw new ArgumentException("end"); + } + + if (startIP.AddressFamily != endIP.AddressFamily) + { + throw new NotSupportedException("MixedAddressFamily"); + } + + var ipnetwork = new IPNetwork2(0, startIP.AddressFamily, 0); + for (byte cidr = 32; cidr >= 0; cidr--) + { + var wideSubnet = IPNetwork2.Parse(start, cidr); + if (wideSubnet.Contains(endIP)) + { + ipnetwork = wideSubnet; + break; + } + } + + return ipnetwork; + } + + /// + /// Attempts to find the widest subnet that contains both the start and end IP addresses. objects. + /// + /// An array of IPNetwork2 objects to wide subnet. + /// When this method returns, contains the wide subnet of the IPNetwork2 objects, if wide subnet was successful; otherwise, null. + /// true if wide subnet was successful; otherwise, false. + public static bool TryWideSubnet(IPNetwork2[] ipnetworks, out IPNetwork2 ipnetwork) + { + IPNetwork2.InternalWideSubnet(true, ipnetworks, out IPNetwork2 ipn); + if (ipn == null) + { + ipnetwork = null; + return false; + } + + ipnetwork = ipn; + + return true; + } + + /// + /// Finds the widest subnet from an array of IP networks. An array of IPNetwork2 objects representing the IP networks. The widest subnet as an IPNetwork2 object. + /// / + public static IPNetwork2 WideSubnet(IPNetwork2[] ipnetworks) + { + IPNetwork2.InternalWideSubnet(false, ipnetworks, out IPNetwork2 ipn); + return ipn; + } + + internal static void InternalWideSubnet(bool tryWide, IPNetwork2[] ipnetworks, out IPNetwork2 ipnetwork) + { + if (ipnetworks == null) + { + if (tryWide == false) + { + throw new ArgumentNullException("ipnetworks"); + } + + ipnetwork = null; + return; + } + + IPNetwork2[] nnin = Array.FindAll(ipnetworks, new Predicate( + delegate(IPNetwork2 ipnet) + { + return ipnet != null; + })); + + if (nnin.Length <= 0) + { + if (tryWide == false) + { + throw new ArgumentException("ipnetworks"); + } + + ipnetwork = null; + return; + } + + if (nnin.Length == 1) + { + IPNetwork2 ipn0 = nnin[0]; + ipnetwork = ipn0; + return; + } + + Array.Sort(nnin); + IPNetwork2 nnin0 = nnin[0]; + BigInteger uintNnin0 = nnin0._ipaddress; + + IPNetwork2 nninX = nnin[nnin.Length - 1]; + IPAddress ipaddressX = nninX.Broadcast; + + AddressFamily family = ipnetworks[0]._family; + foreach (IPNetwork2 ipnx in ipnetworks) + { + if (ipnx._family != family) + { + throw new ArgumentException("MixedAddressFamily"); + } + } + + var ipn = new IPNetwork2(0, family, 0); + for (byte cidr = nnin0._cidr; cidr >= 0; cidr--) + { + var wideSubnet = new IPNetwork2(uintNnin0, family, cidr); + if (wideSubnet.Contains(ipaddressX)) + { + ipn = wideSubnet; + break; + } + } + + ipnetwork = ipn; + return; + } + + #endregion + + #region Print + + /// + /// Print an ipnetwork in a clear representation string. + /// + /// Dump an IPNetwork representation as string. + public string Print() + { + using (var sw = new StringWriter()) + { + sw.WriteLine("IPNetwork : {0}", this.ToString()); + sw.WriteLine("Network : {0}", this.Network); + sw.WriteLine("Netmask : {0}", this.Netmask); + sw.WriteLine("Cidr : {0}", this.Cidr); + sw.WriteLine("Broadcast : {0}", this.Broadcast); + sw.WriteLine("FirstUsable : {0}", this.FirstUsable); + sw.WriteLine("LastUsable : {0}", this.LastUsable); + sw.WriteLine("Usable : {0}", this.Usable); + + return sw.ToString(); + } + } + + /// + /// Print an ipnetwork in a clear representation string. + /// + /// Dump an IPNetwork representation as string. + [Obsolete("static Print is deprecated, please use instance Print.")] + public static string Print(IPNetwork2 ipnetwork) + { + if (ipnetwork == null) + { + throw new ArgumentNullException("ipnetwork"); + } + + return ipnetwork.Print(); + } + + #endregion + + #region TryGuessCidr + + /// + /// Delegate to CidrGuess ClassFull guessing of cidr. + /// + /// A string representing an IPAdress that will be used to guess the corresponding CIDR. + /// The resulting CIDR as byte. + /// true if cidr was guessed successfully; otherwise, false. + public static bool TryGuessCidr(string ip, out byte cidr) + { + return CidrGuess.ClassFull.TryGuessCidr(ip, out cidr); + } + + /// + /// Try to parse cidr. Have to be >= 0 and <= 32 or 128. + /// + /// A string representing a byte CIRD (/24). + /// Either IPv4 or IPv6. + /// The resulting CIDR as byte. + /// true if cidr was converted successfully; otherwise, false. + public static bool TryParseCidr(string sidr, AddressFamily family, out byte? cidr) + { + byte b = 0; + if (!byte.TryParse(sidr, out b)) + { + cidr = null; + return false; + } + + if (!IPNetwork2.TryToNetmask(b, family, out IPAddress netmask)) + { + cidr = null; + return false; + } + + cidr = b; + return true; + } + + #endregion + + #region ListIPAddress + + /// + /// List all ip addresses in a subnet. + /// + /// The network to list IPAdresses. + /// All the IPAdresses contained in ipnetwork. + [Obsolete("static ListIPAddress is deprecated, please use instance ListIPAddress.")] + public static IPAddressCollection ListIPAddress(IPNetwork2 ipnetwork) + { + return ipnetwork.ListIPAddress(); + } + + /// + /// List all ip addresses in a subnet. + /// + /// Filter IPAdresses from IPNetwork. + /// The filterted IPAdresses contained in ipnetwork. + public IPAddressCollection ListIPAddress(FilterEnum filter = FilterEnum.All) + { + return new IPAddressCollection(this, filter); + } + + #endregion + + #region IComparable Members + + /// + /// Compares two IPNetwork2 instances. /// + /// The first IPNetwork2 instance to compare. + /// The second IPNetwork2 instance to compare. /// - /// A string representation of the object which includes the Network and Cidr values separated by a "/". + /// A value indicating the relative order of the two IPNetwork2 instances. + /// Zero if the instances are equal. + /// A negative value if is less than . + /// A positive value if is greater than . /// - public override string ToString() + public static int Compare(IPNetwork2 left, IPNetwork2 right) { - return string.Format("{0}/{1}", this.Network, this.Cidr); + // two null IPNetworks are equal + if (ReferenceEquals(left, null) && ReferenceEquals(right, null)) + { + return 0; + } + + // two same IPNetworks are equal + if (ReferenceEquals(left, right)) + { + return 0; + } + + // null is always sorted first + if (ReferenceEquals(left, null)) + { + return -1; + } + + if (ReferenceEquals(right, null)) + { + return 1; + } + + // first test family + int result = left._family.CompareTo(right._family); + if (result != 0) + { + return result; + } + + // second test the network + result = left._network.CompareTo(right._network); + if (result != 0) + { + return result; + } + + // then test the cidr + result = left._cidr.CompareTo(right._cidr); + return result; + } + + /// + /// Compare two ipnetworks. + /// + /// The other network to compare to. + /// A signed number indicating the relative values of this instance and value.. + public int CompareTo(IPNetwork2 other) + { + return Compare(this, other); + } + + /// + /// Compare two ipnetworks. + /// + /// The other object to compare to. + /// A signed number indicating the relative values of this instance and value.. + public int CompareTo(object obj) + { + // null is at less + if (obj == null) + { + return 1; + } + + // convert to a proper Cidr object + var other = obj as IPNetwork2; + + // type problem if null + if (other == null) + { + throw new ArgumentException( + "The supplied parameter is an invalid type. Please supply an IPNetwork type.", + "obj"); + } + + // perform the comparision + return this.CompareTo(other); + } + + #endregion + + #region IEquatable Members + + /// + /// Compare two ipnetworks. + /// + /// An IPNetwork to compare. + /// An other IPNetwork to compare to. + /// true if obj has the same value as this instance; otherwise, false. + public static bool Equals(IPNetwork2 left, IPNetwork2 right) + { + return Compare(left, right) == 0; + } + + /// + /// Compare two ipnetworks. + /// + /// An IPNetwork to compare to this instance. + /// true if obj has the same value as this instance; otherwise, false. + public bool Equals(IPNetwork2 other) + { + return Equals(this, other); + } + + /// + /// Compare two ipnetworks. + /// + /// An object value to compare to this instance. + /// true if obj has the same value as this instance; otherwise, false. + public override bool Equals(object obj) + { + return Equals(this, obj as IPNetwork2); + } + + #endregion + + #region Operators + + /// + /// Compares two IPNetwork. + /// + /// left instance. + /// Right instance. + /// true if left equals right; otherwise, false. + public static bool operator ==(IPNetwork2 left, IPNetwork2 right) + { + return Equals(left, right); + } + + /// + /// Compares two IPNetwork. + /// + /// left instance. + /// Right instance. + /// true if left does not equals right; otherwise, false. + public static bool operator !=(IPNetwork2 left, IPNetwork2 right) + { + return !Equals(left, right); + } + + /// + /// Compares two IPNetwork. + /// + /// left instance. + /// Right instance. + /// true if left is less than right; otherwise, false. + public static bool operator <(IPNetwork2 left, IPNetwork2 right) + { + return Compare(left, right) < 0; + } + + /// + /// Compares two IPNetwork. + /// + /// left instance. + /// Right instance. + /// true if left is greater than right; otherwise, false. + public static bool operator >(IPNetwork2 left, IPNetwork2 right) + { + return Compare(left, right) > 0; + } + + #endregion + + #region XmlSerialization + + /// + /// Initializes a new instance of the class. + /// Created for DataContractSerialization. Better use static methods IPNetwork.Parse() to create IPNetworks. + /// + public IPNetwork2() + : this(0, AddressFamily.InterNetwork, 0) + { + } + + #endregion + + #region ISerializable + internal struct IPNetworkInteral + { + public BigInteger IPAddress; + public byte Cidr; + public AddressFamily AddressFamily; + } + + private IPNetwork2(SerializationInfo info, StreamingContext context) + { + string sipnetwork = (string)info.GetValue("IPNetwork", typeof(string)); + var ipnetwork = IPNetwork2.Parse(sipnetwork); + + this._ipaddress = ipnetwork._ipaddress; + this._cidr = ipnetwork._cidr; + this._family = ipnetwork._family; + } + + void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) + { + info.AddValue("IPNetwork", this.ToString()); + } + + #endregion + + #region WildcardMask + + /// + /// Gets netmask Inverse + /// https://en.wikipedia.org/wiki/Wildcard_mask + /// + /// A wildcard mask is a mask of bits that indicates which parts of an IP address are available for examination. + /// In the Cisco IOS,[1] they are used in several places, for example: + /// To indicate the size of a network or subnet for some routing protocols, such as OSPF. + /// To indicate what IP addresses should be permitted or denied in access control lists(ACLs). + /// + /// A wildcard mask can be thought of as an inverted subnet mask.For example, + /// a subnet mask of 255.255.255.0 (binary equivalent = 11111111.11111111.11111111.00000000) + /// inverts to a wildcard mask of 0.0.0.255 (binary equivalent = 00000000.00000000.00000000.11111111). + /// + /// A wild card mask is a matching rule.[2] The rule for a wildcard mask is: + /// 0 means that the equivalent bit must match + /// 1 means that the equivalent bit does not matter + /// + /// Any wildcard bit-pattern can be masked for examination.For example, a wildcard mask of 0.0.0.254 + /// (binary equivalent = 00000000.00000000.00000000.11111110) applied to IP address 10.10.10.2 + /// (00001010.00001010.00001010.00000010) will match even-numbered IP addresses 10.10.10.0, 10.10.10.2, + /// 10.10.10.4, 10.10.10.6 etc. + /// + /// Same mask applied to 10.10.10.1 (00001010.00001010.00001010.00000001) will match + /// odd-numbered IP addresses 10.10.10.1, 10.10.10.3, 10.10.10.5 etc. + /// + /// A network and wildcard mask combination of 1.1.1.1 0.0.0.0 would match an interface configured + /// exactly with 1.1.1.1 only, and nothing else. + /// + /// Wildcard masks are used in situations where subnet masks may not apply.For example, + /// when two affected hosts fall in different subnets, the use of a wildcard mask will + /// group them together. + /// + /// List of wildcard masks + /// Slash Netmask Wildcard mask + /// /32 255.255.255.255 0.0.0.0 + /// /31 255.255.255.254 0.0.0.1 + /// /30 255.255.255.252 0.0.0.3 + /// /29 255.255.255.248 0.0.0.7 + /// /28 255.255.255.240 0.0.0.15 + /// /27 255.255.255.224 0.0.0.31 + /// /26 255.255.255.192 0.0.0.63 + /// /25 255.255.255.128 0.0.0.127 + /// /24 255.255.255.0 0.0.0.255 + /// /23 255.255.254.0 0.0.1.255 + /// /22 255.255.252.0 0.0.3.255 + /// /21 255.255.248.0 0.0.7.255 + /// /20 255.255.240.0 0.0.15.255 + /// /19 255.255.224.0 0.0.31.255 + /// /18 255.255.192.0 0.0.63.255 + /// /17 255.255.128.0 0.0.127.255 + /// /16 255.255.0.0 0.0.255.255 + /// /15 255.254.0.0 0.1.255.255 + /// /14 255.252.0.0 0.3.255.255 + /// /13 255.248.0.0 0.7.255.255 + /// /12 255.240.0.0 0.15.255.255 + /// /11 255.224.0.0 0.31.255.255 + /// /10 255.192.0.0 0.63.255.255 + /// /9 255.128.0.0 0.127.255.255 + /// /8 255.0.0.0 0.255.255.255 + /// /7 254.0.0.0 1.255.255.255 + /// /6 252.0.0.0 3.255.255.255 + /// /5 248.0.0.0 7.255.255.255 + /// /4 240.0.0.0 15.255.255.255 + /// /3 224.0.0.0 31.255.255.255 + /// /2 192.0.0.0 63.255.255.255 + /// /1 128.0.0.0 127.255.255.255 + /// /0 0.0.0.0 255.255.255.255. + /// + /// + public IPAddress WildcardMask + { + get + { + byte cidr = this._family == AddressFamily.InterNetwork ? (byte)32 : (byte)128; + BigInteger netmask = IPNetwork2.ToUint(cidr, this._family); + BigInteger wildcardmask = netmask - this._netmask; + + return IPNetwork2.ToIPAddress(wildcardmask, this._family); + } } -} + #endregion +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetworkCollection.cs b/src/System.Net.IPNetwork/IPNetworkCollection.cs index 3c4e1168..1c656511 100644 --- a/src/System.Net.IPNetwork/IPNetworkCollection.cs +++ b/src/System.Net.IPNetwork/IPNetworkCollection.cs @@ -13,28 +13,28 @@ namespace System.Net; /// public class IPNetworkCollection : IEnumerable, IEnumerator { - private readonly byte cidrSubnet; - private readonly IPNetwork2 ipnetwork; - private BigInteger enumerator; + private BigInteger _enumerator; + private byte _cidrSubnet; + private IPNetwork2 _ipnetwork; - private byte Cidr + private byte _cidr { - get { return this.ipnetwork.Cidr; } + get { return this._ipnetwork.Cidr; } } - private BigInteger Broadcast + private BigInteger _broadcast { - get { return IPNetwork2.ToBigInteger(this.ipnetwork.Broadcast); } + get { return IPNetwork2.ToBigInteger(this._ipnetwork.Broadcast); } } - private BigInteger LastUsable + private BigInteger _lastUsable { - get { return IPNetwork2.ToBigInteger(this.ipnetwork.LastUsable); } + get { return IPNetwork2.ToBigInteger(this._ipnetwork.LastUsable); } } - private BigInteger Network + private BigInteger _network { - get { return IPNetwork2.ToBigInteger(this.ipnetwork.Network); } + get { return IPNetwork2.ToBigInteger(this._ipnetwork.Network); } } /// @@ -45,32 +45,28 @@ private BigInteger Network /// This class is used to generate a collection of IP networks by dividing the given parent IP network into subnets based on the provided subnet CIDR (Classless Inter-Domain Routing /// ) value. /// - /// The network. - /// The subnet. - /// Cidr is out of range. - /// Network is invalid. #if TRAVISCI public #else - internal + internal #endif IPNetworkCollection(IPNetwork2 ipnetwork, byte cidrSubnet) { - int maxCidr = ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetwork ? 32 : 128; - if (cidrSubnet > maxCidr) - { - throw new ArgumentOutOfRangeException("cidrSubnet"); - } + int maxCidr = ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetwork ? 32 : 128; + if (cidrSubnet > maxCidr) + { + throw new ArgumentOutOfRangeException("cidrSubnet"); + } - if (cidrSubnet < ipnetwork.Cidr) - { - throw new ArgumentException("cidrSubnet"); - } + if (cidrSubnet < ipnetwork.Cidr) + { + throw new ArgumentException("cidrSubnet"); + } - this.cidrSubnet = cidrSubnet; - this.ipnetwork = ipnetwork; - this.enumerator = -1; - } + this._cidrSubnet = cidrSubnet; + this._ipnetwork = ipnetwork; + this._enumerator = -1; + } #region Count, Array, Enumerator @@ -81,9 +77,9 @@ public BigInteger Count { get { - var count = BigInteger.Pow(2, this.cidrSubnet - this.Cidr); - return count; - } + var count = BigInteger.Pow(2, this._cidrSubnet - this._cidr); + return count; + } } /// @@ -98,43 +94,40 @@ public IPNetwork2 this[BigInteger i] { get { - if (i >= this.Count) - { - throw new ArgumentOutOfRangeException("i"); + if (i >= this.Count) + { + throw new ArgumentOutOfRangeException("i"); + } + + BigInteger last = this._ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetworkV6 + ? this._lastUsable : this._broadcast; + BigInteger increment = (last - this._network) / this.Count; + BigInteger uintNetwork = this._network + ((increment + 1) * i); + var ipn = new IPNetwork2(uintNetwork, this._ipnetwork.AddressFamily, this._cidrSubnet); + return ipn; } - - BigInteger last = this.ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetworkV6 - ? this.LastUsable - : this.Broadcast; - BigInteger increment = (last - this.Network) / this.Count; - BigInteger uintNetwork = this.Network + ((increment + 1) * i); - var ipn = new IPNetwork2(uintNetwork, this.ipnetwork.AddressFamily, this.cidrSubnet); - return ipn; - } } #endregion #region IEnumerable Members - /// IEnumerator IEnumerable.GetEnumerator() { - return this; - } + return this; + } - /// IEnumerator IEnumerable.GetEnumerator() { - return this; - } + return this; + } #region IEnumerator Members /// public IPNetwork2 Current { - get { return this[this.enumerator]; } + get { return this[this._enumerator]; } } #endregion @@ -151,9 +144,9 @@ public IPNetwork2 Current /// public void Dispose() { - // nothing to dispose - return; - } + // nothing to dispose + return; + } #endregion @@ -176,22 +169,22 @@ object IEnumerator.Current /// public bool MoveNext() { - this.enumerator++; - if (this.enumerator >= this.Count) - { - return false; - } + this._enumerator++; + if (this._enumerator >= this.Count) + { + return false; + } - return true; - } + return true; + } /// /// Sets the enumerator to its initial position, which is before the first element in the collection. /// public void Reset() { - this.enumerator = -1; - } + this._enumerator = -1; + } #endregion From 62c38b37efe835c6d95884c693a811cbb03aabb3 Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sat, 29 Mar 2025 21:10:35 +0100 Subject: [PATCH 14/25] Feat: sign assembly Fix: documentation on public methodes --- src/System.Net.IPNetwork/IPNetwork2.cs | 165 +- .../IPNetworkCollection.cs | 91 +- .../IPNetworkTest/IPNetworkResizeTests.cs | 2 +- .../IPNetworkTest/IPNetworkSupernetTests.cs | 163 +- src/TestProject/IPNetworkV6UnitTest.cs | 3064 ++++++++--------- src/TestProject/SerializeDataContractTest.cs | 30 +- 6 files changed, 1775 insertions(+), 1740 deletions(-) diff --git a/src/System.Net.IPNetwork/IPNetwork2.cs b/src/System.Net.IPNetwork/IPNetwork2.cs index b5ddfec9..197d010a 100644 --- a/src/System.Net.IPNetwork/IPNetwork2.cs +++ b/src/System.Net.IPNetwork/IPNetwork2.cs @@ -56,7 +56,10 @@ public string Value #endregion #region accessors - + + /// + /// Gets the network address calculated by applying the subnet mask to the IP address. + /// internal BigInteger _network { get @@ -88,6 +91,9 @@ public AddressFamily AddressFamily } } + /// + /// Gets the netmask as a BigInteger representation based on the CIDR and address family. + /// internal BigInteger _netmask { get @@ -107,6 +113,9 @@ public IPAddress Netmask } } + /// + /// Gets the broadcast address calculated from the network address and the netmask. + /// internal BigInteger _broadcast { get @@ -224,16 +233,16 @@ public byte Cidr #region constructor + /// + /// Initializes a new instance of the class with the specified IP address, address family, and CIDR. + /// + /// The IP address of the network. + /// The address family of the network. + /// The CIDR (Classless Inter-Domain Routing) notation of the network. #if TRAVISCI - public + public #else - /// - /// Initializes a new instance of the class with the specified IP address, address family, and CIDR. - /// - /// The IP address of the network. - /// The address family of the network. - /// The CIDR (Classless Inter-Domain Routing) notation of the network. - internal + internal #endif IPNetwork2(BigInteger ipaddress, AddressFamily family, byte cidr) { @@ -870,12 +879,13 @@ public static bool TryToBigInteger(IPAddress ipaddress, out BigInteger? uintIpAd return parsed; } -#if TRAVISCI - public -#else - internal -#endif - static void InternalToBigInteger(bool tryParse, IPAddress ipaddress, out BigInteger? uintIpAddress) + /// + /// Converts an IPAddress to a nullable BigInteger representation. + /// + /// Indicates whether the method should handle errors silently (true) or throw exceptions (false). + /// The IPAddress to convert. + /// The resulting BigInteger representation of the IP address, or null if conversion fails and tryParse is true. + internal static void InternalToBigInteger(bool tryParse, IPAddress ipaddress, out BigInteger? uintIpAddress) { if (ipaddress == null) { @@ -958,12 +968,7 @@ public static bool TryToUint(byte cidr, AddressFamily family, out BigInteger? ui /// A byte representing the netmask in cidr format (/24). /// Either IPv4 or IPv6. /// A number representing the netmask. -#if TRAVISCI - public -#else - internal -#endif - static void InternalToBigInteger(bool tryParse, byte cidr, AddressFamily family, out BigInteger? uintNetmask) +internal static void InternalToBigInteger(bool tryParse, byte cidr, AddressFamily family, out BigInteger? uintNetmask) { if (family == AddressFamily.InterNetwork && cidr > 32) { @@ -1159,12 +1164,14 @@ public static bool TryToNetmask(byte cidr, AddressFamily family, out IPAddress n return parsed; } -#if TRAVISCI - public -#else - internal -#endif - static void InternalToNetmask(bool tryParse, byte cidr, AddressFamily family, out IPAddress netmask) + /// + /// Converts a CIDR value to its corresponding IPAddress netmask. + /// + /// If true, handles errors silently; otherwise, throws exceptions. + /// The CIDR value to convert. + /// The address family (IPv4 or IPv6). + /// The resulting IPAddress netmask. + internal static void InternalToNetmask(bool tryParse, byte cidr, AddressFamily family, out IPAddress netmask) { if (family != AddressFamily.InterNetwork && family != AddressFamily.InterNetworkV6) @@ -1178,16 +1185,6 @@ static void InternalToNetmask(bool tryParse, byte cidr, AddressFamily family, ou return; } - // 20180217 lduchosal - // impossible to reach code, byte cannot be negative : - // - // if (cidr < 0) { - // if (tryParse == false) { - // throw new ArgumentOutOfRangeException("cidr"); - // } - // netmask = null; - // return; - // } int maxCidr = family == Sockets.AddressFamily.InterNetwork ? 32 : 128; if (cidr > maxCidr) { @@ -1268,12 +1265,15 @@ public static bool ValidNetmask(IPAddress netmask) return valid; } -#if TRAVISCI - public -#else - internal -#endif - static bool InternalValidNetmask(BigInteger netmask, AddressFamily family) + /// + /// Determines whether a given BigInteger netmask is valid for the specified address family. + /// + /// The netmask represented as a BigInteger. + /// The address family (IPv4 or IPv6). + /// + /// true if the netmask is valid; otherwise, false. + /// + internal static bool InternalValidNetmask(BigInteger netmask, AddressFamily family) { if (family != AddressFamily.InterNetwork && family != AddressFamily.InterNetworkV6) @@ -1322,12 +1322,14 @@ public static IPAddress ToIPAddress(BigInteger ipaddress, AddressFamily family) return ip; } -#if TRAVISCI - public -#else - internal -#endif - static byte[] Resize(byte[] bytes, AddressFamily family) + /// + /// Resizes the given byte array to match the expected width for the specified address family (IPv4 or IPv6). + /// Pads with zeros if the array is shorter than required. + /// + /// The byte array to resize. + /// The address family (IPv4 or IPv6). + /// A byte array resized to the appropriate length for the address family. + internal static byte[] Resize(byte[] bytes, AddressFamily family) { if (family != AddressFamily.InterNetwork && family != AddressFamily.InterNetworkV6) @@ -1692,12 +1694,14 @@ public static bool TrySubnet(IPNetwork2 network, byte cidr, out IPNetworkCollect return network.TrySubnet(cidr, out ipnetworkCollection); } -#if TRAVISCI - public -#else - internal -#endif - static void InternalSubnet(bool trySubnet, IPNetwork2 network, byte cidr, out IPNetworkCollection ipnetworkCollection) + /// + /// Splits a given IP network into smaller subnets of the specified CIDR size. + /// + /// Indicates whether to throw exceptions or return null on failure. + /// The IP network to be subnetted. + /// The CIDR value used to define the new subnet size. + /// The resulting collection of subnets, or null if the operation fails and trySubnet is true. + internal static void InternalSubnet(bool trySubnet, IPNetwork2 network, byte cidr, out IPNetworkCollection ipnetworkCollection) { if (network == null) { @@ -1808,12 +1812,14 @@ public static bool TrySupernet(IPNetwork2 network, IPNetwork2 network2, out IPNe return network.TrySupernet(network2, out supernet); } -#if TRAVISCI - public -#else - internal -#endif - static void InternalSupernet(bool trySupernet, IPNetwork2 network1, IPNetwork2 network2, out IPNetwork2 supernet) + /// + /// Attempts to merge two adjacent IP networks with equal CIDR values into a single supernet. + /// + /// If true, suppresses exceptions on failure; otherwise, throws. + /// The first IP network. + /// The second IP network. + /// The resulting supernet if the merge is successful; otherwise, null. + internal static void InternalSupernet(bool trySupernet, IPNetwork2 network1, IPNetwork2 network2, out IPNetwork2 supernet) { if (network1 == null) { @@ -1954,12 +1960,14 @@ public static bool TrySupernet(IPNetwork2[] ipnetworks, out IPNetwork2[] superne return supernetted; } -#if TRAVISCI - public -#else - internal -#endif - static bool InternalSupernet(bool trySupernet, IPNetwork2[] ipnetworks, out IPNetwork2[] supernet) + /// + /// Attempts to merge an array of adjacent IP networks with equal CIDR values into the smallest possible set of supernets. + /// + /// If true, suppresses exceptions on failure; otherwise, throws. + /// The array of IP networks to attempt to merge. + /// The resulting array of merged supernets if successful; otherwise, the original input. + /// true if supernetting was successful; otherwise, false. + internal static bool InternalSupernet(bool trySupernet, IPNetwork2[] ipnetworks, out IPNetwork2[] supernet) { if (ipnetworks == null) { @@ -2148,6 +2156,12 @@ public static IPNetwork2 WideSubnet(IPNetwork2[] ipnetworks) return ipn; } + /// + /// Attempts to find the widest subnet that includes all given IPNetwork2 instances. + /// + /// If true, suppresses exceptions on invalid input; otherwise, throws. + /// The array of IPNetwork2 instances to encompass within the widest subnet. + /// The resulting widest IPNetwork2 subnet, or null if unsuccessful and tryWide is true. internal static void InternalWideSubnet(bool tryWide, IPNetwork2[] ipnetworks, out IPNetwork2 ipnetwork) { if (ipnetworks == null) @@ -2518,10 +2532,26 @@ public IPNetwork2() #endregion #region ISerializable + + /// + /// Represents an internal structure to hold an IP address, its CIDR value, and address family. + /// Used for internal operations within the IPNetwork2 class. + /// internal struct IPNetworkInteral { + /// + /// Represents the IP address value. + /// public BigInteger IPAddress; + + /// + /// Represents the CIDR (Classless Inter-Domain Routing) value. + /// public byte Cidr; + + /// + /// Represents the address family (IPv4 or IPv6). + /// public AddressFamily AddressFamily; } @@ -2535,6 +2565,7 @@ private IPNetwork2(SerializationInfo info, StreamingContext context) this._family = ipnetwork._family; } + /// void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue("IPNetwork", this.ToString()); diff --git a/src/System.Net.IPNetwork/IPNetworkCollection.cs b/src/System.Net.IPNetwork/IPNetworkCollection.cs index 1c656511..1985a0a7 100644 --- a/src/System.Net.IPNetwork/IPNetworkCollection.cs +++ b/src/System.Net.IPNetwork/IPNetworkCollection.cs @@ -48,26 +48,26 @@ private BigInteger _network #if TRAVISCI public #else - internal + internal #endif IPNetworkCollection(IPNetwork2 ipnetwork, byte cidrSubnet) { - int maxCidr = ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetwork ? 32 : 128; - if (cidrSubnet > maxCidr) - { - throw new ArgumentOutOfRangeException("cidrSubnet"); - } - - if (cidrSubnet < ipnetwork.Cidr) - { - throw new ArgumentException("cidrSubnet"); - } + int maxCidr = ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetwork ? 32 : 128; + if (cidrSubnet > maxCidr) + { + throw new ArgumentOutOfRangeException("cidrSubnet"); + } - this._cidrSubnet = cidrSubnet; - this._ipnetwork = ipnetwork; - this._enumerator = -1; + if (cidrSubnet < ipnetwork.Cidr) + { + throw new ArgumentException("cidrSubnet"); } + this._cidrSubnet = cidrSubnet; + this._ipnetwork = ipnetwork; + this._enumerator = -1; + } + #region Count, Array, Enumerator /// @@ -77,9 +77,9 @@ public BigInteger Count { get { - var count = BigInteger.Pow(2, this._cidrSubnet - this._cidr); - return count; - } + var count = BigInteger.Pow(2, this._cidrSubnet - this._cidr); + return count; + } } /// @@ -94,33 +94,36 @@ public IPNetwork2 this[BigInteger i] { get { - if (i >= this.Count) - { - throw new ArgumentOutOfRangeException("i"); - } - - BigInteger last = this._ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetworkV6 - ? this._lastUsable : this._broadcast; - BigInteger increment = (last - this._network) / this.Count; - BigInteger uintNetwork = this._network + ((increment + 1) * i); - var ipn = new IPNetwork2(uintNetwork, this._ipnetwork.AddressFamily, this._cidrSubnet); - return ipn; + if (i >= this.Count) + { + throw new ArgumentOutOfRangeException("i"); } + + BigInteger last = this._ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetworkV6 + ? this._lastUsable + : this._broadcast; + BigInteger increment = (last - this._network) / this.Count; + BigInteger uintNetwork = this._network + ((increment + 1) * i); + var ipn = new IPNetwork2(uintNetwork, this._ipnetwork.AddressFamily, this._cidrSubnet); + return ipn; + } } #endregion #region IEnumerable Members + /// IEnumerator IEnumerable.GetEnumerator() { - return this; - } + return this; + } + /// IEnumerator IEnumerable.GetEnumerator() { - return this; - } + return this; + } #region IEnumerator Members @@ -144,9 +147,9 @@ public IPNetwork2 Current /// public void Dispose() { - // nothing to dispose - return; - } + // nothing to dispose + return; + } #endregion @@ -169,22 +172,22 @@ object IEnumerator.Current /// public bool MoveNext() { - this._enumerator++; - if (this._enumerator >= this.Count) - { - return false; - } - - return true; + this._enumerator++; + if (this._enumerator >= this.Count) + { + return false; } + return true; + } + /// /// Sets the enumerator to its initial position, which is before the first element in the collection. /// public void Reset() { - this._enumerator = -1; - } + this._enumerator = -1; + } #endregion diff --git a/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs b/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs index 0e7fadd2..2a07b873 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs @@ -11,7 +11,7 @@ namespace TestProject.IPNetworkTest; public class IPNetworkResizeTests { /// - /// Resize a too big network. + /// Resize a too big ipnetowkr /// [TestMethod] [ExpectedException(typeof(ArgumentException))] diff --git a/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs index b35b19b4..b38b9f81 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs @@ -29,9 +29,10 @@ public void TestSupernetInternal1() [ExpectedException(typeof(ArgumentNullException))] public void TestSupernetInternal2() { - IPNetwork2 result; - IPNetwork2.InternalSupernet(false, null, null, out result); - } + IPNetwork2 result; + IPNetwork2.InternalSupernet(false, null, null, out result); + } + /// /// Tests Supernet functionality with Issue33__TestSupernet__Bug_or_default_behavior. @@ -40,13 +41,13 @@ public void TestSupernetInternal2() [ExpectedException(typeof(ArgumentOutOfRangeException))] public void Issue33__TestSupernet__Bug_or_default_behavior() { - var network1 = IPNetwork2.Parse("192.168.0.0/24"); - var network2 = IPNetwork2.Parse("192.168.2.0/24"); - var expected = IPNetwork2.Parse("192.168.0.0/23"); - IPNetwork2 supernet = network1.Supernet(network2); + var network1 = IPNetwork2.Parse("192.168.0.0/24"); + var network2 = IPNetwork2.Parse("192.168.2.0/24"); + var expected = IPNetwork2.Parse("192.168.0.0/23"); + IPNetwork2 supernet = network1.Supernet(network2); - Assert.AreEqual(expected, supernet, "supernet"); - } + Assert.AreEqual(expected, supernet, "supernet"); + } /// /// Tests Supernet functionality. @@ -54,13 +55,13 @@ public void Issue33__TestSupernet__Bug_or_default_behavior() [TestMethod] public void Issue33__TestWideSubnet__Bug_or_default_behavior() { - var network1 = IPNetwork2.Parse("192.168.0.0/24"); - var network2 = IPNetwork2.Parse("192.168.2.0/24"); - var expected = IPNetwork2.Parse("192.168.0.0/22"); - var widenetwork = IPNetwork2.WideSubnet(new[] { network1, network2 }); + var network1 = IPNetwork2.Parse("192.168.0.0/24"); + var network2 = IPNetwork2.Parse("192.168.2.0/24"); + var expected = IPNetwork2.Parse("192.168.0.0/22"); + var widenetwork = IPNetwork2.WideSubnet(new[] { network1, network2 }); - Assert.AreEqual(expected, widenetwork, "widesubnet"); - } + Assert.AreEqual(expected, widenetwork, "widesubnet"); + } /// /// Tests Supernet functionality. @@ -68,15 +69,15 @@ public void Issue33__TestWideSubnet__Bug_or_default_behavior() [TestMethod] public void Issue162__Test_IPrangeToCIDRnotation() { - string network1 = "172.64.0.0"; - string network2 = "172.71.255.255"; + string network1 = "172.64.0.0"; + string network2 = "172.71.255.255"; - var final = IPNetwork2.WideSubnet(network1, network2); - string result = final.ToString(); + var final = IPNetwork2.WideSubnet(network1, network2); + string result = final.ToString(); - string expected = "172.64.0.0/13"; - Assert.AreEqual(expected, result, "Supernet"); - } + string expected = "172.64.0.0/13"; + Assert.AreEqual(expected, result, "Supernet"); + } /// /// Tests Supernet functionality with Supernet1. @@ -84,13 +85,13 @@ public void Issue162__Test_IPrangeToCIDRnotation() [TestMethod] public void TestSupernet1() { - var network1 = IPNetwork2.Parse("192.168.0.1/24"); - var network2 = IPNetwork2.Parse("192.168.1.1/24"); - var expected = IPNetwork2.Parse("192.168.0.0/23"); - IPNetwork2 supernet = network1.Supernet(network2); + var network1 = IPNetwork2.Parse("192.168.0.1/24"); + var network2 = IPNetwork2.Parse("192.168.1.1/24"); + var expected = IPNetwork2.Parse("192.168.0.0/23"); + IPNetwork2 supernet = network1.Supernet(network2); - Assert.AreEqual(expected, supernet, "supernet"); - } + Assert.AreEqual(expected, supernet, "supernet"); + } /// /// Test to supernet a null network1. @@ -99,11 +100,11 @@ public void TestSupernet1() [ExpectedException(typeof(NullReferenceException))] public void TestSupernet2() { - IPNetwork2 network1 = null; - var network2 = IPNetwork2.Parse("192.168.1.1/24"); - IPNetwork2 supernet = network1.Supernet(network2); - } - + IPNetwork2 network1 = null; + var network2 = IPNetwork2.Parse("192.168.1.1/24"); + IPNetwork2 supernet = network1.Supernet(network2); + } + /// /// Test to supernet a null network2. /// @@ -111,10 +112,10 @@ public void TestSupernet2() [ExpectedException(typeof(ArgumentNullException))] public void TestSupernet3() { - var network1 = IPNetwork2.Parse("192.168.1.1/24"); - IPNetwork2 network2 = null; - IPNetwork2 supernet = network1.Supernet(network2); - } + var network1 = IPNetwork2.Parse("192.168.1.1/24"); + IPNetwork2 network2 = null; + IPNetwork2 supernet = network1.Supernet(network2); + } /// /// Test to supernet overlapping networks. @@ -123,10 +124,10 @@ public void TestSupernet3() [ExpectedException(typeof(ArgumentException))] public void TestSupernet4() { - var network1 = IPNetwork2.Parse("192.168.0.1/24"); - var network2 = IPNetwork2.Parse("192.168.1.1/25"); - IPNetwork2 supernet = network1.Supernet(network2); - } + var network1 = IPNetwork2.Parse("192.168.0.1/24"); + var network2 = IPNetwork2.Parse("192.168.1.1/25"); + IPNetwork2 supernet = network1.Supernet(network2); + } /// /// Test to supernet non overlapping networks. @@ -135,10 +136,10 @@ public void TestSupernet4() [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestSupernet5() { - var network1 = IPNetwork2.Parse("192.168.0.1/24"); - var network2 = IPNetwork2.Parse("192.168.5.1/24"); - IPNetwork2 supernet = network1.Supernet(network2); - } + var network1 = IPNetwork2.Parse("192.168.0.1/24"); + var network2 = IPNetwork2.Parse("192.168.5.1/24"); + IPNetwork2 supernet = network1.Supernet(network2); + } /// /// Tests Supernet functionality with Supernet6. @@ -146,13 +147,13 @@ public void TestSupernet5() [TestMethod] public void TestSupernet6() { - var network1 = IPNetwork2.Parse("192.168.0.1/24"); - var network2 = IPNetwork2.Parse("192.168.0.1/25"); - var expected = IPNetwork2.Parse("192.168.0.0/24"); - IPNetwork2 supernet = network1.Supernet(network2); + var network1 = IPNetwork2.Parse("192.168.0.1/24"); + var network2 = IPNetwork2.Parse("192.168.0.1/25"); + var expected = IPNetwork2.Parse("192.168.0.0/24"); + IPNetwork2 supernet = network1.Supernet(network2); - Assert.AreEqual(expected, supernet, "supernet"); - } + Assert.AreEqual(expected, supernet, "supernet"); + } /// /// Tests Supernet functionality with Supernet7. @@ -160,13 +161,13 @@ public void TestSupernet6() [TestMethod] public void TestSupernet7() { - var network1 = IPNetwork2.Parse("192.168.0.1/25"); - var network2 = IPNetwork2.Parse("192.168.0.1/24"); - var expected = IPNetwork2.Parse("192.168.0.0/24"); - IPNetwork2 supernet = network1.Supernet(network2); + var network1 = IPNetwork2.Parse("192.168.0.1/25"); + var network2 = IPNetwork2.Parse("192.168.0.1/24"); + var expected = IPNetwork2.Parse("192.168.0.0/24"); + IPNetwork2 supernet = network1.Supernet(network2); - Assert.AreEqual(expected, supernet, "supernet"); - } + Assert.AreEqual(expected, supernet, "supernet"); + } /// /// Tests Supernet functionality with Supernet Static1. @@ -174,15 +175,15 @@ public void TestSupernet7() [TestMethod] public void TestSupernetStatic1() { - var network1 = IPNetwork2.Parse("192.168.0.1/25"); - var network2 = IPNetwork2.Parse("192.168.0.1/24"); - var expected = IPNetwork2.Parse("192.168.0.0/24"); + var network1 = IPNetwork2.Parse("192.168.0.1/25"); + var network2 = IPNetwork2.Parse("192.168.0.1/24"); + var expected = IPNetwork2.Parse("192.168.0.0/24"); #pragma warning disable CS0618 // Type or member is obsolete - var supernet = IPNetwork2.Supernet(network1, network2); + var supernet = IPNetwork2.Supernet(network1, network2); #pragma warning restore CS0618 // Type or member is obsolete - Assert.AreEqual(expected, supernet, "supernet"); - } + Assert.AreEqual(expected, supernet, "supernet"); + } /// /// Test to supernet continuous networks. @@ -191,10 +192,10 @@ public void TestSupernetStatic1() [ExpectedException(typeof(ArgumentException))] public void TestSupernet8() { - var network1 = IPNetwork2.Parse("192.168.1.1/24"); - var network2 = IPNetwork2.Parse("192.168.2.1/24"); - IPNetwork2 supernet = network1.Supernet(network2); - } + var network1 = IPNetwork2.Parse("192.168.1.1/24"); + var network2 = IPNetwork2.Parse("192.168.2.1/24"); + IPNetwork2 supernet = network1.Supernet(network2); + } /// /// Tests Supernet functionality with Supernet9. @@ -202,16 +203,16 @@ public void TestSupernet8() [TestMethod] public void TestSupernet9() { - var ipnetwork1 = IPNetwork2.Parse("200.16.0.0/24"); - var ipnetwork2 = IPNetwork2.Parse("200.16.1.0/24"); - var ipnetwork3 = IPNetwork2.Parse("200.16.2.0/24"); - var ipnetwork4 = IPNetwork2.Parse("200.16.3.0/24"); + var ipnetwork1 = IPNetwork2.Parse("200.16.0.0/24"); + var ipnetwork2 = IPNetwork2.Parse("200.16.1.0/24"); + var ipnetwork3 = IPNetwork2.Parse("200.16.2.0/24"); + var ipnetwork4 = IPNetwork2.Parse("200.16.3.0/24"); - IPNetwork2 result = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2, ipnetwork3, ipnetwork4 })[0]; - var expected = IPNetwork2.Parse("200.16.0.0/22"); + IPNetwork2 result = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2, ipnetwork3, ipnetwork4 })[0]; + var expected = IPNetwork2.Parse("200.16.0.0/22"); - Assert.AreEqual(expected, result, "supernet"); - } + Assert.AreEqual(expected, result, "supernet"); + } /// /// Tests Supernet functionality with Supernet10. @@ -219,12 +220,12 @@ public void TestSupernet9() [TestMethod] public void TestSupernet10() { - var ipnetwork1 = IPNetwork2.Parse("1.1.0.0/24"); - var ipnetwork2 = IPNetwork2.Parse("1.2.1.0/24"); + var ipnetwork1 = IPNetwork2.Parse("1.1.0.0/24"); + var ipnetwork2 = IPNetwork2.Parse("1.2.1.0/24"); - IPNetwork2 result = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2 })[0]; - var expected = IPNetwork2.Parse("1.1.0.0/24"); + IPNetwork2 result = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2 })[0]; + var expected = IPNetwork2.Parse("1.1.0.0/24"); - Assert.AreEqual(expected, result, "supernet"); - } + Assert.AreEqual(expected, result, "supernet"); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkV6UnitTest.cs b/src/TestProject/IPNetworkV6UnitTest.cs index db13ebbf..e2c4ae13 100644 --- a/src/TestProject/IPNetworkV6UnitTest.cs +++ b/src/TestProject/IPNetworkV6UnitTest.cs @@ -23,9 +23,9 @@ public class IPNetworkV6UnitTest [ExpectedException(typeof(ArgumentException))] public void TestParseIPAddressNetmaskAne8(string withFirst, string andSecond) { - var ipnet = IPNetwork2.Parse(withFirst, andSecond); - } - + var ipnet = IPNetwork2.Parse(withFirst, andSecond); + } + /// /// Test parse of IPv6 networks. /// @@ -37,8 +37,8 @@ public void TestParseIPAddressNetmaskAne8(string withFirst, string andSecond) [ExpectedException(typeof(ArgumentException))] public void TestParseIPAddressNetmaskAne10(string withFirst, string andSecond) { - var ipnet = IPNetwork2.Parse(withFirst, andSecond); - } + var ipnet = IPNetwork2.Parse(withFirst, andSecond); + } /// /// Test parse of IPv& networks with 128 cidr. @@ -46,59 +46,59 @@ public void TestParseIPAddressNetmaskAne10(string withFirst, string andSecond) [TestMethod] public void TestParsev6_128() { - IPNetwork2 ipnetwork = null; - string ipaddress = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - - string network = "2001:db8::"; - string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - - // string broadcast = "2001:db8::"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::"; - byte cidr = 128; - BigInteger usable = 1; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - + IPNetwork2 ipnetwork = null; + string ipaddress = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + + string network = "2001:db8::"; + string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + + // string broadcast = "2001:db8::"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::"; + byte cidr = 128; + BigInteger usable = 1; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + /// /// Test parse of IPv& networks with 127 cidr. /// [TestMethod] public void TestParsev6_127() { - IPNetwork2 ipnetwork = null; - string ipaddress = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; - - string network = "2001:db8::"; - string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; - - // string broadcast = "2001:db8::1"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::1"; - byte cidr = 127; - BigInteger usable = 2; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; + + string network = "2001:db8::"; + string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; + + // string broadcast = "2001:db8::1"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::1"; + byte cidr = 127; + BigInteger usable = 2; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with 126 cidr. @@ -106,29 +106,29 @@ public void TestParsev6_127() [TestMethod] public void TestParsev6_126() { - IPNetwork2 ipnetwork = null; - string ipaddress = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; - - string network = "2001:db8::"; - string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; - - // string broadcast = "2001:db8::3"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::3"; - byte cidr = 126; - BigInteger usable = 4; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; + + string network = "2001:db8::"; + string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; + + // string broadcast = "2001:db8::3"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::3"; + byte cidr = 126; + BigInteger usable = 4; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with 125 cidr. @@ -136,29 +136,29 @@ public void TestParsev6_126() [TestMethod] public void TestParsev6_125() { - IPNetwork2 ipnetwork = null; - string ipaddress = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"; - - string network = "2001:db8::"; - string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"; - - // string broadcast = "2001:db8::7"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::7"; - byte cidr = 125; - BigInteger usable = 8; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"; + + string network = "2001:db8::"; + string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"; + + // string broadcast = "2001:db8::7"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::7"; + byte cidr = 125; + BigInteger usable = 8; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with 124 cidr. @@ -166,29 +166,29 @@ public void TestParsev6_125() [TestMethod] public void TestParsev6_124() { - IPNetwork2 ipnetwork = null; - string ipaddress = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; - - string network = "2001:db8::"; - string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; - - // string broadcast = "2001:db8::f"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::f"; - byte cidr = 124; - BigInteger usable = 16; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; + + string network = "2001:db8::"; + string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; + + // string broadcast = "2001:db8::f"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::f"; + byte cidr = 124; + BigInteger usable = 16; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with 123 cidr. @@ -196,29 +196,29 @@ public void TestParsev6_124() [TestMethod] public void TestParsev6_123() { - IPNetwork2 ipnetwork = null; - string ipaddress = "2001:0db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"; - - string network = "2001:db8::"; - string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"; - - // string broadcast = "2001:db8::1f"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::1f"; - byte cidr = 123; - BigInteger usable = 32; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "2001:0db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"; + + string network = "2001:db8::"; + string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"; + + // string broadcast = "2001:db8::1f"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::1f"; + byte cidr = 123; + BigInteger usable = 32; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with 112 cidr. @@ -226,29 +226,29 @@ public void TestParsev6_123() [TestMethod] public void TestParsev6_112() { - IPNetwork2 ipnetwork = null; - string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"; - - string network = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0"; - string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0"; - - // string broadcast = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0"; - string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 112; - uint usable = 65536; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"; + + string network = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0"; + string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0"; + + // string broadcast = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0"; + string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 112; + uint usable = 65536; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with 64 cidr. @@ -256,29 +256,29 @@ public void TestParsev6_112() [TestMethod] public void TestParsev6_64() { - IPNetwork2 ipnetwork = null; - string ipaddress = "ffff:ffff:ffff:ffff:1234:1234:1234:1234"; - string netmask = "ffff:ffff:ffff:ffff:0000:0000:0000:0000"; - - string network = "ffff:ffff:ffff:ffff::"; - string netmask2 = "ffff:ffff:ffff:ffff::"; - - // string broadcast = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "ffff:ffff:ffff:ffff::"; - string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 64; - var usable = BigInteger.Pow(2, 128 - cidr); - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "ffff:ffff:ffff:ffff:1234:1234:1234:1234"; + string netmask = "ffff:ffff:ffff:ffff:0000:0000:0000:0000"; + + string network = "ffff:ffff:ffff:ffff::"; + string netmask2 = "ffff:ffff:ffff:ffff::"; + + // string broadcast = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "ffff:ffff:ffff:ffff::"; + string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 64; + var usable = BigInteger.Pow(2, 128 - cidr); + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with 16 cidr. @@ -286,29 +286,29 @@ public void TestParsev6_64() [TestMethod] public void TestParsev6_16() { - IPNetwork2 ipnetwork = null; - string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string netmask = "ffff:0000:0000:0000:0000:0000:0000:0000"; - - string network = "ffff::"; - string netmask2 = "ffff::"; - - // string broadcast = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "ffff::"; - string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 16; - var usable = BigInteger.Pow(2, 128 - cidr); - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string netmask = "ffff:0000:0000:0000:0000:0000:0000:0000"; + + string network = "ffff::"; + string netmask2 = "ffff::"; + + // string broadcast = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "ffff::"; + string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 16; + var usable = BigInteger.Pow(2, 128 - cidr); + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with edge cases. @@ -316,27 +316,27 @@ public void TestParsev6_16() [TestMethod] public void TestParsev6_EDGE() { - IPNetwork2 ipnetwork = null; - string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - - string network = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 128; - uint usable = 1; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + + string network = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 128; + uint usable = 1; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } #endregion @@ -348,24 +348,24 @@ public void TestParsev6_EDGE() [TestMethod] public void TestParseString1() { - string ipaddress = "2001:0db8:: ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; - - string network = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::f"; - byte cidr = 124; - uint usable = 16; - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "2001:0db8:: ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; + + string network = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::f"; + byte cidr = 124; + uint usable = 16; + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString. @@ -373,24 +373,24 @@ public void TestParseString1() [TestMethod] public void TestParseString3() { - string ipaddress = ":: ::"; - - string network = "::"; - string netmask = "::"; - string firstUsable = "::"; - string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 0; - var usable = BigInteger.Pow(2, 128 - cidr); - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = ":: ::"; + + string network = "::"; + string netmask = "::"; + string firstUsable = "::"; + string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 0; + var usable = BigInteger.Pow(2, 128 - cidr); + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString. @@ -398,24 +398,24 @@ public void TestParseString3() [TestMethod] public void TestParseString4() { - string ipaddress = "::/0"; - - string network = "::"; - string netmask = "::"; - string firstUsable = "::"; - string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 0; - var usable = BigInteger.Pow(2, 128 - cidr); - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "::/0"; + + string network = "::"; + string netmask = "::"; + string firstUsable = "::"; + string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 0; + var usable = BigInteger.Pow(2, 128 - cidr); + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString. @@ -423,24 +423,24 @@ public void TestParseString4() [TestMethod] public void TestParseString5() { - string ipaddress = "::/32"; - - string network = "::"; - string netmask = "ffff:ffff::"; - string firstUsable = "::"; - string lastUsable = "::ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 32; - var usable = BigInteger.Pow(2, 128 - cidr); - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "::/32"; + + string network = "::"; + string netmask = "ffff:ffff::"; + string firstUsable = "::"; + string lastUsable = "::ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 32; + var usable = BigInteger.Pow(2, 128 - cidr); + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString. @@ -448,24 +448,24 @@ public void TestParseString5() [TestMethod] public void TestParseString6() { - string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128"; - - string network = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 128; - uint usable = 1; - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128"; + + string network = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 128; + uint usable = 1; + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -473,25 +473,25 @@ public void TestParseString6() [TestMethod] public void TestParseString7_Uppercase_ipv6_must_parse() { - string ipaddress = "2FFF:FFFF:123::/60"; + string ipaddress = "2FFF:FFFF:123::/60"; - string network = "2fff:ffff:123::"; - string netmask = "ffff:ffff:ffff:fff0::"; - string firstUsable = "2fff:ffff:123::"; - string lastUsable = "2fff:ffff:123:f:ffff:ffff:ffff:ffff"; - byte cidr = 60; + string network = "2fff:ffff:123::"; + string netmask = "ffff:ffff:ffff:fff0::"; + string firstUsable = "2fff:ffff:123::"; + string lastUsable = "2fff:ffff:123:f:ffff:ffff:ffff:ffff"; + byte cidr = 60; - // BigInteger usable = 295147905179352825856; - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + // BigInteger usable = 295147905179352825856; + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -499,25 +499,25 @@ public void TestParseString7_Uppercase_ipv6_must_parse() [TestMethod] public void TestParseString8_Uppercase_ipv6_must_parse() { - string ipaddress = "2FFF:FFFE:123::/60"; + string ipaddress = "2FFF:FFFE:123::/60"; - string network = "2fff:fffe:123::"; - string netmask = "ffff:ffff:ffff:fff0::"; - string firstUsable = "2fff:fffe:123::"; - string lastUsable = "2fff:fffe:123:f:ffff:ffff:ffff:ffff"; - byte cidr = 60; + string network = "2fff:fffe:123::"; + string netmask = "ffff:ffff:ffff:fff0::"; + string firstUsable = "2fff:fffe:123::"; + string lastUsable = "2fff:fffe:123:f:ffff:ffff:ffff:ffff"; + byte cidr = 60; - // BigInteger usable = 295147905179352825856; - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + // BigInteger usable = 295147905179352825856; + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -525,25 +525,25 @@ public void TestParseString8_Uppercase_ipv6_must_parse() [TestMethod] public void TestParseString9_Uppercase_ipv6_must_parse() { - string ipaddress = "2FFF:FFFC:123::/60"; + string ipaddress = "2FFF:FFFC:123::/60"; - string network = "2fff:fffc:123::"; - string netmask = "ffff:ffff:ffff:fff0::"; - string firstUsable = "2fff:fffc:123::"; - string lastUsable = "2fff:fffc:123:f:ffff:ffff:ffff:ffff"; - byte cidr = 60; + string network = "2fff:fffc:123::"; + string netmask = "ffff:ffff:ffff:fff0::"; + string firstUsable = "2fff:fffc:123::"; + string lastUsable = "2fff:fffc:123:f:ffff:ffff:ffff:ffff"; + byte cidr = 60; - // BigInteger usable = 295147905179352825856; - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + // BigInteger usable = 295147905179352825856; + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -551,25 +551,25 @@ public void TestParseString9_Uppercase_ipv6_must_parse() [TestMethod] public void TestParseString10_Uppercase_ipv6_must_parse() { - string ipaddress = "2FFF:FFFA:123::/60"; + string ipaddress = "2FFF:FFFA:123::/60"; - string network = "2fff:fffa:123::"; - string netmask = "ffff:ffff:ffff:fff0::"; - string firstUsable = "2fff:fffa:123::"; - string lastUsable = "2fff:fffa:123:f:ffff:ffff:ffff:ffff"; - byte cidr = 60; + string network = "2fff:fffa:123::"; + string netmask = "ffff:ffff:ffff:fff0::"; + string firstUsable = "2fff:fffa:123::"; + string lastUsable = "2fff:fffa:123:f:ffff:ffff:ffff:ffff"; + byte cidr = 60; - // BigInteger usable = 295147905179352825856; - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + // BigInteger usable = 295147905179352825856; + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -577,25 +577,25 @@ public void TestParseString10_Uppercase_ipv6_must_parse() [TestMethod] public void TestParseString11_Uppercase_ipv6_must_parse() { - string ipaddress = "FFFF:FFF1:123::/60"; + string ipaddress = "FFFF:FFF1:123::/60"; - string network = "ffff:fff1:123::"; - string netmask = "ffff:ffff:ffff:fff0::"; - string firstUsable = "ffff:fff1:123::"; - string lastUsable = "ffff:fff1:123:f:ffff:ffff:ffff:ffff"; - byte cidr = 60; + string network = "ffff:fff1:123::"; + string netmask = "ffff:ffff:ffff:fff0::"; + string firstUsable = "ffff:fff1:123::"; + string lastUsable = "ffff:fff1:123:f:ffff:ffff:ffff:ffff"; + byte cidr = 60; - // BigInteger usable = 295147905179352825856; - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + // BigInteger usable = 295147905179352825856; + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -603,24 +603,24 @@ public void TestParseString11_Uppercase_ipv6_must_parse() [TestMethod] public void TestParseIPAddressNoNetmask1() { - string ipaddress = "2001:0db8::"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - - string network = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff::"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; - byte cidr = 64; - var usable = BigInteger.Pow(2, 64); - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "2001:0db8::"; + var ipnetwork = IPNetwork2.Parse(ipaddress); + + string network = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff::"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; + byte cidr = 64; + var usable = BigInteger.Pow(2, 64); + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -628,24 +628,24 @@ public void TestParseIPAddressNoNetmask1() [TestMethod] public void TestParseIPAddressNoNetmask4() { - string ipaddress = "::"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - - string network = "::"; - string netmask = "ffff:ffff:ffff:ffff::"; - string firstUsable = "::"; - string lastUsable = "::ffff:ffff:ffff:ffff"; - byte cidr = 64; - var usable = BigInteger.Pow(2, 64); - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "::"; + var ipnetwork = IPNetwork2.Parse(ipaddress); + + string network = "::"; + string netmask = "ffff:ffff:ffff:ffff::"; + string firstUsable = "::"; + string lastUsable = "::ffff:ffff:ffff:ffff"; + byte cidr = 64; + var usable = BigInteger.Pow(2, 64); + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -653,24 +653,24 @@ public void TestParseIPAddressNoNetmask4() [TestMethod] public void TestParseIPAddressNoNetmask5() { - string ipaddress = "2001:0db8::1"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - - string network = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff::"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; - byte cidr = 64; - var usable = BigInteger.Pow(2, 64); - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "2001:0db8::1"; + var ipnetwork = IPNetwork2.Parse(ipaddress); + + string network = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff::"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; + byte cidr = 64; + var usable = BigInteger.Pow(2, 64); + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -678,26 +678,26 @@ public void TestParseIPAddressNoNetmask5() [TestMethod] public void TestParseIPAddressNoNetmask1_ClassFull() { - string ipaddress = "2001:0db8::"; - ICidrGuess cidrGess = CidrGuess.ClassFull; - - var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); - - string network = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff::"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; - byte cidr = 64; - var usable = BigInteger.Pow(2, 64); - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "2001:0db8::"; + ICidrGuess cidrGess = CidrGuess.ClassFull; + + var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); + + string network = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff::"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; + byte cidr = 64; + var usable = BigInteger.Pow(2, 64); + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -705,26 +705,26 @@ public void TestParseIPAddressNoNetmask1_ClassFull() [TestMethod] public void TestParseIPAddressNoNetmask4_ClassFull() { - string ipaddress = "::"; - ICidrGuess cidrGess = CidrGuess.ClassFull; - - var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); - - string network = "::"; - string netmask = "ffff:ffff:ffff:ffff::"; - string firstUsable = "::"; - string lastUsable = "::ffff:ffff:ffff:ffff"; - byte cidr = 64; - var usable = BigInteger.Pow(2, 64); - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "::"; + ICidrGuess cidrGess = CidrGuess.ClassFull; + + var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); + + string network = "::"; + string netmask = "ffff:ffff:ffff:ffff::"; + string firstUsable = "::"; + string lastUsable = "::ffff:ffff:ffff:ffff"; + byte cidr = 64; + var usable = BigInteger.Pow(2, 64); + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString ClassFull. @@ -732,26 +732,26 @@ public void TestParseIPAddressNoNetmask4_ClassFull() [TestMethod] public void TestParseIPAddressNoNetmask5_ClassFull() { - string ipaddress = "2001:0db8::1"; - ICidrGuess cidrGess = CidrGuess.ClassFull; - - var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); - - string network = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff::"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; - byte cidr = 64; - var usable = BigInteger.Pow(2, 64); - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "2001:0db8::1"; + ICidrGuess cidrGess = CidrGuess.ClassFull; + + var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); + + string network = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff::"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; + byte cidr = 64; + var usable = BigInteger.Pow(2, 64); + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString ClassLess. @@ -759,26 +759,26 @@ public void TestParseIPAddressNoNetmask5_ClassFull() [TestMethod] public void TestParseIPAddressNoNetmask1_ClassLess() { - string ipaddress = "2001:0db8::"; - ICidrGuess cidrGess = CidrGuess.ClassLess; - - var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); - - string network = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::"; - byte cidr = 128; - int usable = 1; - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "2001:0db8::"; + ICidrGuess cidrGess = CidrGuess.ClassLess; + + var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); + + string network = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::"; + byte cidr = 128; + int usable = 1; + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString ClassLess. @@ -786,26 +786,26 @@ public void TestParseIPAddressNoNetmask1_ClassLess() [TestMethod] public void TestParseIPAddressNoNetmask4_ClassLess() { - string ipaddress = "::"; - ICidrGuess cidrGess = CidrGuess.ClassLess; - - var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); - - string network = "::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "::"; - string lastUsable = "::"; - byte cidr = 128; - int usable = 1; - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "::"; + ICidrGuess cidrGess = CidrGuess.ClassLess; + + var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); + + string network = "::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "::"; + string lastUsable = "::"; + byte cidr = 128; + int usable = 1; + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString ClassLess. @@ -813,26 +813,26 @@ public void TestParseIPAddressNoNetmask4_ClassLess() [TestMethod] public void TestParseIPAddressNoNetmask5_ClassLess() { - string ipaddress = "2001:0db8::1"; - ICidrGuess cidrGess = CidrGuess.ClassLess; - - var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); - - string network = "2001:db8::1"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "2001:db8::1"; - string lastUsable = "2001:db8::1"; - byte cidr = 128; - int usable = 1; - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "2001:0db8::1"; + ICidrGuess cidrGess = CidrGuess.ClassLess; + + var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); + + string network = "2001:db8::1"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "2001:db8::1"; + string lastUsable = "2001:db8::1"; + byte cidr = 128; + int usable = 1; + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString garbage. @@ -841,9 +841,9 @@ public void TestParseIPAddressNoNetmask5_ClassLess() [ExpectedException(typeof(ArgumentException))] public void TestParseStringAe1() { - string ipaddress = "garbage"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - } + string ipaddress = "garbage"; + var ipnetwork = IPNetwork2.Parse(ipaddress); + } /// /// Test ParseString too long. @@ -852,9 +852,9 @@ public void TestParseStringAe1() [ExpectedException(typeof(ArgumentException))] public void TestParseStringAe2() { - string ipaddress = "0:0:0:0:0:0:1:0:0 0:1:2:3:4:5:6:7:8"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - } + string ipaddress = "0:0:0:0:0:0:1:0:0 0:1:2:3:4:5:6:7:8"; + var ipnetwork = IPNetwork2.Parse(ipaddress); + } /// /// Test ParseString null. @@ -863,9 +863,9 @@ public void TestParseStringAe2() [ExpectedException(typeof(ArgumentNullException))] public void TestParseStringAne1() { - string ipaddress = null; - var ipnetwork = IPNetwork2.Parse(ipaddress); - } + string ipaddress = null; + var ipnetwork = IPNetwork2.Parse(ipaddress); + } #endregion @@ -877,12 +877,12 @@ public void TestParseStringAne1() [TestMethod] public void TestParseStringString1() { - string ipaddress = "2001:0db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; + string ipaddress = "2001:0db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); - Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); - } + var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); + } /// /// Test ParseString 3. @@ -891,11 +891,11 @@ public void TestParseStringString1() [ExpectedException(typeof(ArgumentNullException))] public void TestParseStringString3() { - string ipaddress = "2001:0db8::"; - string netmask = null; + string ipaddress = "2001:0db8::"; + string netmask = null; - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); - } + var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + } /// /// Test ParseString with string string @@ -904,11 +904,11 @@ public void TestParseStringString3() [ExpectedException(typeof(ArgumentNullException))] public void TestParseStringString5() { - string ipaddress = "2001:0db8::"; - string netmask = string.Empty; + string ipaddress = "2001:0db8::"; + string netmask = string.Empty; - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); - } + var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + } #endregion @@ -920,13 +920,13 @@ public void TestParseStringString5() [TestMethod] public void ParseIpIp1() { - string ipaddress = "2001:0db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; - var ip = IPAddress.Parse(ipaddress); - var netm = IPAddress.Parse(netmask); - var ipnetwork = IPNetwork2.Parse(ip, netm); - Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); - } + string ipaddress = "2001:0db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; + var ip = IPAddress.Parse(ipaddress); + var netm = IPAddress.Parse(netmask); + var ipnetwork = IPNetwork2.Parse(ip, netm); + Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); + } /// /// Test ParseString with IP @@ -935,11 +935,11 @@ public void ParseIpIp1() [ExpectedException(typeof(ArgumentNullException))] public void ParseIpIp3() { - string ipaddress = "2001:0db8::"; - var ip = IPAddress.Parse(ipaddress); - IPAddress netm = null; - var ipnetwork = IPNetwork2.Parse(ip, netm); - } + string ipaddress = "2001:0db8::"; + var ip = IPAddress.Parse(ipaddress); + IPAddress netm = null; + var ipnetwork = IPNetwork2.Parse(ip, netm); + } #endregion @@ -951,11 +951,11 @@ public void ParseIpIp3() [TestMethod] public void CtorWithIpAndCidr1() { - string ipaddress = "2001:0db8::"; - var ip = IPAddress.Parse(ipaddress); - var ipnetwork = new IPNetwork2(ip, 124); - Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); - } + string ipaddress = "2001:0db8::"; + var ip = IPAddress.Parse(ipaddress); + var ipnetwork = new IPNetwork2(ip, 124); + Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); + } /// /// Test CtorWithIpAndCidr2. @@ -964,10 +964,10 @@ public void CtorWithIpAndCidr1() [ExpectedException(typeof(ArgumentOutOfRangeException))] public void CtorWithIpAndCidr2() { - string ipaddress = "2001:db8::"; - var ip = IPAddress.Parse(ipaddress); - var ipnetwork = new IPNetwork2(ip, 129); - } + string ipaddress = "2001:db8::"; + var ip = IPAddress.Parse(ipaddress); + var ipnetwork = new IPNetwork2(ip, 129); + } #endregion @@ -979,9 +979,9 @@ public void CtorWithIpAndCidr2() [TestMethod] public void TestToCidrAe() { - byte cidr = IPNetwork2.ToCidr(IPAddress.IPv6Any); - Assert.AreEqual(0, cidr, "cidr"); - } + byte cidr = IPNetwork2.ToCidr(IPAddress.IPv6Any); + Assert.AreEqual(0, cidr, "cidr"); + } /// /// Test ToCidr. @@ -990,8 +990,8 @@ public void TestToCidrAe() [ExpectedException(typeof(ArgumentException))] public void TestToCidrAe2() { - IPNetwork2.ToCidr(IPAddress.Parse("2001:db8:3:4:5:6:7:8")); - } + IPNetwork2.ToCidr(IPAddress.Parse("2001:db8:3:4:5:6:7:8")); + } /// /// Test ToCidr. @@ -999,12 +999,12 @@ public void TestToCidrAe2() [TestMethod] public void TestToCidr128() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); - byte cidr = 128; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); + byte cidr = 128; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1012,12 +1012,12 @@ public void TestToCidr128() [TestMethod] public void TestToCidr127() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"); - byte cidr = 127; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"); + byte cidr = 127; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1025,12 +1025,12 @@ public void TestToCidr127() [TestMethod] public void TestToCidr126() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"); - byte cidr = 126; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"); + byte cidr = 126; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1038,12 +1038,12 @@ public void TestToCidr126() [TestMethod] public void TestToCidr125() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"); - byte cidr = 125; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"); + byte cidr = 125; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1051,12 +1051,12 @@ public void TestToCidr125() [TestMethod] public void TestToCidr124() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); - byte cidr = 124; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); + byte cidr = 124; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1064,12 +1064,12 @@ public void TestToCidr124() [TestMethod] public void TestToCidr123() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"); - byte cidr = 123; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"); + byte cidr = 123; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1077,12 +1077,12 @@ public void TestToCidr123() [TestMethod] public void TestToCidr122() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffc0"); - byte cidr = 122; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffc0"); + byte cidr = 122; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1090,12 +1090,12 @@ public void TestToCidr122() [TestMethod] public void TestToCidr121() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff80"); - byte cidr = 121; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff80"); + byte cidr = 121; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1103,12 +1103,12 @@ public void TestToCidr121() [TestMethod] public void TestToCidr120() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00"); - byte cidr = 120; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00"); + byte cidr = 120; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1116,12 +1116,12 @@ public void TestToCidr120() [TestMethod] public void TestToCidr119() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fe00"); - byte cidr = 119; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fe00"); + byte cidr = 119; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1129,12 +1129,12 @@ public void TestToCidr119() [TestMethod] public void TestToCidr118() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fc00"); - byte cidr = 118; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fc00"); + byte cidr = 118; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1142,12 +1142,12 @@ public void TestToCidr118() [TestMethod] public void TestToCidr117() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f800"); - byte cidr = 117; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f800"); + byte cidr = 117; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1155,12 +1155,12 @@ public void TestToCidr117() [TestMethod] public void TestToCidr116() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f000"); - byte cidr = 116; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f000"); + byte cidr = 116; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1168,12 +1168,12 @@ public void TestToCidr116() [TestMethod] public void TestToCidr115() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:e000"); - byte cidr = 115; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:e000"); + byte cidr = 115; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1181,12 +1181,12 @@ public void TestToCidr115() [TestMethod] public void TestToCidr114() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:c000"); - byte cidr = 114; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:c000"); + byte cidr = 114; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1194,12 +1194,12 @@ public void TestToCidr114() [TestMethod] public void TestToCidr113() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:8000"); - byte cidr = 113; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:8000"); + byte cidr = 113; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1207,12 +1207,12 @@ public void TestToCidr113() [TestMethod] public void TestToCidr112() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); - byte cidr = 112; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); + byte cidr = 112; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1220,12 +1220,12 @@ public void TestToCidr112() [TestMethod] public void TestToCidr111() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffe:0"); - byte cidr = 111; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffe:0"); + byte cidr = 111; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1233,12 +1233,12 @@ public void TestToCidr111() [TestMethod] public void TestToCidr110() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffc:0"); - byte cidr = 110; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffc:0"); + byte cidr = 110; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1246,12 +1246,12 @@ public void TestToCidr110() [TestMethod] public void TestToCidr109() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff8:0"); - byte cidr = 109; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff8:0"); + byte cidr = 109; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1259,12 +1259,12 @@ public void TestToCidr109() [TestMethod] public void TestToCidr108() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff0:0"); - byte cidr = 108; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff0:0"); + byte cidr = 108; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1272,12 +1272,12 @@ public void TestToCidr108() [TestMethod] public void TestToCidr001() { - var mask = IPAddress.Parse("8000::"); - byte cidr = 1; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("8000::"); + byte cidr = 1; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1285,12 +1285,12 @@ public void TestToCidr001() [TestMethod] public void TestToCidr000() { - var mask = IPAddress.Parse("::"); - byte cidr = 0; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("::"); + byte cidr = 0; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } #endregion @@ -1302,14 +1302,14 @@ public void TestToCidr000() [TestMethod] public void TestTryToCidr128() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); - byte cidr = 128; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); + byte cidr = 128; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1317,14 +1317,14 @@ public void TestTryToCidr128() [TestMethod] public void TestTryToCidr127() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"); - byte cidr = 127; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"); + byte cidr = 127; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1332,14 +1332,14 @@ public void TestTryToCidr127() [TestMethod] public void TestTryToCidr126() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"); - byte cidr = 126; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"); + byte cidr = 126; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1347,14 +1347,14 @@ public void TestTryToCidr126() [TestMethod] public void TestTryToCidr125() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"); - byte cidr = 125; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"); + byte cidr = 125; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1362,14 +1362,14 @@ public void TestTryToCidr125() [TestMethod] public void TestTryToCidr124() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); - byte cidr = 124; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); + byte cidr = 124; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1377,14 +1377,14 @@ public void TestTryToCidr124() [TestMethod] public void TestTryToCidr123() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"); - byte cidr = 123; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"); + byte cidr = 123; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1392,14 +1392,14 @@ public void TestTryToCidr123() [TestMethod] public void TestTryToCidr122() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffc0"); - byte cidr = 122; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffc0"); + byte cidr = 122; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1407,14 +1407,14 @@ public void TestTryToCidr122() [TestMethod] public void TestTryToCidr121() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff80"); - byte cidr = 121; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff80"); + byte cidr = 121; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1422,14 +1422,14 @@ public void TestTryToCidr121() [TestMethod] public void TestTryToCidr120() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00"); - byte cidr = 120; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00"); + byte cidr = 120; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1437,14 +1437,14 @@ public void TestTryToCidr120() [TestMethod] public void TestTryToCidr119() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fe00"); - byte cidr = 119; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fe00"); + byte cidr = 119; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1452,14 +1452,14 @@ public void TestTryToCidr119() [TestMethod] public void TestTryToCidr118() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fc00"); - byte cidr = 118; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fc00"); + byte cidr = 118; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1467,14 +1467,14 @@ public void TestTryToCidr118() [TestMethod] public void TestTryToCidr117() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f800"); - byte cidr = 117; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f800"); + byte cidr = 117; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1482,14 +1482,14 @@ public void TestTryToCidr117() [TestMethod] public void TestTryToCidr116() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f000"); - byte cidr = 116; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f000"); + byte cidr = 116; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1497,14 +1497,14 @@ public void TestTryToCidr116() [TestMethod] public void TestTryToCidr115() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:e000"); - byte cidr = 115; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:e000"); + byte cidr = 115; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1512,14 +1512,14 @@ public void TestTryToCidr115() [TestMethod] public void TestTryToCidr114() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:c000"); - byte cidr = 114; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:c000"); + byte cidr = 114; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1527,14 +1527,14 @@ public void TestTryToCidr114() [TestMethod] public void TestTryToCidr113() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:8000"); - byte cidr = 113; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:8000"); + byte cidr = 113; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1542,14 +1542,14 @@ public void TestTryToCidr113() [TestMethod] public void TestTryToCidr112() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); - byte cidr = 112; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); + byte cidr = 112; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1557,14 +1557,14 @@ public void TestTryToCidr112() [TestMethod] public void TestTryToCidr111() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffe:0"); - byte cidr = 111; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffe:0"); + byte cidr = 111; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1572,14 +1572,14 @@ public void TestTryToCidr111() [TestMethod] public void TestTryToCidr110() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffc:0"); - byte cidr = 110; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffc:0"); + byte cidr = 110; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1587,14 +1587,14 @@ public void TestTryToCidr110() [TestMethod] public void TestTryToCidr109() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff8:0"); - byte cidr = 109; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff8:0"); + byte cidr = 109; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1602,14 +1602,14 @@ public void TestTryToCidr109() [TestMethod] public void TestTryToCidr108() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff0:0"); - byte cidr = 108; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff0:0"); + byte cidr = 108; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1617,14 +1617,14 @@ public void TestTryToCidr108() [TestMethod] public void TestTryToCidr001() { - var mask = IPAddress.Parse("8000::"); - byte cidr = 1; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("8000::"); + byte cidr = 1; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1632,14 +1632,14 @@ public void TestTryToCidr001() [TestMethod] public void TestTryToCidr000() { - var mask = IPAddress.Parse("::"); - byte cidr = 0; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("::"); + byte cidr = 0; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } #endregion @@ -1651,12 +1651,12 @@ public void TestTryToCidr000() [TestMethod] public void TestToBigInteger32() { - var mask = IPAddress.Parse("::f"); - uint uintMask = 0xf; - var result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("::f"); + uint uintMask = 0xf; + var result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } /// /// Test. @@ -1664,12 +1664,12 @@ public void TestToBigInteger32() [TestMethod] public void TestToBigInteger24() { - var mask = IPAddress.Parse("::fff"); - uint uintMask = 0xfff; - BigInteger? result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("::fff"); + uint uintMask = 0xfff; + BigInteger? result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } /// /// Test. @@ -1677,12 +1677,12 @@ public void TestToBigInteger24() [TestMethod] public void TestToBigInteger16() { - var mask = IPAddress.Parse("::ff"); - uint uintMask = 0xff; - BigInteger? result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("::ff"); + uint uintMask = 0xff; + BigInteger? result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } /// /// Test. @@ -1690,12 +1690,12 @@ public void TestToBigInteger16() [TestMethod] public void TestToBigInteger8() { - var mask = IPAddress.Parse("::ff00:0"); - uint uintMask = 0xff000000; - BigInteger? result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("::ff00:0"); + uint uintMask = 0xff000000; + BigInteger? result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } /// /// Test. @@ -1703,12 +1703,12 @@ public void TestToBigInteger8() [TestMethod] public void TestToBigInteger0() { - var mask = IPAddress.Parse("::"); - uint uintMask = 0x00000000; - BigInteger? result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("::"); + uint uintMask = 0x00000000; + BigInteger? result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } #endregion @@ -1720,14 +1720,14 @@ public void TestToBigInteger0() [TestMethod] public void TestTryToBigInteger32() { - var mask = IPAddress.Parse("::ffff:ffff"); - uint uintMask = 0xffffffff; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + var mask = IPAddress.Parse("::ffff:ffff"); + uint uintMask = 0xffffffff; + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(mask, out result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Test. @@ -1735,14 +1735,14 @@ public void TestTryToBigInteger32() [TestMethod] public void TestTryToBigInteger24() { - var mask = IPAddress.Parse("::ffff:ff00"); - uint uintMask = 0xffffff00; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + var mask = IPAddress.Parse("::ffff:ff00"); + uint uintMask = 0xffffff00; + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(mask, out result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Test. @@ -1750,14 +1750,14 @@ public void TestTryToBigInteger24() [TestMethod] public void TestTryToBigInteger16() { - var mask = IPAddress.Parse("::ffff:0"); - uint uintMask = 0xffff0000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + var mask = IPAddress.Parse("::ffff:0"); + uint uintMask = 0xffff0000; + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(mask, out result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Test. @@ -1765,15 +1765,15 @@ public void TestTryToBigInteger16() [TestMethod] public void TestTryToBigInteger8() { - var mask = IPAddress.Parse("::ff00:0"); - uint uintMask = 0xff000000; + var mask = IPAddress.Parse("::ff00:0"); + uint uintMask = 0xff000000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(mask, out result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Test. @@ -1781,14 +1781,14 @@ public void TestTryToBigInteger8() [TestMethod] public void TestTryToBigInteger0() { - var mask = IPAddress.Parse("::"); - uint uintMask = 0x00000000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + var mask = IPAddress.Parse("::"); + uint uintMask = 0x00000000; + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(mask, out result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } #endregion @@ -1800,13 +1800,13 @@ public void TestTryToBigInteger0() [TestMethod] public void TryToNetmask1() { - IPAddress result = null; - bool parsed = IPNetwork2.TryToNetmask(0, AddressFamily.InterNetworkV6, out result); - var expected = IPAddress.Parse("::"); + IPAddress result = null; + bool parsed = IPNetwork2.TryToNetmask(0, AddressFamily.InterNetworkV6, out result); + var expected = IPAddress.Parse("::"); - Assert.AreEqual(expected, result, "Netmask"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(expected, result, "Netmask"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Test. @@ -1814,13 +1814,13 @@ public void TryToNetmask1() [TestMethod] public void TryToNetmask2() { - IPAddress result = null; - bool parsed = IPNetwork2.TryToNetmask(33, AddressFamily.InterNetworkV6, out result); - var expected = IPAddress.Parse("ffff:ffff:8000::"); + IPAddress result = null; + bool parsed = IPNetwork2.TryToNetmask(33, AddressFamily.InterNetworkV6, out result); + var expected = IPAddress.Parse("ffff:ffff:8000::"); - Assert.AreEqual(expected, result, "Netmask"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(expected, result, "Netmask"); + Assert.AreEqual(true, parsed, "parsed"); + } #endregion @@ -1832,12 +1832,12 @@ public void TryToNetmask2() [TestMethod] public void ToNetmask128() { - byte cidr = 128; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); + byte cidr = 128; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); - Assert.AreEqual(netmask, result, "netmask"); - } + Assert.AreEqual(netmask, result, "netmask"); + } /// /// Test. @@ -1845,12 +1845,12 @@ public void ToNetmask128() [TestMethod] public void ToNetmask31() { - byte cidr = 127; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); + byte cidr = 127; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); - Assert.AreEqual(netmask, result, "netmask"); - } + Assert.AreEqual(netmask, result, "netmask"); + } /// /// Test. @@ -1858,12 +1858,12 @@ public void ToNetmask31() [TestMethod] public void ToNetmask30() { - byte cidr = 126; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); + byte cidr = 126; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); - Assert.AreEqual(netmask, result, "netmask"); - } + Assert.AreEqual(netmask, result, "netmask"); + } /// /// Test. @@ -1871,12 +1871,12 @@ public void ToNetmask30() [TestMethod] public void ToNetmask1() { - byte cidr = 1; - string netmask = "8000::"; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); + byte cidr = 1; + string netmask = "8000::"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); - Assert.AreEqual(netmask, result, "netmask"); - } + Assert.AreEqual(netmask, result, "netmask"); + } /// /// Test. @@ -1884,12 +1884,12 @@ public void ToNetmask1() [TestMethod] public void ToNetmask0() { - byte cidr = 0; - string netmask = "::"; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); + byte cidr = 0; + string netmask = "::"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); - Assert.AreEqual(netmask, result, "netmask"); - } + Assert.AreEqual(netmask, result, "netmask"); + } /// /// Test. @@ -1898,9 +1898,9 @@ public void ToNetmask0() [ExpectedException(typeof(ArgumentOutOfRangeException))] public void ToNetmaskOore1() { - byte cidr = 129; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); - } + byte cidr = 129; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); + } #endregion @@ -1912,12 +1912,12 @@ public void ToNetmaskOore1() [TestMethod] public void TestValidNetmask0() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); - bool expected = true; - bool result = IPNetwork2.ValidNetmask(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); + bool expected = true; + bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); - } + Assert.AreEqual(expected, result, "ValidNetmask"); + } /// /// Test. @@ -1925,12 +1925,12 @@ public void TestValidNetmask0() [TestMethod] public void TestValidNetmask1() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); - bool expected = true; - bool result = IPNetwork2.ValidNetmask(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); + bool expected = true; + bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); - } + Assert.AreEqual(expected, result, "ValidNetmask"); + } /// /// Test. @@ -1938,12 +1938,12 @@ public void TestValidNetmask1() [TestMethod] public void TestValidNetmask2() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); - bool expected = true; - bool result = IPNetwork2.ValidNetmask(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); + bool expected = true; + bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); - } + Assert.AreEqual(expected, result, "ValidNetmask"); + } /// /// Test. @@ -1951,12 +1951,12 @@ public void TestValidNetmask2() [TestMethod] public void TestValidNetmaskEae1() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:0000:ffff"); - bool expected = false; - bool result = IPNetwork2.ValidNetmask(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:0000:ffff"); + bool expected = false; + bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); - } + Assert.AreEqual(expected, result, "ValidNetmask"); + } /// /// Test. @@ -1964,12 +1964,12 @@ public void TestValidNetmaskEae1() [TestMethod] public void TestValidNetmaskEae3() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:0000:0001"); - bool expected = false; - bool result = IPNetwork2.ValidNetmask(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:0000:0001"); + bool expected = false; + bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); - } + Assert.AreEqual(expected, result, "ValidNetmask"); + } #endregion @@ -1981,12 +1981,12 @@ public void TestValidNetmaskEae3() [TestMethod] public void TestBitsSet128() { - var ip = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); - uint bits = 128; - uint result = IPNetwork2.BitsSet(ip); + var ip = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); + uint bits = 128; + uint result = IPNetwork2.BitsSet(ip); - Assert.AreEqual(bits, result, "BitsSet"); - } + Assert.AreEqual(bits, result, "BitsSet"); + } /// /// Test. @@ -1994,12 +1994,12 @@ public void TestBitsSet128() [TestMethod] public void TestBitsSet120() { - var ip = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); - uint bits = 124; - uint result = IPNetwork2.BitsSet(ip); + var ip = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); + uint bits = 124; + uint result = IPNetwork2.BitsSet(ip); - Assert.AreEqual(bits, result, "BitsSet"); - } + Assert.AreEqual(bits, result, "BitsSet"); + } /// /// Test. @@ -2007,12 +2007,12 @@ public void TestBitsSet120() [TestMethod] public void TestBitsSet16() { - var ip = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); - uint bits = 112; - uint result = IPNetwork2.BitsSet(ip); + var ip = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); + uint bits = 112; + uint result = IPNetwork2.BitsSet(ip); - Assert.AreEqual(bits, result, "BitsSet"); - } + Assert.AreEqual(bits, result, "BitsSet"); + } /// /// Test. @@ -2020,12 +2020,12 @@ public void TestBitsSet16() [TestMethod] public void TestBitsSet4() { - var ip = IPAddress.Parse("f0f0:f0f0:f0f0:f0f0:f0f0:f0f0:f0f0:f0f0"); - uint bits = 64; - uint result = IPNetwork2.BitsSet(ip); + var ip = IPAddress.Parse("f0f0:f0f0:f0f0:f0f0:f0f0:f0f0:f0f0:f0f0"); + uint bits = 64; + uint result = IPNetwork2.BitsSet(ip); - Assert.AreEqual(bits, result, "BitsSet"); - } + Assert.AreEqual(bits, result, "BitsSet"); + } #endregion @@ -2037,14 +2037,14 @@ public void TestBitsSet4() [TestMethod] public void TestContains1() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - var ipaddress = IPAddress.Parse("2001:0db8::1"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipaddress = IPAddress.Parse("2001:0db8::1"); - bool result = ipnetwork.Contains(ipaddress); - bool expected = true; + bool result = ipnetwork.Contains(ipaddress); + bool expected = true; - Assert.AreEqual(expected, result, "contains"); - } + Assert.AreEqual(expected, result, "contains"); + } /// /// Test. @@ -2052,14 +2052,14 @@ public void TestContains1() [TestMethod] public void TestContains2() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - var ipaddress = IPAddress.Parse("2001:0db8:0:1::"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipaddress = IPAddress.Parse("2001:0db8:0:1::"); - bool result = ipnetwork.Contains(ipaddress); - bool expected = false; + bool result = ipnetwork.Contains(ipaddress); + bool expected = false; - Assert.AreEqual(expected, result, "contains"); - } + Assert.AreEqual(expected, result, "contains"); + } /// /// Test. @@ -2067,14 +2067,14 @@ public void TestContains2() [TestMethod] public void TestContains3() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/64"); - bool result = ipnetwork.Contains(ipnetwork2); - bool expected = true; + bool result = ipnetwork.Contains(ipnetwork2); + bool expected = true; - Assert.AreEqual(expected, result, "contains"); - } + Assert.AreEqual(expected, result, "contains"); + } /// /// Test. @@ -2082,14 +2082,14 @@ public void TestContains3() [TestMethod] public void TestContains4() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/65"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/65"); - bool result = ipnetwork.Contains(ipnetwork2); - bool expected = true; + bool result = ipnetwork.Contains(ipnetwork2); + bool expected = true; - Assert.AreEqual(expected, result, "contains"); - } + Assert.AreEqual(expected, result, "contains"); + } /// /// Test. @@ -2097,14 +2097,14 @@ public void TestContains4() [TestMethod] public void TestContains5() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - var ipnetwork2 = IPNetwork2.Parse("2001:0db8:1::/65"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork2 = IPNetwork2.Parse("2001:0db8:1::/65"); - bool result = ipnetwork.Contains(ipnetwork2); - bool expected = false; + bool result = ipnetwork.Contains(ipnetwork2); + bool expected = false; - Assert.AreEqual(expected, result, "contains"); - } + Assert.AreEqual(expected, result, "contains"); + } /// /// Test. @@ -2112,14 +2112,14 @@ public void TestContains5() [TestMethod] public void TestContains6() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/63"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/63"); - bool result = ipnetwork.Contains(ipnetwork2); - bool expected = false; + bool result = ipnetwork.Contains(ipnetwork2); + bool expected = false; - Assert.AreEqual(expected, result, "contains"); - } + Assert.AreEqual(expected, result, "contains"); + } /// /// Test. @@ -2128,11 +2128,11 @@ public void TestContains6() [ExpectedException(typeof(ArgumentNullException))] public void TestContains10() { - var ipnetwork = IPNetwork2.Parse("::/0"); - IPAddress ipaddress = null; + var ipnetwork = IPNetwork2.Parse("::/0"); + IPAddress ipaddress = null; - bool result = ipnetwork.Contains(ipaddress); - } + bool result = ipnetwork.Contains(ipaddress); + } /// /// Test. @@ -2140,12 +2140,12 @@ public void TestContains10() [TestMethod] public void TestContains11_different_address_family_returns_false() { - var ipnetwork = IPNetwork2.Parse("::1"); // IPv6 - var ipaddress = IPAddress.Parse("127.0.0.1"); // IPv4 + var ipnetwork = IPNetwork2.Parse("::1"); // IPv6 + var ipaddress = IPAddress.Parse("127.0.0.1"); // IPv4 - bool result = ipnetwork.Contains(ipaddress); - Assert.AreEqual(false, result, "contains"); - } + bool result = ipnetwork.Contains(ipaddress); + Assert.AreEqual(false, result, "contains"); + } #endregion @@ -2158,10 +2158,10 @@ public void TestContains11_different_address_family_returns_false() [ExpectedException(typeof(ArgumentNullException))] public void TestOverlap2() { - var network1 = IPNetwork2.Parse("2001:0db8::/0"); - IPNetwork2 network2 = null; - network1.Overlap(network2); - } + var network1 = IPNetwork2.Parse("2001:0db8::/0"); + IPNetwork2 network2 = null; + network1.Overlap(network2); + } /// /// Test. @@ -2169,13 +2169,13 @@ public void TestOverlap2() [TestMethod] public void TestOverlap3() { - var network1 = IPNetwork2.Parse("2001:0db8::/64"); - var network2 = IPNetwork2.Parse("2001:0db8::/64"); - bool result = network1.Overlap(network2); - bool expected = true; + var network1 = IPNetwork2.Parse("2001:0db8::/64"); + var network2 = IPNetwork2.Parse("2001:0db8::/64"); + bool result = network1.Overlap(network2); + bool expected = true; - Assert.AreEqual(expected, result, "overlap"); - } + Assert.AreEqual(expected, result, "overlap"); + } /// /// Test. @@ -2183,13 +2183,13 @@ public void TestOverlap3() [TestMethod] public void TestOverlap4() { - var network1 = IPNetwork2.Parse("2001:0db8::/64"); - var network2 = IPNetwork2.Parse("2001:0db8:0:0:1::/65"); - bool result = network1.Overlap(network2); - bool expected = true; + var network1 = IPNetwork2.Parse("2001:0db8::/64"); + var network2 = IPNetwork2.Parse("2001:0db8:0:0:1::/65"); + bool result = network1.Overlap(network2); + bool expected = true; - Assert.AreEqual(expected, result, "overlap"); - } + Assert.AreEqual(expected, result, "overlap"); + } /// /// Test. @@ -2197,13 +2197,13 @@ public void TestOverlap4() [TestMethod] public void TestOverlap5() { - var network1 = IPNetwork2.Parse("2001:0db8:0:1::/68"); - var network2 = IPNetwork2.Parse("2001:0db8:0:2::/68"); - bool result = network1.Overlap(network2); - bool expected = false; + var network1 = IPNetwork2.Parse("2001:0db8:0:1::/68"); + var network2 = IPNetwork2.Parse("2001:0db8:0:2::/68"); + bool result = network1.Overlap(network2); + bool expected = false; - Assert.AreEqual(expected, result, "overlap"); - } + Assert.AreEqual(expected, result, "overlap"); + } /// /// Test. @@ -2211,13 +2211,13 @@ public void TestOverlap5() [TestMethod] public void TestOverlap6() { - var network1 = IPNetwork2.Parse("2001:0db8:0:1::/68"); - var network2 = IPNetwork2.Parse("2001:0db8:0:2::/62"); - bool result = network1.Overlap(network2); - bool expected = true; + var network1 = IPNetwork2.Parse("2001:0db8:0:1::/68"); + var network2 = IPNetwork2.Parse("2001:0db8:0:2::/62"); + bool result = network1.Overlap(network2); + bool expected = true; - Assert.AreEqual(expected, result, "overlap"); - } + Assert.AreEqual(expected, result, "overlap"); + } #endregion @@ -2229,16 +2229,16 @@ public void TestOverlap6() [TestMethod] public void Example1() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - Console.WriteLine("Network : {0}", ipnetwork.Network); - Console.WriteLine("Netmask : {0}", ipnetwork.Netmask); - Console.WriteLine("Broadcast : {0}", ipnetwork.Broadcast); - Console.WriteLine("FirstUsable : {0}", ipnetwork.FirstUsable); - Console.WriteLine("LastUsable : {0}", ipnetwork.LastUsable); - Console.WriteLine("Usable : {0}", ipnetwork.Usable); - Console.WriteLine("Cidr : {0}", ipnetwork.Cidr); - } + Console.WriteLine("Network : {0}", ipnetwork.Network); + Console.WriteLine("Netmask : {0}", ipnetwork.Netmask); + Console.WriteLine("Broadcast : {0}", ipnetwork.Broadcast); + Console.WriteLine("FirstUsable : {0}", ipnetwork.FirstUsable); + Console.WriteLine("LastUsable : {0}", ipnetwork.LastUsable); + Console.WriteLine("Usable : {0}", ipnetwork.Usable); + Console.WriteLine("Cidr : {0}", ipnetwork.Cidr); + } /// /// Test. @@ -2246,30 +2246,30 @@ public void Example1() [TestMethod] public void Example2() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - var ipaddress = IPAddress.Parse("2001:0db8::1"); - var ipaddress2 = IPAddress.Parse("2001:0db9::1"); + var ipaddress = IPAddress.Parse("2001:0db8::1"); + var ipaddress2 = IPAddress.Parse("2001:0db9::1"); - var ipnetwork2 = IPNetwork2.Parse("2001:0db8::1/128"); - var ipnetwork3 = IPNetwork2.Parse("2001:0db9::1/64"); + var ipnetwork2 = IPNetwork2.Parse("2001:0db8::1/128"); + var ipnetwork3 = IPNetwork2.Parse("2001:0db9::1/64"); - bool contains1 = ipnetwork.Contains(ipaddress); - bool contains2 = ipnetwork.Contains(ipaddress2); - bool contains3 = ipnetwork.Contains(ipnetwork2); - bool contains4 = ipnetwork.Contains(ipnetwork3); + bool contains1 = ipnetwork.Contains(ipaddress); + bool contains2 = ipnetwork.Contains(ipaddress2); + bool contains3 = ipnetwork.Contains(ipnetwork2); + bool contains4 = ipnetwork.Contains(ipnetwork3); - bool overlap1 = ipnetwork.Overlap(ipnetwork2); - bool overlap2 = ipnetwork.Overlap(ipnetwork3); + bool overlap1 = ipnetwork.Overlap(ipnetwork2); + bool overlap2 = ipnetwork.Overlap(ipnetwork3); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress, contains1); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress2, contains2); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipnetwork2, contains3); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipnetwork3, contains4); + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress, contains1); + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress2, contains2); + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipnetwork2, contains3); + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipnetwork3, contains4); - Console.WriteLine("{0} overlap {1} : {2}", ipnetwork, ipnetwork2, overlap1); - Console.WriteLine("{0} overlap {1} : {2}", ipnetwork, ipnetwork3, overlap2); - } + Console.WriteLine("{0} overlap {1} : {2}", ipnetwork, ipnetwork2, overlap1); + Console.WriteLine("{0} overlap {1} : {2}", ipnetwork, ipnetwork3, overlap2); + } /// /// Test. @@ -2277,20 +2277,20 @@ public void Example2() [TestMethod] public void Example4() { - var wholeInternet = IPNetwork2.Parse("::/0"); - byte newCidr = 2; - IPNetworkCollection subneted = wholeInternet.Subnet(newCidr); + var wholeInternet = IPNetwork2.Parse("::/0"); + byte newCidr = 2; + IPNetworkCollection subneted = wholeInternet.Subnet(newCidr); - Console.WriteLine("{0} was subnetted into {1} subnets", wholeInternet, subneted.Count); - Console.WriteLine("First: {0}", subneted[0]); - Console.WriteLine("Last : {0}", subneted[subneted.Count - 1]); - Console.WriteLine("All :"); + Console.WriteLine("{0} was subnetted into {1} subnets", wholeInternet, subneted.Count); + Console.WriteLine("First: {0}", subneted[0]); + Console.WriteLine("Last : {0}", subneted[subneted.Count - 1]); + Console.WriteLine("All :"); - foreach (IPNetwork2 ipnetwork in subneted) - { - Console.WriteLine("{0}", ipnetwork); + foreach (IPNetwork2 ipnetwork in subneted) + { + Console.WriteLine("{0}", ipnetwork); + } } - } /// /// Test. @@ -2298,12 +2298,12 @@ public void Example4() [TestMethod] public void Example5() { - var ipnetwork1 = IPNetwork2.Parse("2001:0db8::/64"); - var ipnetwork2 = IPNetwork2.Parse("2001:0db9::/64"); - IPNetwork2[] ipnetwork3 = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2 }); + var ipnetwork1 = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork2 = IPNetwork2.Parse("2001:0db9::/64"); + IPNetwork2[] ipnetwork3 = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2 }); - Console.WriteLine("{0} + {1} = {2}", ipnetwork1, ipnetwork2, ipnetwork3[0]); - } + Console.WriteLine("{0} + {1} = {2}", ipnetwork1, ipnetwork2, ipnetwork3[0]); + } /// /// Test. @@ -2311,17 +2311,17 @@ public void Example5() [TestMethod] public void Example6() { - var ipnetwork = IPNetwork2.Parse("fe80::202:b3ff:fe1e:8329/24"); + var ipnetwork = IPNetwork2.Parse("fe80::202:b3ff:fe1e:8329/24"); - var ipaddress = IPAddress.Parse("2001:db8::"); - var ipaddress2 = IPAddress.Parse("fe80::202:b3ff:fe1e:1"); + var ipaddress = IPAddress.Parse("2001:db8::"); + var ipaddress2 = IPAddress.Parse("fe80::202:b3ff:fe1e:1"); - bool contains1 = ipnetwork.Contains(ipaddress); - bool contains2 = ipnetwork.Contains(ipaddress2); + bool contains1 = ipnetwork.Contains(ipaddress); + bool contains2 = ipnetwork.Contains(ipaddress2); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress, contains1); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress2, contains2); - } + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress, contains1); + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress2, contains2); + } /// /// Test. @@ -2329,14 +2329,14 @@ public void Example6() [TestMethod] public void Example8() { - var network = IPNetwork2.Parse("::/124"); - IPNetworkCollection ips = network.Subnet(128); + var network = IPNetwork2.Parse("::/124"); + IPNetworkCollection ips = network.Subnet(128); - foreach (IPNetwork2 ip in ips) - { - Console.WriteLine("{0}", ip); + foreach (IPNetwork2 ip in ips) + { + Console.WriteLine("{0}", ip); + } } - } /// /// Test. @@ -2344,14 +2344,14 @@ public void Example8() [TestMethod] public void Example11() { - var defaultParse = IPNetwork2.Parse("::1"); - var classFullParse = IPNetwork2.Parse("::1", CidrGuess.ClassFull); - var classLessParse = IPNetwork2.Parse("::1", CidrGuess.ClassLess); + var defaultParse = IPNetwork2.Parse("::1"); + var classFullParse = IPNetwork2.Parse("::1", CidrGuess.ClassFull); + var classLessParse = IPNetwork2.Parse("::1", CidrGuess.ClassLess); - Console.WriteLine("IPV6 Default Parse : {0}", defaultParse); - Console.WriteLine("IPV6 ClassFull Parse : {0}", classFullParse); - Console.WriteLine("IPV6 ClassLess Parse : {0}", classLessParse); - } + Console.WriteLine("IPV6 Default Parse : {0}", defaultParse); + Console.WriteLine("IPV6 ClassFull Parse : {0}", classFullParse); + Console.WriteLine("IPV6 ClassLess Parse : {0}", classLessParse); + } #endregion @@ -2363,12 +2363,12 @@ public void Example11() [TestMethod] public void TestToString() { - var ipnetwork = IPNetwork2.Parse("2001:0db8:0000:0000:0000:0000:0000:0000/32"); - string expected = "2001:db8::/32"; - string result = ipnetwork.ToString(); + var ipnetwork = IPNetwork2.Parse("2001:0db8:0000:0000:0000:0000:0000:0000/32"); + string expected = "2001:db8::/32"; + string result = ipnetwork.ToString(); - Assert.AreEqual(expected, result, "ToString"); - } + Assert.AreEqual(expected, result, "ToString"); + } /// /// Test. @@ -2376,12 +2376,12 @@ public void TestToString() [TestMethod] public void TestToString1() { - var ipnetwork = IPNetwork2.Parse("2001:0db8:1:2:3:4:5:6/32"); - string expected = "2001:db8::/32"; - string result = ipnetwork.ToString(); + var ipnetwork = IPNetwork2.Parse("2001:0db8:1:2:3:4:5:6/32"); + string expected = "2001:db8::/32"; + string result = ipnetwork.ToString(); - Assert.AreEqual(expected, result, "ToString"); - } + Assert.AreEqual(expected, result, "ToString"); + } /// /// Test. @@ -2389,12 +2389,12 @@ public void TestToString1() [TestMethod] public void TestToString2() { - var ipnetwork = IPNetwork2.Parse("2001:0db8:1:2:3:4:5:6/64"); - string expected = "2001:db8:1:2::/64"; - string result = ipnetwork.ToString(); + var ipnetwork = IPNetwork2.Parse("2001:0db8:1:2:3:4:5:6/64"); + string expected = "2001:db8:1:2::/64"; + string result = ipnetwork.ToString(); - Assert.AreEqual(expected, result, "ToString"); - } + Assert.AreEqual(expected, result, "ToString"); + } /// /// Test. @@ -2402,12 +2402,12 @@ public void TestToString2() [TestMethod] public void TestToString3() { - var ipnetwork = IPNetwork2.Parse("2001:0db8:1:2:3:4:5:6/100"); - string expected = "2001:db8:1:2:3:4::/100"; - string result = ipnetwork.ToString(); + var ipnetwork = IPNetwork2.Parse("2001:0db8:1:2:3:4:5:6/100"); + string expected = "2001:db8:1:2:3:4::/100"; + string result = ipnetwork.ToString(); - Assert.AreEqual(expected, result, "ToString"); - } + Assert.AreEqual(expected, result, "ToString"); + } #endregion @@ -2420,11 +2420,11 @@ public void TestToString3() [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestSubnet3() { - var ipnetwork = IPNetwork2.Parse("::"); - byte cidr = 129; + var ipnetwork = IPNetwork2.Parse("::"); + byte cidr = 129; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - } + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + } /// /// Test. @@ -2433,11 +2433,11 @@ public void TestSubnet3() [ExpectedException(typeof(ArgumentException))] public void TestSubnet4() { - var ipnetwork = IPNetwork2.Parse("::"); - byte cidr = 1; + var ipnetwork = IPNetwork2.Parse("::"); + byte cidr = 1; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - } + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + } /// /// Test. @@ -2445,14 +2445,14 @@ public void TestSubnet4() [TestMethod] public void TestSubnet5() { - var ipnetwork = IPNetwork2.Parse("1:1:1:1:1:1:1:1"); - byte cidr = 65; + var ipnetwork = IPNetwork2.Parse("1:1:1:1:1:1:1:1"); + byte cidr = 65; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - Assert.AreEqual(2, subnets.Count, "count"); - Assert.AreEqual("1:1:1:1::/65", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("1:1:1:1:8000::/65", subnets[1].ToString(), "subnet2"); - } + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + Assert.AreEqual(2, subnets.Count, "count"); + Assert.AreEqual("1:1:1:1::/65", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("1:1:1:1:8000::/65", subnets[1].ToString(), "subnet2"); + } /// /// Test. @@ -2460,28 +2460,28 @@ public void TestSubnet5() [TestMethod] public void TestSubnet6() { - var ipnetwork = IPNetwork2.Parse("1:1:1:1:1:1:1:1"); - byte cidr = 68; - - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - Assert.AreEqual(16, subnets.Count, "count"); - Assert.AreEqual("1:1:1:1::/68", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("1:1:1:1:1000::/68", subnets[1].ToString(), "subnet2"); - Assert.AreEqual("1:1:1:1:2000::/68", subnets[2].ToString(), "subnet3"); - Assert.AreEqual("1:1:1:1:3000::/68", subnets[3].ToString(), "subnet4"); - Assert.AreEqual("1:1:1:1:4000::/68", subnets[4].ToString(), "subnet5"); - Assert.AreEqual("1:1:1:1:5000::/68", subnets[5].ToString(), "subnet6"); - Assert.AreEqual("1:1:1:1:6000::/68", subnets[6].ToString(), "subnet7"); - Assert.AreEqual("1:1:1:1:7000::/68", subnets[7].ToString(), "subnet8"); - Assert.AreEqual("1:1:1:1:8000::/68", subnets[8].ToString(), "subnet9"); - Assert.AreEqual("1:1:1:1:9000::/68", subnets[9].ToString(), "subnet10"); - Assert.AreEqual("1:1:1:1:a000::/68", subnets[10].ToString(), "subnet11"); - Assert.AreEqual("1:1:1:1:b000::/68", subnets[11].ToString(), "subnet12"); - Assert.AreEqual("1:1:1:1:c000::/68", subnets[12].ToString(), "subnet13"); - Assert.AreEqual("1:1:1:1:d000::/68", subnets[13].ToString(), "subnet14"); - Assert.AreEqual("1:1:1:1:e000::/68", subnets[14].ToString(), "subnet15"); - Assert.AreEqual("1:1:1:1:f000::/68", subnets[15].ToString(), "subnet16"); - } + var ipnetwork = IPNetwork2.Parse("1:1:1:1:1:1:1:1"); + byte cidr = 68; + + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + Assert.AreEqual(16, subnets.Count, "count"); + Assert.AreEqual("1:1:1:1::/68", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("1:1:1:1:1000::/68", subnets[1].ToString(), "subnet2"); + Assert.AreEqual("1:1:1:1:2000::/68", subnets[2].ToString(), "subnet3"); + Assert.AreEqual("1:1:1:1:3000::/68", subnets[3].ToString(), "subnet4"); + Assert.AreEqual("1:1:1:1:4000::/68", subnets[4].ToString(), "subnet5"); + Assert.AreEqual("1:1:1:1:5000::/68", subnets[5].ToString(), "subnet6"); + Assert.AreEqual("1:1:1:1:6000::/68", subnets[6].ToString(), "subnet7"); + Assert.AreEqual("1:1:1:1:7000::/68", subnets[7].ToString(), "subnet8"); + Assert.AreEqual("1:1:1:1:8000::/68", subnets[8].ToString(), "subnet9"); + Assert.AreEqual("1:1:1:1:9000::/68", subnets[9].ToString(), "subnet10"); + Assert.AreEqual("1:1:1:1:a000::/68", subnets[10].ToString(), "subnet11"); + Assert.AreEqual("1:1:1:1:b000::/68", subnets[11].ToString(), "subnet12"); + Assert.AreEqual("1:1:1:1:c000::/68", subnets[12].ToString(), "subnet13"); + Assert.AreEqual("1:1:1:1:d000::/68", subnets[13].ToString(), "subnet14"); + Assert.AreEqual("1:1:1:1:e000::/68", subnets[14].ToString(), "subnet15"); + Assert.AreEqual("1:1:1:1:f000::/68", subnets[15].ToString(), "subnet16"); + } /// /// Test. @@ -2489,14 +2489,14 @@ public void TestSubnet6() [TestMethod] public void TestSubnet7() { - var ipnetwork = IPNetwork2.Parse("1:1:1:1:1:1:1:1"); - byte cidr = 72; + var ipnetwork = IPNetwork2.Parse("1:1:1:1:1:1:1:1"); + byte cidr = 72; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - Assert.AreEqual(256, subnets.Count, "count"); - Assert.AreEqual("1:1:1:1::/72", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("1:1:1:1:ff00::/72", subnets[255].ToString(), "subnet256"); - } + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + Assert.AreEqual(256, subnets.Count, "count"); + Assert.AreEqual("1:1:1:1::/72", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("1:1:1:1:ff00::/72", subnets[255].ToString(), "subnet256"); + } /// /// Test. @@ -2504,15 +2504,15 @@ public void TestSubnet7() [TestMethod] public void TestSubnet9() { - var ipnetwork = IPNetwork2.Parse("2001:db08:1:1:1:1:1:1"); - byte cidr = 128; - var count = BigInteger.Pow(2, ipnetwork.Cidr); - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - Assert.AreEqual(count, subnets.Count, "count"); - Assert.AreEqual("2001:db08:1:1::/128", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("2001:db08:1:1::ff/128", subnets[255].ToString(), "subnet256"); - Assert.AreEqual("2001:db08:1:1:ffff:ffff:ffff:ffff/128", subnets[count - 1].ToString(), "last"); - } + var ipnetwork = IPNetwork2.Parse("2001:db08:1:1:1:1:1:1"); + byte cidr = 128; + var count = BigInteger.Pow(2, ipnetwork.Cidr); + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + Assert.AreEqual(count, subnets.Count, "count"); + Assert.AreEqual("2001:db08:1:1::/128", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("2001:db08:1:1::ff/128", subnets[255].ToString(), "subnet256"); + Assert.AreEqual("2001:db08:1:1:ffff:ffff:ffff:ffff/128", subnets[count - 1].ToString(), "last"); + } /// /// Test. @@ -2520,16 +2520,16 @@ public void TestSubnet9() [TestMethod] public void TestSubnet10() { - var ipnetwork = IPNetwork2.Parse("2001:db08::/0"); - byte cidr = 128; - var count = BigInteger.Pow(2, 128 - ipnetwork.Cidr); + var ipnetwork = IPNetwork2.Parse("2001:db08::/0"); + byte cidr = 128; + var count = BigInteger.Pow(2, 128 - ipnetwork.Cidr); - // Here I spawm a OOM dragon ! beware of the beast ! - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - Assert.AreEqual(count, subnets.Count, "count"); - Assert.AreEqual("::/128", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128", subnets[count - 1].ToString(), "last"); - } + // Here I spawm a OOM dragon ! beware of the beast ! + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + Assert.AreEqual(count, subnets.Count, "count"); + Assert.AreEqual("::/128", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128", subnets[count - 1].ToString(), "last"); + } /// /// Test. @@ -2537,16 +2537,16 @@ public void TestSubnet10() [TestMethod] public void TestSubnet12() { - var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); - byte cidr = 70; - int i = -1; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - foreach (IPNetwork2 ipn in subnets) - { - i++; - Assert.AreEqual(subnets[i], ipn, "subnet"); + var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); + byte cidr = 70; + int i = -1; + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + foreach (IPNetwork2 ipn in subnets) + { + i++; + Assert.AreEqual(subnets[i], ipn, "subnet"); + } } - } /// /// Test. @@ -2555,11 +2555,11 @@ public void TestSubnet12() [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestSubnet13() { - var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); - byte cidr = 70; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - IPNetwork2 error = subnets[1000]; - } + var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); + byte cidr = 70; + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + IPNetwork2 error = subnets[1000]; + } /// /// Test. @@ -2567,18 +2567,18 @@ public void TestSubnet13() [TestMethod] public void TestSubnet14() { - var network = IPNetwork2.Parse("15.0.0.0/8"); - IPNetworkCollection subnets = network.Subnet(12); - Assert.AreEqual(subnets[0].ToString(), "15.0.0.0/12", "subnets[0]"); - Assert.AreEqual(subnets[1].ToString(), "15.16.0.0/12", "subnets[1]"); - Assert.AreEqual(subnets[2].ToString(), "15.32.0.0/12", "subnets[2]"); - Assert.AreEqual(subnets[15].ToString(), "15.240.0.0/12", "subnets[15]"); - - foreach (IPNetwork2 ipn in subnets) - { - Console.WriteLine(ipn); + var network = IPNetwork2.Parse("15.0.0.0/8"); + IPNetworkCollection subnets = network.Subnet(12); + Assert.AreEqual(subnets[0].ToString(), "15.0.0.0/12", "subnets[0]"); + Assert.AreEqual(subnets[1].ToString(), "15.16.0.0/12", "subnets[1]"); + Assert.AreEqual(subnets[2].ToString(), "15.32.0.0/12", "subnets[2]"); + Assert.AreEqual(subnets[15].ToString(), "15.240.0.0/12", "subnets[15]"); + + foreach (IPNetwork2 ipn in subnets) + { + Console.WriteLine(ipn); + } } - } #endregion @@ -2590,14 +2590,14 @@ public void TestSubnet14() [TestMethod] public void TestTrySubnet3() { - var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); - byte cidr = 255; + var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); + byte cidr = 255; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + IPNetworkCollection subnets = null; + bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); - Assert.AreEqual(false, subnetted, "subnetted"); - } + Assert.AreEqual(false, subnetted, "subnetted"); + } /// /// Test. @@ -2605,14 +2605,14 @@ public void TestTrySubnet3() [TestMethod] public void TestTrySubnet4() { - var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); - byte cidr = 63; + var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); + byte cidr = 63; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + IPNetworkCollection subnets = null; + bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); - Assert.AreEqual(false, subnetted, "subnetted"); - } + Assert.AreEqual(false, subnetted, "subnetted"); + } /// /// Test. @@ -2620,17 +2620,17 @@ public void TestTrySubnet4() [TestMethod] public void TestTrySubnet5() { - var ipnetwork = IPNetwork2.Parse("2001:db8::/64"); - byte cidr = 65; + var ipnetwork = IPNetwork2.Parse("2001:db8::/64"); + byte cidr = 65; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + IPNetworkCollection subnets = null; + bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); - Assert.AreEqual(true, subnetted, "subnetted"); - Assert.AreEqual(2, subnets.Count, "count"); - Assert.AreEqual("2001:db8::/65", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("2001:db8:0:0:8000::/65", subnets[1].ToString(), "subnet2"); - } + Assert.AreEqual(true, subnetted, "subnetted"); + Assert.AreEqual(2, subnets.Count, "count"); + Assert.AreEqual("2001:db8::/65", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("2001:db8:0:0:8000::/65", subnets[1].ToString(), "subnet2"); + } /// /// Test. @@ -2638,31 +2638,31 @@ public void TestTrySubnet5() [TestMethod] public void TestTrySubnet6() { - var ipnetwork = IPNetwork2.Parse("2001:db8::/64"); - byte cidr = 68; - - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); - - Assert.AreEqual(true, subnetted, "subnetted"); - Assert.AreEqual(16, subnets.Count, "count"); - Assert.AreEqual("2001:db8::/68", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("2001:db8:0:0:1000::/68", subnets[1].ToString(), "subnet2"); - Assert.AreEqual("2001:db8:0:0:2000::/68", subnets[2].ToString(), "subnet3"); - Assert.AreEqual("2001:db8:0:0:3000::/68", subnets[3].ToString(), "subnet4"); - Assert.AreEqual("2001:db8:0:0:4000::/68", subnets[4].ToString(), "subnet5"); - Assert.AreEqual("2001:db8:0:0:5000::/68", subnets[5].ToString(), "subnet6"); - Assert.AreEqual("2001:db8:0:0:6000::/68", subnets[6].ToString(), "subnet7"); - Assert.AreEqual("2001:db8:0:0:7000::/68", subnets[7].ToString(), "subnet8"); - Assert.AreEqual("2001:db8:0:0:8000::/68", subnets[8].ToString(), "subnet9"); - Assert.AreEqual("2001:db8:0:0:9000::/68", subnets[9].ToString(), "subnet10"); - Assert.AreEqual("2001:db8:0:0:a000::/68", subnets[10].ToString(), "subnet11"); - Assert.AreEqual("2001:db8:0:0:b000::/68", subnets[11].ToString(), "subnet12"); - Assert.AreEqual("2001:db8:0:0:c000::/68", subnets[12].ToString(), "subnet13"); - Assert.AreEqual("2001:db8:0:0:d000::/68", subnets[13].ToString(), "subnet14"); - Assert.AreEqual("2001:db8:0:0:e000::/68", subnets[14].ToString(), "subnet15"); - Assert.AreEqual("2001:db8:0:0:f000::/68", subnets[15].ToString(), "subnet16"); - } + var ipnetwork = IPNetwork2.Parse("2001:db8::/64"); + byte cidr = 68; + + IPNetworkCollection subnets = null; + bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + + Assert.AreEqual(true, subnetted, "subnetted"); + Assert.AreEqual(16, subnets.Count, "count"); + Assert.AreEqual("2001:db8::/68", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("2001:db8:0:0:1000::/68", subnets[1].ToString(), "subnet2"); + Assert.AreEqual("2001:db8:0:0:2000::/68", subnets[2].ToString(), "subnet3"); + Assert.AreEqual("2001:db8:0:0:3000::/68", subnets[3].ToString(), "subnet4"); + Assert.AreEqual("2001:db8:0:0:4000::/68", subnets[4].ToString(), "subnet5"); + Assert.AreEqual("2001:db8:0:0:5000::/68", subnets[5].ToString(), "subnet6"); + Assert.AreEqual("2001:db8:0:0:6000::/68", subnets[6].ToString(), "subnet7"); + Assert.AreEqual("2001:db8:0:0:7000::/68", subnets[7].ToString(), "subnet8"); + Assert.AreEqual("2001:db8:0:0:8000::/68", subnets[8].ToString(), "subnet9"); + Assert.AreEqual("2001:db8:0:0:9000::/68", subnets[9].ToString(), "subnet10"); + Assert.AreEqual("2001:db8:0:0:a000::/68", subnets[10].ToString(), "subnet11"); + Assert.AreEqual("2001:db8:0:0:b000::/68", subnets[11].ToString(), "subnet12"); + Assert.AreEqual("2001:db8:0:0:c000::/68", subnets[12].ToString(), "subnet13"); + Assert.AreEqual("2001:db8:0:0:d000::/68", subnets[13].ToString(), "subnet14"); + Assert.AreEqual("2001:db8:0:0:e000::/68", subnets[14].ToString(), "subnet15"); + Assert.AreEqual("2001:db8:0:0:f000::/68", subnets[15].ToString(), "subnet16"); + } #endregion @@ -2674,16 +2674,16 @@ public void TestTrySubnet6() [TestMethod] public void TestTrySupernet1() { - var network1 = IPNetwork2.Parse("2001:db8::/65"); - var network2 = IPNetwork2.Parse("2001:db8:0:0:8000::/65"); - var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); - IPNetwork2 supernet; - bool supernetted = true; - bool result = network1.TrySupernet(network2, out supernet); + var network1 = IPNetwork2.Parse("2001:db8::/65"); + var network2 = IPNetwork2.Parse("2001:db8:0:0:8000::/65"); + var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); + IPNetwork2 supernet; + bool supernetted = true; + bool result = network1.TrySupernet(network2, out supernet); - Assert.AreEqual(supernetted, result, "supernetted"); - Assert.AreEqual(supernetExpected, supernet, "supernet"); - } + Assert.AreEqual(supernetted, result, "supernetted"); + Assert.AreEqual(supernetExpected, supernet, "supernet"); + } /// /// Test. @@ -2692,13 +2692,13 @@ public void TestTrySupernet1() [ExpectedException(typeof(ArgumentNullException))] public void TestTrySupernet2() { - IPNetwork2 network1 = null; - var network2 = IPNetwork2.Parse("2001:db8::/64"); - IPNetwork2 supernet; + IPNetwork2 network1 = null; + var network2 = IPNetwork2.Parse("2001:db8::/64"); + IPNetwork2 supernet; #pragma warning disable 0618 - bool result = IPNetwork2.TrySupernet(network1, network2, out supernet); + bool result = IPNetwork2.TrySupernet(network1, network2, out supernet); #pragma warning restore 0618 - } + } /// /// Test. @@ -2706,16 +2706,16 @@ public void TestTrySupernet2() [TestMethod] public void TestTrySupernet3() { - var network1 = IPNetwork2.Parse("2001:db8::/64"); - IPNetwork2 network2 = null; - IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; - bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + var network1 = IPNetwork2.Parse("2001:db8::/64"); + IPNetwork2 network2 = null; + IPNetwork2 supernetExpected = null; + IPNetwork2 supernet; + bool parsed = false; + bool result = network1.TrySupernet(network2, out supernet); - Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + Assert.AreEqual(supernetExpected, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } /// /// Test. @@ -2723,16 +2723,16 @@ public void TestTrySupernet3() [TestMethod] public void TestTrySupernet4() { - var network1 = IPNetwork2.Parse("2001:db8::/64"); - var network2 = IPNetwork2.Parse("2001:db9::/65"); - IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; - bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + var network1 = IPNetwork2.Parse("2001:db8::/64"); + var network2 = IPNetwork2.Parse("2001:db9::/65"); + IPNetwork2 supernetExpected = null; + IPNetwork2 supernet; + bool parsed = false; + bool result = network1.TrySupernet(network2, out supernet); - Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + Assert.AreEqual(supernetExpected, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } /// /// Test. @@ -2740,16 +2740,16 @@ public void TestTrySupernet4() [TestMethod] public void TestTrySupernet5() { - var network1 = IPNetwork2.Parse("2001:db8::/64"); - var network2 = IPNetwork2.Parse("2001:dba::/64"); - IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; - bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + var network1 = IPNetwork2.Parse("2001:db8::/64"); + var network2 = IPNetwork2.Parse("2001:dba::/64"); + IPNetwork2 supernetExpected = null; + IPNetwork2 supernet; + bool parsed = false; + bool result = network1.TrySupernet(network2, out supernet); - Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + Assert.AreEqual(supernetExpected, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } /// /// Test. @@ -2757,16 +2757,16 @@ public void TestTrySupernet5() [TestMethod] public void TestTrySupernet6() { - var network1 = IPNetwork2.Parse("2001:db8::/64"); - var network2 = IPNetwork2.Parse("2001:db8::1/65"); - var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); - IPNetwork2 supernet; - bool parsed = true; - bool result = network1.TrySupernet(network2, out supernet); + var network1 = IPNetwork2.Parse("2001:db8::/64"); + var network2 = IPNetwork2.Parse("2001:db8::1/65"); + var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); + IPNetwork2 supernet; + bool parsed = true; + bool result = network1.TrySupernet(network2, out supernet); - Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + Assert.AreEqual(supernetExpected, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } /// /// Test. @@ -2774,16 +2774,16 @@ public void TestTrySupernet6() [TestMethod] public void TestTrySupernet8() { - var network1 = IPNetwork2.Parse("2001:db0::/64"); - var network2 = IPNetwork2.Parse("2001:dbf::/64"); - IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; - bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + var network1 = IPNetwork2.Parse("2001:db0::/64"); + var network2 = IPNetwork2.Parse("2001:dbf::/64"); + IPNetwork2 supernetExpected = null; + IPNetwork2 supernet; + bool parsed = false; + bool result = network1.TrySupernet(network2, out supernet); - Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + Assert.AreEqual(supernetExpected, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } /// /// Test. @@ -2791,18 +2791,18 @@ public void TestTrySupernet8() [TestMethod] public void TestTrySupernet9() { - var network1 = IPNetwork2.Parse("192.168.1.1/24"); - var network2 = IPNetwork2.Parse("192.168.2.1/24"); - IPNetwork2[] network3 = { network1, network2 }; - IPNetwork2[] supernetExpected = { network1, network2 }; - IPNetwork2[] supernet; - bool parsed = true; - bool result = IPNetwork2.TrySupernet(network3, out supernet); - - Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); - Assert.AreEqual(supernetExpected[1], supernet[1], "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + var network1 = IPNetwork2.Parse("192.168.1.1/24"); + var network2 = IPNetwork2.Parse("192.168.2.1/24"); + IPNetwork2[] network3 = { network1, network2 }; + IPNetwork2[] supernetExpected = { network1, network2 }; + IPNetwork2[] supernet; + bool parsed = true; + bool result = IPNetwork2.TrySupernet(network3, out supernet); + + Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); + Assert.AreEqual(supernetExpected[1], supernet[1], "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } /// /// Test. @@ -2810,17 +2810,17 @@ public void TestTrySupernet9() [TestMethod] public void TestTrySupernet10() { - var network1 = IPNetwork2.Parse("2001:db8:0000::/65"); - var network2 = IPNetwork2.Parse("2001:db8:0:0:8000::/65"); - IPNetwork2[] network3 = { network1, network2 }; - IPNetwork2[] supernetExpected = { IPNetwork2.Parse("2001:db8::/64") }; - IPNetwork2[] supernet; - bool parsed = true; - bool result = IPNetwork2.TrySupernet(network3, out supernet); + var network1 = IPNetwork2.Parse("2001:db8:0000::/65"); + var network2 = IPNetwork2.Parse("2001:db8:0:0:8000::/65"); + IPNetwork2[] network3 = { network1, network2 }; + IPNetwork2[] supernetExpected = { IPNetwork2.Parse("2001:db8::/64") }; + IPNetwork2[] supernet; + bool parsed = true; + bool result = IPNetwork2.TrySupernet(network3, out supernet); - Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } /// /// Test. @@ -2828,15 +2828,15 @@ public void TestTrySupernet10() [TestMethod] public void TestTrySupernet11() { - IPNetwork2[] network3 = null; - IPNetwork2[] supernetExpected = { IPNetwork2.Parse("2001:db8::/64") }; - IPNetwork2[] supernet; - bool parsed = false; - bool result = IPNetwork2.TrySupernet(network3, out supernet); + IPNetwork2[] network3 = null; + IPNetwork2[] supernetExpected = { IPNetwork2.Parse("2001:db8::/64") }; + IPNetwork2[] supernet; + bool parsed = false; + bool result = IPNetwork2.TrySupernet(network3, out supernet); - Assert.AreEqual(null, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + Assert.AreEqual(null, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } #endregion @@ -2848,12 +2848,12 @@ public void TestTrySupernet11() [TestMethod] public void TestTryGuessCidrNull() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr(null, out cidr); + byte cidr; + bool parsed = IPNetwork2.TryGuessCidr(null, out cidr); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(0, cidr, "cidr"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(0, cidr, "cidr"); + } /// /// Test. @@ -2861,12 +2861,12 @@ public void TestTryGuessCidrNull() [TestMethod] public void TestTryGuessCidr1() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("::", out cidr); + byte cidr; + bool parsed = IPNetwork2.TryGuessCidr("::", out cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(64, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(64, cidr, "cidr"); + } /// /// Test. @@ -2874,12 +2874,12 @@ public void TestTryGuessCidr1() [TestMethod] public void TestTryGuessCidr2() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("2001:0db8::", out cidr); + byte cidr; + bool parsed = IPNetwork2.TryGuessCidr("2001:0db8::", out cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(64, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(64, cidr, "cidr"); + } #endregion @@ -2891,10 +2891,10 @@ public void TestTryGuessCidr2() [TestMethod] public void Total32() { - var network = IPNetwork2.Parse("::/128"); - int total = 1; - Assert.AreEqual(total, network.Total, "Total"); - } + var network = IPNetwork2.Parse("::/128"); + int total = 1; + Assert.AreEqual(total, network.Total, "Total"); + } /// /// Test. @@ -2902,10 +2902,10 @@ public void Total32() [TestMethod] public void Total31() { - var network = IPNetwork2.Parse("::/127"); - int total = 2; - Assert.AreEqual(total, network.Total, "Total"); - } + var network = IPNetwork2.Parse("::/127"); + int total = 2; + Assert.AreEqual(total, network.Total, "Total"); + } /// /// Test. @@ -2913,10 +2913,10 @@ public void Total31() [TestMethod] public void Total30() { - var network = IPNetwork2.Parse("::/126"); - int total = 4; - Assert.AreEqual(total, network.Total, "Total"); - } + var network = IPNetwork2.Parse("::/126"); + int total = 4; + Assert.AreEqual(total, network.Total, "Total"); + } /// /// Test. @@ -2924,10 +2924,10 @@ public void Total30() [TestMethod] public void Total24() { - var network = IPNetwork2.Parse("::/120"); - int total = 256; - Assert.AreEqual(total, network.Total, "Total"); - } + var network = IPNetwork2.Parse("::/120"); + int total = 256; + Assert.AreEqual(total, network.Total, "Total"); + } /// /// Test. @@ -2935,10 +2935,10 @@ public void Total24() [TestMethod] public void Total16() { - var network = IPNetwork2.Parse("::/112"); - int total = 65536; - Assert.AreEqual(total, network.Total, "Total"); - } + var network = IPNetwork2.Parse("::/112"); + int total = 65536; + Assert.AreEqual(total, network.Total, "Total"); + } /// /// Test. @@ -2946,10 +2946,10 @@ public void Total16() [TestMethod] public void Total8() { - var network = IPNetwork2.Parse("::/104"); - int total = 16777216; - Assert.AreEqual(total, network.Total, "Total"); - } + var network = IPNetwork2.Parse("::/104"); + int total = 16777216; + Assert.AreEqual(total, network.Total, "Total"); + } /// /// Test. @@ -2957,10 +2957,10 @@ public void Total8() [TestMethod] public void Total0() { - var network = IPNetwork2.Parse("::/0"); - var total = BigInteger.Pow(2, 128); - Assert.AreEqual(total, network.Total, "Total"); - } + var network = IPNetwork2.Parse("::/0"); + var total = BigInteger.Pow(2, 128); + Assert.AreEqual(total, network.Total, "Total"); + } #endregion @@ -2972,10 +2972,10 @@ public void Total0() [TestMethod] public void Usable32() { - var network = IPNetwork2.Parse("::/128"); - uint usable = 1; - Assert.AreEqual(usable, network.Usable, "Usable"); - } + var network = IPNetwork2.Parse("::/128"); + uint usable = 1; + Assert.AreEqual(usable, network.Usable, "Usable"); + } /// /// Test. @@ -2983,10 +2983,10 @@ public void Usable32() [TestMethod] public void Usable31() { - var network = IPNetwork2.Parse("::/127"); - uint usable = 2; - Assert.AreEqual(usable, network.Usable, "Usable"); - } + var network = IPNetwork2.Parse("::/127"); + uint usable = 2; + Assert.AreEqual(usable, network.Usable, "Usable"); + } /// /// Test. @@ -2994,10 +2994,10 @@ public void Usable31() [TestMethod] public void Usable30() { - var network = IPNetwork2.Parse("::/126"); - uint usable = 4; - Assert.AreEqual(usable, network.Usable, "Usable"); - } + var network = IPNetwork2.Parse("::/126"); + uint usable = 4; + Assert.AreEqual(usable, network.Usable, "Usable"); + } /// /// Test. @@ -3005,10 +3005,10 @@ public void Usable30() [TestMethod] public void Usable24() { - var network = IPNetwork2.Parse("::/120"); - uint usable = 256; - Assert.AreEqual(usable, network.Usable, "Usable"); - } + var network = IPNetwork2.Parse("::/120"); + uint usable = 256; + Assert.AreEqual(usable, network.Usable, "Usable"); + } /// /// Test. @@ -3016,10 +3016,10 @@ public void Usable24() [TestMethod] public void Usable16() { - var network = IPNetwork2.Parse("::/112"); - uint usable = 65536; - Assert.AreEqual(usable, network.Usable, "Usable"); - } + var network = IPNetwork2.Parse("::/112"); + uint usable = 65536; + Assert.AreEqual(usable, network.Usable, "Usable"); + } /// /// Test. @@ -3027,10 +3027,10 @@ public void Usable16() [TestMethod] public void Usable8() { - var network = IPNetwork2.Parse("::/104"); - uint usable = 16777216; - Assert.AreEqual(usable, network.Usable, "Usable"); - } + var network = IPNetwork2.Parse("::/104"); + uint usable = 16777216; + Assert.AreEqual(usable, network.Usable, "Usable"); + } /// /// Test. @@ -3038,10 +3038,10 @@ public void Usable8() [TestMethod] public void Usable0() { - var network = IPNetwork2.Parse("::/0"); - var usable = BigInteger.Pow(2, 128); - Assert.AreEqual(usable, network.Usable, "Usable"); - } + var network = IPNetwork2.Parse("::/0"); + var usable = BigInteger.Pow(2, 128); + Assert.AreEqual(usable, network.Usable, "Usable"); + } #endregion @@ -3053,14 +3053,14 @@ public void Usable0() [TestMethod] public void TryParseCidr1() { - string sidr = "0"; - byte? cidr; - byte? result = 0; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + string sidr = "0"; + byte? cidr; + byte? result = 0; + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(result, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(result, cidr, "cidr"); + } /// /// Test. @@ -3068,15 +3068,15 @@ public void TryParseCidr1() [TestMethod] public void TryParseCidr2() { - string sidr = "sadsd"; - byte? cidr; - byte? result = null; + string sidr = "sadsd"; + byte? cidr; + byte? result = null; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(result, cidr, "cidr"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(result, cidr, "cidr"); + } /// /// Test. @@ -3084,15 +3084,15 @@ public void TryParseCidr2() [TestMethod] public void TryParseCidr33() { - string sidr = "33"; - byte? cidr; - byte result = 33; + string sidr = "33"; + byte? cidr; + byte result = 33; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(result, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(result, cidr, "cidr"); + } /// /// Test. @@ -3100,15 +3100,15 @@ public void TryParseCidr33() [TestMethod] public void TryParseCidr128() { - string sidr = "128"; - byte? cidr; - byte result = 128; + string sidr = "128"; + byte? cidr; + byte result = 128; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(result, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(result, cidr, "cidr"); + } /// /// Test. @@ -3116,15 +3116,15 @@ public void TryParseCidr128() [TestMethod] public void TryParseCidr129() { - string sidr = "129"; - byte? cidr; - byte? result = null; + string sidr = "129"; + byte? cidr; + byte? result = null; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(result, cidr, "cidr"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(result, cidr, "cidr"); + } #endregion } \ No newline at end of file diff --git a/src/TestProject/SerializeDataContractTest.cs b/src/TestProject/SerializeDataContractTest.cs index 04103a76..5c267173 100644 --- a/src/TestProject/SerializeDataContractTest.cs +++ b/src/TestProject/SerializeDataContractTest.cs @@ -16,27 +16,27 @@ public class SerializeDataContractTest [TestMethod] public void Test_Serialize_DataContract() { - var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); - - string result = DataContractSerializeHelper.Serialize(ipnetwork); - string expected = - $"{Environment.NewLine} 10.0.0.0/8{Environment.NewLine}"; - Assert.AreEqual(expected, result); - } + var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); + string result = DataContractSerializeHelper.Serialize(ipnetwork); + string expected = + $"{Environment.NewLine} 10.0.0.0/8{Environment.NewLine}"; + Assert.AreEqual(expected, result); + } + /// /// Test Deserilaization. /// [TestMethod] public void Test_Deserialize_DataContract() { - var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); - string serialized = DataContractSerializeHelper.Serialize(ipnetwork); + var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); + string serialized = DataContractSerializeHelper.Serialize(ipnetwork); - IPNetwork2 result = DataContractSerializeHelper.Deserialize(serialized); + IPNetwork2 result = DataContractSerializeHelper.Deserialize(serialized); - Assert.AreEqual(ipnetwork, result); - } + Assert.AreEqual(ipnetwork, result); + } /// /// Test empty constructor. @@ -44,7 +44,7 @@ public void Test_Deserialize_DataContract() [TestMethod] public void Test_Empty_Constructor() { - var ipnetwork = new IPNetwork2(); - Assert.AreEqual("0.0.0.0/0", ipnetwork.ToString()); - } + var ipnetwork = new IPNetwork2(); + Assert.AreEqual("0.0.0.0/0", ipnetwork.ToString()); + } } \ No newline at end of file From 1bad7f513264c4d71d283aee420a9bcfbcf8c5fb Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sat, 29 Mar 2025 21:49:49 +0100 Subject: [PATCH 15/25] Fix: documentation and warnings --- src/System.Net.IPNetwork/CidrGuess.cs | 8 +- src/System.Net.IPNetwork/ICidrGuess.cs | 4 +- .../IPAddressCollection.cs | 154 +- src/System.Net.IPNetwork/IPNetwork2.cs | 262 +- .../IPNetworkCollection.cs | 54 +- .../IPNetworkTest/IPNetworkResizeTests.cs | 2 +- .../IPNetworkTest/IPNetworkSupernetTests.cs | 163 +- src/TestProject/IPNetworkV6UnitTest.cs | 3064 ++++++++--------- src/TestProject/SerializeDataContractTest.cs | 30 +- 9 files changed, 1885 insertions(+), 1856 deletions(-) diff --git a/src/System.Net.IPNetwork/CidrGuess.cs b/src/System.Net.IPNetwork/CidrGuess.cs index f1c86888..a2a47b2d 100644 --- a/src/System.Net.IPNetwork/CidrGuess.cs +++ b/src/System.Net.IPNetwork/CidrGuess.cs @@ -12,13 +12,13 @@ public static class CidrGuess /// /// Gets classFull guess. /// - public static ICidrGuess ClassFull { get => _cidr_classfull.Value; } + public static ICidrGuess ClassFull { get => CidrClassfull.Value; } /// /// Gets classLess guess. /// - public static ICidrGuess ClassLess { get => _cidr_classless.Value; } + public static ICidrGuess ClassLess { get => CidrClassless.Value; } - private static readonly Lazy _cidr_classless = new(() => new CidrClassLess()); - private static readonly Lazy _cidr_classfull = new(() => new CidrClassFull()); + private static readonly Lazy CidrClassless = new (() => new CidrClassLess()); + private static readonly Lazy CidrClassfull = new (() => new CidrClassFull()); } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/ICidrGuess.cs b/src/System.Net.IPNetwork/ICidrGuess.cs index 2b061c2f..78d6b146 100644 --- a/src/System.Net.IPNetwork/ICidrGuess.cs +++ b/src/System.Net.IPNetwork/ICidrGuess.cs @@ -5,12 +5,12 @@ namespace System.Net; /// -/// +/// An interface to have multiple implemntatino ao CIDR Guesser. /// public interface ICidrGuess { /// - /// + /// Try to guess the CIDR. /// /// An ip adress to guess the ip network CIDR. /// A byte representing the netmask in cidr format (/24). diff --git a/src/System.Net.IPNetwork/IPAddressCollection.cs b/src/System.Net.IPNetwork/IPAddressCollection.cs index db1598fd..ef26e041 100644 --- a/src/System.Net.IPNetwork/IPAddressCollection.cs +++ b/src/System.Net.IPNetwork/IPAddressCollection.cs @@ -17,6 +17,7 @@ public enum FilterEnum /// Every IPAdresses are returned /// All, + /// /// Returns only usable IPAdresses /// @@ -28,16 +29,21 @@ public enum FilterEnum /// public class IPAddressCollection : IEnumerable, IEnumerator { - private readonly IPNetwork2 _ipnetwork; - private readonly FilterEnum _filter; - private BigInteger _enumerator; + private readonly IPNetwork2 ipnetwork; + private readonly FilterEnum filter; + private BigInteger enumerator; + /// + /// Initializes a new instance of the class. + /// + /// The network. + /// The filter. internal IPAddressCollection(IPNetwork2 ipnetwork, FilterEnum filter) { - this._ipnetwork = ipnetwork; - this._filter = filter; - this.Reset(); - } + this.ipnetwork = ipnetwork; + this.filter = filter; + this.Reset(); + } #region Count, Array, Enumerator @@ -51,19 +57,19 @@ public BigInteger Count { get { - BigInteger count = this._ipnetwork.Total; - if (this._filter == FilterEnum.Usable) - { - count -= 2; - } - - if (count < 0) - { - count = 0; - } - - return count; + BigInteger count = this.ipnetwork.Total; + if (this.filter == FilterEnum.Usable) + { + count -= 2; } + + if (count < 0) + { + count = 0; + } + + return count; + } } /// @@ -76,22 +82,22 @@ public IPAddress this[BigInteger i] { get { - if (i >= this.Count) - { - throw new ArgumentOutOfRangeException("i"); - } - - byte width = this._ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetwork ? (byte)32 : (byte)128; - IPNetworkCollection ipn = this._ipnetwork.Subnet(width); + if (i >= this.Count) + { + throw new ArgumentOutOfRangeException("i"); + } - BigInteger index = i; - if (this._filter == FilterEnum.Usable) - { - index++; - } + byte width = this.ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetwork ? (byte)32 : (byte)128; + IPNetworkCollection ipn = this.ipnetwork.Subnet(width); - return ipn[index].Network; + BigInteger index = i; + if (this.filter == FilterEnum.Usable) + { + index++; } + + return ipn[index].Network; + } } #endregion @@ -106,101 +112,107 @@ public IPAddress Current { get { - return this[this._enumerator]; - } + return this[this.enumerator]; + } } + /// object IEnumerator.Current { get { - return this.Current; - } + return this.Current; + } } /// public bool MoveNext() { - this._enumerator++; - if (this._enumerator >= this.Count) - { - return false; - } - - return true; + this.enumerator++; + if (this.enumerator >= this.Count) + { + return false; } + return true; + } + /// public void Reset() { - this._enumerator = -1; - } + this.enumerator = -1; + } /// public void Dispose() { - // nothing to dispose - } + // nothing to dispose + } + #endregion #region Enumeration + + /// IEnumerator IEnumerable.GetEnumerator() { - return new Enumerator(this); - } + return new Enumerator(this); + } + /// IEnumerator IEnumerable.GetEnumerator() { - return new Enumerator(this); - } + return new Enumerator(this); + } private struct Enumerator : IEnumerator { - private readonly IPAddressCollection _collection; - private BigInteger _enumerator; + private readonly IPAddressCollection collection; + private BigInteger enumerator; object IEnumerator.Current { get { - return this.Current; - } + return this.Current; + } } public IPAddress Current { get { - return this._collection[this._enumerator]; - } + return this.collection[this.enumerator]; + } } public void Dispose() { - // nothing to dispose - } + // nothing to dispose + } public bool MoveNext() { - this._enumerator++; - if (this._enumerator >= this._collection.Count) - { - return false; - } - - return true; + this.enumerator++; + if (this.enumerator >= this.collection.Count) + { + return false; } + return true; + } + public void Reset() { - this._enumerator = -1; - } + this.enumerator = -1; + } public Enumerator(IPAddressCollection collection) { - this._collection = collection; - this._enumerator = -1; - } + this.collection = collection; + this.enumerator = -1; + } } + #endregion } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2.cs b/src/System.Net.IPNetwork/IPNetwork2.cs index 197d010a..4272ed84 100644 --- a/src/System.Net.IPNetwork/IPNetwork2.cs +++ b/src/System.Net.IPNetwork/IPNetwork2.cs @@ -21,13 +21,13 @@ public sealed class IPNetwork2 : IComparable, ISerializable { #region properties - private readonly object _sync = new(); - private readonly int _hashCode; - private BigInteger _ipaddress; - private byte _cidr; - private BigInteger? _cachedBroadcast; + private readonly object sync = new (); + private readonly int hashCode; + private BigInteger ipaddress; + private byte cidr; + private BigInteger? cachedBroadcast; - private AddressFamily _family; + private AddressFamily family; /// /// Gets or sets the value of the IPNetwork property. @@ -43,12 +43,12 @@ public string Value set { var ipnetwork = IPNetwork2.Parse(value); - this._ipaddress = ipnetwork._ipaddress; - this._family = ipnetwork._family; - this._cidr = ipnetwork._cidr; - lock (_sync) + this.ipaddress = ipnetwork.ipaddress; + this.family = ipnetwork.family; + this.cidr = ipnetwork.cidr; + lock (this.sync) { - this._cachedBroadcast = null; + this.cachedBroadcast = null; } } } @@ -56,15 +56,15 @@ public string Value #endregion #region accessors - + /// /// Gets the network address calculated by applying the subnet mask to the IP address. /// - internal BigInteger _network + internal BigInteger InternalNetwork { get { - BigInteger uintNetwork = this._ipaddress & this._netmask; + BigInteger uintNetwork = this.ipaddress & this.InternalNetmask; return uintNetwork; } } @@ -76,7 +76,7 @@ public IPAddress Network { get { - return IPNetwork2.ToIPAddress(this._network, this._family); + return IPNetwork2.ToIPAddress(this.InternalNetwork, this.family); } } @@ -87,18 +87,18 @@ public AddressFamily AddressFamily { get { - return this._family; + return this.family; } } /// /// Gets the netmask as a BigInteger representation based on the CIDR and address family. /// - internal BigInteger _netmask + internal BigInteger InternalNetmask { get { - return IPNetwork2.ToUint(this._cidr, this._family); + return IPNetwork2.ToUint(this.cidr, this.family); } } @@ -109,34 +109,34 @@ public IPAddress Netmask { get { - return IPNetwork2.ToIPAddress(this._netmask, this._family); + return IPNetwork2.ToIPAddress(this.InternalNetmask, this.family); } } /// /// Gets the broadcast address calculated from the network address and the netmask. /// - internal BigInteger _broadcast + internal BigInteger InternalBroadcast { get { - var cached = this._cachedBroadcast; + var cached = this.cachedBroadcast; if (cached != null) { return cached.Value; } - lock (_sync) + lock (this.sync) { - var cached2 = this._cachedBroadcast; + var cached2 = this.cachedBroadcast; if (cached2 != null) { return cached2.Value; } - var network = this._network; - var computed = CreateBroadcast(ref network, this._netmask, this._family); - this._cachedBroadcast = computed; + var network = this.InternalNetwork; + var computed = CreateBroadcast(ref network, this.InternalNetmask, this.family); + this.cachedBroadcast = computed; return computed; } } @@ -149,12 +149,12 @@ public IPAddress Broadcast { get { - if (this._family == Sockets.AddressFamily.InterNetworkV6) + if (this.family == Sockets.AddressFamily.InterNetworkV6) { return null; } - return IPNetwork2.ToIPAddress(this._broadcast, this._family); + return IPNetwork2.ToIPAddress(this.InternalBroadcast, this.family); } } @@ -165,10 +165,12 @@ public IPAddress FirstUsable { get { - BigInteger first = this._family == Sockets.AddressFamily.InterNetworkV6 - ? this._network - : (this.Usable <= 0) ? this._network : this._network + 1; - return IPNetwork2.ToIPAddress(first, this._family); + BigInteger first = this.family == Sockets.AddressFamily.InterNetworkV6 + ? this.InternalNetwork + : (this.Usable <= 0) + ? this.InternalNetwork + : this.InternalNetwork + 1; + return IPNetwork2.ToIPAddress(first, this.family); } } @@ -179,10 +181,12 @@ public IPAddress LastUsable { get { - BigInteger last = this._family == Sockets.AddressFamily.InterNetworkV6 - ? this._broadcast - : (this.Usable <= 0) ? this._network : this._broadcast - 1; - return IPNetwork2.ToIPAddress(last, this._family); + BigInteger last = this.family == Sockets.AddressFamily.InterNetworkV6 + ? this.InternalBroadcast + : (this.Usable <= 0) + ? this.InternalNetwork + : this.InternalBroadcast - 1; + return IPNetwork2.ToIPAddress(last, this.family); } } @@ -193,14 +197,14 @@ public BigInteger Usable { get { - if (this._family == Sockets.AddressFamily.InterNetworkV6) + if (this.family == Sockets.AddressFamily.InterNetworkV6) { return this.Total; } byte[] mask = new byte[] { 0xff, 0xff, 0xff, 0xff, 0x00 }; var bmask = new BigInteger(mask); - BigInteger usableIps = (this._cidr > 30) ? 0 : ((bmask >> this._cidr) - 1); + BigInteger usableIps = (this.cidr > 30) ? 0 : ((bmask >> this.cidr) - 1); return usableIps; } } @@ -212,8 +216,8 @@ public BigInteger Total { get { - int max = this._family == Sockets.AddressFamily.InterNetwork ? 32 : 128; - var count = BigInteger.Pow(2, max - this._cidr); + int max = this.family == Sockets.AddressFamily.InterNetwork ? 32 : 128; + var count = BigInteger.Pow(2, max - this.cidr); return count; } } @@ -225,7 +229,7 @@ public byte Cidr { get { - return this._cidr; + return this.cidr; } } @@ -240,14 +244,14 @@ public byte Cidr /// The address family of the network. /// The CIDR (Classless Inter-Domain Routing) notation of the network. #if TRAVISCI - public + public #else - internal + internal #endif IPNetwork2(BigInteger ipaddress, AddressFamily family, byte cidr) { this.Init(ipaddress, family, cidr); - this._hashCode = this.ComputeHashCode(); + this.hashCode = this.ComputeHashCode(); } /// @@ -267,7 +271,7 @@ public IPNetwork2(IPAddress ipaddress, byte cidr) BigInteger uintIpAddress = ToBigInteger(ipaddress); this.Init(uintIpAddress, ipaddress.AddressFamily, cidr); - this._hashCode = this.ComputeHashCode(); + this.hashCode = this.ComputeHashCode(); } private void Init(BigInteger ipaddress, AddressFamily family, byte cidr) @@ -278,9 +282,9 @@ private void Init(BigInteger ipaddress, AddressFamily family, byte cidr) throw new ArgumentOutOfRangeException("cidr"); } - this._ipaddress = ipaddress; - this._family = family; - this._cidr = cidr; + this.ipaddress = ipaddress; + this.family = family; + this.cidr = cidr; } #endregion @@ -697,11 +701,11 @@ private static void InternalParse(bool tryParse, string network, ICidrGuess cidr { throw new ArgumentNullException("network"); } - + ipnetwork = null; return; } - + if (args.Length == 1) { string cidrlessNetwork = args[0]; @@ -842,6 +846,7 @@ private static void InternalParse(bool tryParse, string ipaddress, byte cidr, ou IPNetwork2.InternalParse(tryParse, ip, mask, out ipnetwork); } + #endregion #region converters @@ -898,29 +903,29 @@ internal static void InternalToBigInteger(bool tryParse, IPAddress ipaddress, ou return; } -#if NET5_0 || NETSTANDARD2_1 - byte[] bytes = ipaddress.AddressFamily == AddressFamily.InterNetwork ? new byte[4] : new byte[16]; - Span span = bytes.AsSpan(); - if (!ipaddress.TryWriteBytes(span, out _)) +#if NETSTANDARD2_1 + byte[] bytes = ipaddress.AddressFamily == AddressFamily.InterNetwork ? new byte[4] : new byte[16]; + Span span = bytes.AsSpan(); + if (!ipaddress.TryWriteBytes(span, out _)) + { + if (tryParse == false) { - if (tryParse == false) - { - throw new ArgumentException("ipaddress"); - } - - uintIpAddress = null; - return; + throw new ArgumentException("ipaddress"); } - uintIpAddress = new BigInteger(span, isUnsigned: true, isBigEndian: true); -#elif NET45 || NET46 || NET47 || NETSTANDARD20 - byte[] bytes = ipaddress.GetAddressBytes(); - bytes.AsSpan().Reverse(); + uintIpAddress = null; + return; + } + + uintIpAddress = new BigInteger(span, isUnsigned: true, isBigEndian: true); +#elif NETSTANDARD20 + byte[] bytes = ipaddress.GetAddressBytes(); + bytes.AsSpan().Reverse(); - // add trailing 0 to make unsigned - byte[] unsigned = new byte[bytes.Length + 1]; - Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); - uintIpAddress = new BigInteger(unsigned); + // add trailing 0 to make unsigned + byte[] unsigned = new byte[bytes.Length + 1]; + Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); + uintIpAddress = new BigInteger(unsigned); #else byte[] bytes = ipaddress.GetAddressBytes(); Array.Reverse(bytes); @@ -968,7 +973,7 @@ public static bool TryToUint(byte cidr, AddressFamily family, out BigInteger? ui /// A byte representing the netmask in cidr format (/24). /// Either IPv4 or IPv6. /// A number representing the netmask. -internal static void InternalToBigInteger(bool tryParse, byte cidr, AddressFamily family, out BigInteger? uintNetmask) + internal static void InternalToBigInteger(bool tryParse, byte cidr, AddressFamily family, out BigInteger? uintNetmask) { if (family == AddressFamily.InterNetwork && cidr > 32) { @@ -1233,6 +1238,7 @@ private static byte BitsSet(BigInteger netmask, AddressFamily family) /// /// A number representing the netmask to count bits from. /// The number of bytes set to 1. + [CLSCompliant(false)] public static uint BitsSet(IPAddress netmask) { var uintNetmask = IPNetwork2.ToBigInteger(netmask); @@ -1373,8 +1379,8 @@ public bool Contains(IPAddress contains) return false; } - BigInteger uintNetwork = this._network; - BigInteger uintBroadcast = this._broadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); + BigInteger uintNetwork = this.InternalNetwork; + BigInteger uintBroadcast = this.InternalBroadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); var uintAddress = IPNetwork2.ToBigInteger(contains); bool result = uintAddress >= uintNetwork @@ -1414,11 +1420,12 @@ public bool Contains(IPNetwork2 contains) throw new ArgumentNullException("contains"); } - BigInteger uintNetwork = this._network; - BigInteger uintBroadcast = this._broadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); + BigInteger uintNetwork = this.InternalNetwork; + BigInteger uintBroadcast = this.InternalBroadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); - BigInteger uintFirst = contains._network; - BigInteger uintLast = contains._broadcast; // CreateBroadcast(ref uintFirst, network2._netmask, network2._family); + BigInteger uintFirst = contains.InternalNetwork; + BigInteger + uintLast = contains.InternalBroadcast; // CreateBroadcast(ref uintFirst, network2._netmask, network2._family); bool result = uintFirst >= uintNetwork && uintLast <= uintBroadcast; @@ -1469,11 +1476,11 @@ public bool Overlap(IPNetwork2 network2) throw new ArgumentNullException("network2"); } - BigInteger uintNetwork = this._network; - BigInteger uintBroadcast = this._broadcast; + BigInteger uintNetwork = this.InternalNetwork; + BigInteger uintBroadcast = this.InternalBroadcast; - BigInteger uintFirst = network2._network; - BigInteger uintLast = network2._broadcast; + BigInteger uintFirst = network2.InternalNetwork; + BigInteger uintLast = network2.InternalBroadcast; bool overlap = (uintFirst >= uintNetwork && uintFirst <= uintBroadcast) @@ -1520,9 +1527,9 @@ public override string ToString() #region IANA block - private static readonly Lazy _iana_ablock_reserved = new(() => IPNetwork2.Parse("10.0.0.0/8")); - private static readonly Lazy _iana_bblock_reserved = new(() => IPNetwork2.Parse("172.16.0.0/12")); - private static readonly Lazy _iana_cblock_reserved = new(() => IPNetwork2.Parse("192.168.0.0/16")); + private static readonly Lazy IanaAblockReserved = new (() => IPNetwork2.Parse("10.0.0.0/8")); + private static readonly Lazy IanaBblockReserved = new (() => IPNetwork2.Parse("172.16.0.0/12")); + private static readonly Lazy IanaCblockReserved = new (() => IPNetwork2.Parse("192.168.0.0/16")); /// /// Gets 10.0.0.0/8. @@ -1532,7 +1539,7 @@ public static IPNetwork2 IANA_ABLK_RESERVED1 { get { - return _iana_ablock_reserved.Value; + return IanaAblockReserved.Value; } } @@ -1544,7 +1551,7 @@ public static IPNetwork2 IANA_BBLK_RESERVED1 { get { - return _iana_bblock_reserved.Value; + return IanaBblockReserved.Value; } } @@ -1556,7 +1563,7 @@ public static IPNetwork2 IANA_CBLK_RESERVED1 { get { - return _iana_cblock_reserved.Value; + return IanaCblockReserved.Value; } } @@ -1679,7 +1686,7 @@ public bool TrySubnet(byte cidr, out IPNetworkCollection ipnetworkCollection) /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. /// - /// + /// The network. /// A byte representing the CIDR to be used to subnet the current IPNetwork. /// The resulting subnetted IPNetwork. /// true if network was split successfully; otherwise, false. @@ -1714,7 +1721,7 @@ internal static void InternalSubnet(bool trySubnet, IPNetwork2 network, byte cid return; } - int maxCidr = network._family == Sockets.AddressFamily.InterNetwork ? 32 : 128; + int maxCidr = network.family == Sockets.AddressFamily.InterNetwork ? 32 : 128; if (cidr > maxCidr) { if (trySubnet == false) @@ -1765,7 +1772,7 @@ public IPNetwork2 Supernet(IPNetwork2 network2) /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. /// - /// + /// the network. /// The network to supernet with. /// A supernetted IP Network. [Obsolete("static Supernet is deprecated, please use instance Supernet.")] @@ -1797,7 +1804,7 @@ public bool TrySupernet(IPNetwork2 network2, out IPNetwork2 supernet) /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. /// - /// + /// the network. /// The network to supernet with. /// The resulting IPNetwork. /// true if network2 was supernetted successfully; otherwise, false. @@ -1819,7 +1826,11 @@ public static bool TrySupernet(IPNetwork2 network, IPNetwork2 network2, out IPNe /// The first IP network. /// The second IP network. /// The resulting supernet if the merge is successful; otherwise, null. - internal static void InternalSupernet(bool trySupernet, IPNetwork2 network1, IPNetwork2 network2, out IPNetwork2 supernet) + internal static void InternalSupernet( + bool trySupernet, + IPNetwork2 network1, + IPNetwork2 network2, + out IPNetwork2 supernet) { if (network1 == null) { @@ -1845,17 +1856,17 @@ internal static void InternalSupernet(bool trySupernet, IPNetwork2 network1, IPN if (network1.Contains(network2)) { - supernet = new IPNetwork2(network1._network, network1._family, network1.Cidr); + supernet = new IPNetwork2(network1.InternalNetwork, network1.family, network1.Cidr); return; } if (network2.Contains(network1)) { - supernet = new IPNetwork2(network2._network, network2._family, network2.Cidr); + supernet = new IPNetwork2(network2.InternalNetwork, network2.family, network2.Cidr); return; } - if (network1._cidr != network2._cidr) + if (network1.cidr != network2.cidr) { if (trySupernet == false) { @@ -1866,8 +1877,8 @@ internal static void InternalSupernet(bool trySupernet, IPNetwork2 network1, IPN return; } - IPNetwork2 first = (network1._network < network2._network) ? network1 : network2; - IPNetwork2 last = (network1._network > network2._network) ? network1 : network2; + IPNetwork2 first = (network1.InternalNetwork < network2.InternalNetwork) ? network1 : network2; + IPNetwork2 last = (network1.InternalNetwork > network2.InternalNetwork) ? network1 : network2; // Starting from here : // network1 and network2 have the same cidr, @@ -1875,7 +1886,7 @@ internal static void InternalSupernet(bool trySupernet, IPNetwork2 network1, IPN // network2 does not contain network1, // first is the lower subnet // last is the higher subnet - if ((first._broadcast + 1) != last._network) + if ((first.InternalBroadcast + 1) != last.InternalNetwork) { if (trySupernet == false) { @@ -1886,11 +1897,11 @@ internal static void InternalSupernet(bool trySupernet, IPNetwork2 network1, IPN return; } - BigInteger uintSupernet = first._network; - byte cidrSupernet = (byte)(first._cidr - 1); + BigInteger uintSupernet = first.InternalNetwork; + byte cidrSupernet = (byte)(first.cidr - 1); - var networkSupernet = new IPNetwork2(uintSupernet, first._family, cidrSupernet); - if (networkSupernet._network != first._network) + var networkSupernet = new IPNetwork2(uintSupernet, first.family, cidrSupernet); + if (networkSupernet.InternalNetwork != first.InternalNetwork) { if (trySupernet == false) { @@ -1912,7 +1923,7 @@ internal static void InternalSupernet(bool trySupernet, IPNetwork2 network1, IPN /// public override int GetHashCode() { - return this._hashCode; + return this.hashCode; } /// @@ -1924,9 +1935,9 @@ private int ComputeHashCode() { return string.Format( "{0}|{1}|{2}", - this._family.GetHashCode(), - this._network.GetHashCode(), - this._cidr.GetHashCode()).GetHashCode(); + this.family.GetHashCode(), + this.InternalNetwork.GetHashCode(), + this.cidr.GetHashCode()).GetHashCode(); } #endregion @@ -2045,10 +2056,10 @@ private static List Array2List(IPNetwork2[] array) ipns.Sort(new Comparison( delegate(IPNetwork2 ipn1, IPNetwork2 ipn2) { - int networkCompare = ipn1._network.CompareTo(ipn2._network); + int networkCompare = ipn1.InternalNetwork.CompareTo(ipn2.InternalNetwork); if (networkCompare == 0) { - int cidrCompare = ipn1._cidr.CompareTo(ipn2._cidr); + int cidrCompare = ipn1.cidr.CompareTo(ipn2.cidr); return cidrCompare; } @@ -2201,22 +2212,22 @@ internal static void InternalWideSubnet(bool tryWide, IPNetwork2[] ipnetworks, o Array.Sort(nnin); IPNetwork2 nnin0 = nnin[0]; - BigInteger uintNnin0 = nnin0._ipaddress; + BigInteger uintNnin0 = nnin0.ipaddress; IPNetwork2 nninX = nnin[nnin.Length - 1]; IPAddress ipaddressX = nninX.Broadcast; - AddressFamily family = ipnetworks[0]._family; + AddressFamily family = ipnetworks[0].family; foreach (IPNetwork2 ipnx in ipnetworks) { - if (ipnx._family != family) + if (ipnx.family != family) { throw new ArgumentException("MixedAddressFamily"); } } var ipn = new IPNetwork2(0, family, 0); - for (byte cidr = nnin0._cidr; cidr >= 0; cidr--) + for (byte cidr = nnin0.cidr; cidr >= 0; cidr--) { var wideSubnet = new IPNetwork2(uintNnin0, family, cidr); if (wideSubnet.Contains(ipaddressX)) @@ -2258,7 +2269,9 @@ public string Print() /// /// Print an ipnetwork in a clear representation string. /// + /// The ipnetwork. /// Dump an IPNetwork representation as string. + /// When arg is null. [Obsolete("static Print is deprecated, please use instance Print.")] public static string Print(IPNetwork2 ipnetwork) { @@ -2377,21 +2390,21 @@ public static int Compare(IPNetwork2 left, IPNetwork2 right) } // first test family - int result = left._family.CompareTo(right._family); + int result = left.family.CompareTo(right.family); if (result != 0) { return result; } // second test the network - result = left._network.CompareTo(right._network); + result = left.InternalNetwork.CompareTo(right.InternalNetwork); if (result != 0) { return result; } // then test the cidr - result = left._cidr.CompareTo(right._cidr); + result = left.cidr.CompareTo(right.cidr); return result; } @@ -2532,7 +2545,7 @@ public IPNetwork2() #endregion #region ISerializable - + /// /// Represents an internal structure to hold an IP address, its CIDR value, and address family. /// Used for internal operations within the IPNetwork2 class. @@ -2543,12 +2556,12 @@ internal struct IPNetworkInteral /// Represents the IP address value. /// public BigInteger IPAddress; - + /// /// Represents the CIDR (Classless Inter-Domain Routing) value. /// public byte Cidr; - + /// /// Represents the address family (IPv4 or IPv6). /// @@ -2560,9 +2573,9 @@ private IPNetwork2(SerializationInfo info, StreamingContext context) string sipnetwork = (string)info.GetValue("IPNetwork", typeof(string)); var ipnetwork = IPNetwork2.Parse(sipnetwork); - this._ipaddress = ipnetwork._ipaddress; - this._cidr = ipnetwork._cidr; - this._family = ipnetwork._family; + this.ipaddress = ipnetwork.ipaddress; + this.cidr = ipnetwork.cidr; + this.family = ipnetwork.family; } /// @@ -2648,12 +2661,13 @@ public IPAddress WildcardMask { get { - byte cidr = this._family == AddressFamily.InterNetwork ? (byte)32 : (byte)128; - BigInteger netmask = IPNetwork2.ToUint(cidr, this._family); - BigInteger wildcardmask = netmask - this._netmask; + byte cidr = this.family == AddressFamily.InterNetwork ? (byte)32 : (byte)128; + BigInteger netmask = IPNetwork2.ToUint(cidr, this.family); + BigInteger wildcardmask = netmask - this.InternalNetmask; - return IPNetwork2.ToIPAddress(wildcardmask, this._family); + return IPNetwork2.ToIPAddress(wildcardmask, this.family); } } + #endregion } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetworkCollection.cs b/src/System.Net.IPNetwork/IPNetworkCollection.cs index 1985a0a7..3c4e1168 100644 --- a/src/System.Net.IPNetwork/IPNetworkCollection.cs +++ b/src/System.Net.IPNetwork/IPNetworkCollection.cs @@ -13,28 +13,28 @@ namespace System.Net; /// public class IPNetworkCollection : IEnumerable, IEnumerator { - private BigInteger _enumerator; - private byte _cidrSubnet; - private IPNetwork2 _ipnetwork; + private readonly byte cidrSubnet; + private readonly IPNetwork2 ipnetwork; + private BigInteger enumerator; - private byte _cidr + private byte Cidr { - get { return this._ipnetwork.Cidr; } + get { return this.ipnetwork.Cidr; } } - private BigInteger _broadcast + private BigInteger Broadcast { - get { return IPNetwork2.ToBigInteger(this._ipnetwork.Broadcast); } + get { return IPNetwork2.ToBigInteger(this.ipnetwork.Broadcast); } } - private BigInteger _lastUsable + private BigInteger LastUsable { - get { return IPNetwork2.ToBigInteger(this._ipnetwork.LastUsable); } + get { return IPNetwork2.ToBigInteger(this.ipnetwork.LastUsable); } } - private BigInteger _network + private BigInteger Network { - get { return IPNetwork2.ToBigInteger(this._ipnetwork.Network); } + get { return IPNetwork2.ToBigInteger(this.ipnetwork.Network); } } /// @@ -45,6 +45,10 @@ private BigInteger _network /// This class is used to generate a collection of IP networks by dividing the given parent IP network into subnets based on the provided subnet CIDR (Classless Inter-Domain Routing /// ) value. /// + /// The network. + /// The subnet. + /// Cidr is out of range. + /// Network is invalid. #if TRAVISCI public #else @@ -63,9 +67,9 @@ private BigInteger _network throw new ArgumentException("cidrSubnet"); } - this._cidrSubnet = cidrSubnet; - this._ipnetwork = ipnetwork; - this._enumerator = -1; + this.cidrSubnet = cidrSubnet; + this.ipnetwork = ipnetwork; + this.enumerator = -1; } #region Count, Array, Enumerator @@ -77,7 +81,7 @@ public BigInteger Count { get { - var count = BigInteger.Pow(2, this._cidrSubnet - this._cidr); + var count = BigInteger.Pow(2, this.cidrSubnet - this.Cidr); return count; } } @@ -99,12 +103,12 @@ public IPNetwork2 this[BigInteger i] throw new ArgumentOutOfRangeException("i"); } - BigInteger last = this._ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetworkV6 - ? this._lastUsable - : this._broadcast; - BigInteger increment = (last - this._network) / this.Count; - BigInteger uintNetwork = this._network + ((increment + 1) * i); - var ipn = new IPNetwork2(uintNetwork, this._ipnetwork.AddressFamily, this._cidrSubnet); + BigInteger last = this.ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetworkV6 + ? this.LastUsable + : this.Broadcast; + BigInteger increment = (last - this.Network) / this.Count; + BigInteger uintNetwork = this.Network + ((increment + 1) * i); + var ipn = new IPNetwork2(uintNetwork, this.ipnetwork.AddressFamily, this.cidrSubnet); return ipn; } } @@ -130,7 +134,7 @@ IEnumerator IEnumerable.GetEnumerator() /// public IPNetwork2 Current { - get { return this[this._enumerator]; } + get { return this[this.enumerator]; } } #endregion @@ -172,8 +176,8 @@ object IEnumerator.Current /// public bool MoveNext() { - this._enumerator++; - if (this._enumerator >= this.Count) + this.enumerator++; + if (this.enumerator >= this.Count) { return false; } @@ -186,7 +190,7 @@ public bool MoveNext() /// public void Reset() { - this._enumerator = -1; + this.enumerator = -1; } #endregion diff --git a/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs b/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs index 2a07b873..0e7fadd2 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs @@ -11,7 +11,7 @@ namespace TestProject.IPNetworkTest; public class IPNetworkResizeTests { /// - /// Resize a too big ipnetowkr + /// Resize a too big network. /// [TestMethod] [ExpectedException(typeof(ArgumentException))] diff --git a/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs index b38b9f81..b35b19b4 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs @@ -29,10 +29,9 @@ public void TestSupernetInternal1() [ExpectedException(typeof(ArgumentNullException))] public void TestSupernetInternal2() { - IPNetwork2 result; - IPNetwork2.InternalSupernet(false, null, null, out result); - } - + IPNetwork2 result; + IPNetwork2.InternalSupernet(false, null, null, out result); + } /// /// Tests Supernet functionality with Issue33__TestSupernet__Bug_or_default_behavior. @@ -41,13 +40,13 @@ public void TestSupernetInternal2() [ExpectedException(typeof(ArgumentOutOfRangeException))] public void Issue33__TestSupernet__Bug_or_default_behavior() { - var network1 = IPNetwork2.Parse("192.168.0.0/24"); - var network2 = IPNetwork2.Parse("192.168.2.0/24"); - var expected = IPNetwork2.Parse("192.168.0.0/23"); - IPNetwork2 supernet = network1.Supernet(network2); + var network1 = IPNetwork2.Parse("192.168.0.0/24"); + var network2 = IPNetwork2.Parse("192.168.2.0/24"); + var expected = IPNetwork2.Parse("192.168.0.0/23"); + IPNetwork2 supernet = network1.Supernet(network2); - Assert.AreEqual(expected, supernet, "supernet"); - } + Assert.AreEqual(expected, supernet, "supernet"); + } /// /// Tests Supernet functionality. @@ -55,13 +54,13 @@ public void Issue33__TestSupernet__Bug_or_default_behavior() [TestMethod] public void Issue33__TestWideSubnet__Bug_or_default_behavior() { - var network1 = IPNetwork2.Parse("192.168.0.0/24"); - var network2 = IPNetwork2.Parse("192.168.2.0/24"); - var expected = IPNetwork2.Parse("192.168.0.0/22"); - var widenetwork = IPNetwork2.WideSubnet(new[] { network1, network2 }); + var network1 = IPNetwork2.Parse("192.168.0.0/24"); + var network2 = IPNetwork2.Parse("192.168.2.0/24"); + var expected = IPNetwork2.Parse("192.168.0.0/22"); + var widenetwork = IPNetwork2.WideSubnet(new[] { network1, network2 }); - Assert.AreEqual(expected, widenetwork, "widesubnet"); - } + Assert.AreEqual(expected, widenetwork, "widesubnet"); + } /// /// Tests Supernet functionality. @@ -69,15 +68,15 @@ public void Issue33__TestWideSubnet__Bug_or_default_behavior() [TestMethod] public void Issue162__Test_IPrangeToCIDRnotation() { - string network1 = "172.64.0.0"; - string network2 = "172.71.255.255"; + string network1 = "172.64.0.0"; + string network2 = "172.71.255.255"; - var final = IPNetwork2.WideSubnet(network1, network2); - string result = final.ToString(); + var final = IPNetwork2.WideSubnet(network1, network2); + string result = final.ToString(); - string expected = "172.64.0.0/13"; - Assert.AreEqual(expected, result, "Supernet"); - } + string expected = "172.64.0.0/13"; + Assert.AreEqual(expected, result, "Supernet"); + } /// /// Tests Supernet functionality with Supernet1. @@ -85,13 +84,13 @@ public void Issue162__Test_IPrangeToCIDRnotation() [TestMethod] public void TestSupernet1() { - var network1 = IPNetwork2.Parse("192.168.0.1/24"); - var network2 = IPNetwork2.Parse("192.168.1.1/24"); - var expected = IPNetwork2.Parse("192.168.0.0/23"); - IPNetwork2 supernet = network1.Supernet(network2); + var network1 = IPNetwork2.Parse("192.168.0.1/24"); + var network2 = IPNetwork2.Parse("192.168.1.1/24"); + var expected = IPNetwork2.Parse("192.168.0.0/23"); + IPNetwork2 supernet = network1.Supernet(network2); - Assert.AreEqual(expected, supernet, "supernet"); - } + Assert.AreEqual(expected, supernet, "supernet"); + } /// /// Test to supernet a null network1. @@ -100,11 +99,11 @@ public void TestSupernet1() [ExpectedException(typeof(NullReferenceException))] public void TestSupernet2() { - IPNetwork2 network1 = null; - var network2 = IPNetwork2.Parse("192.168.1.1/24"); - IPNetwork2 supernet = network1.Supernet(network2); - } - + IPNetwork2 network1 = null; + var network2 = IPNetwork2.Parse("192.168.1.1/24"); + IPNetwork2 supernet = network1.Supernet(network2); + } + /// /// Test to supernet a null network2. /// @@ -112,10 +111,10 @@ public void TestSupernet2() [ExpectedException(typeof(ArgumentNullException))] public void TestSupernet3() { - var network1 = IPNetwork2.Parse("192.168.1.1/24"); - IPNetwork2 network2 = null; - IPNetwork2 supernet = network1.Supernet(network2); - } + var network1 = IPNetwork2.Parse("192.168.1.1/24"); + IPNetwork2 network2 = null; + IPNetwork2 supernet = network1.Supernet(network2); + } /// /// Test to supernet overlapping networks. @@ -124,10 +123,10 @@ public void TestSupernet3() [ExpectedException(typeof(ArgumentException))] public void TestSupernet4() { - var network1 = IPNetwork2.Parse("192.168.0.1/24"); - var network2 = IPNetwork2.Parse("192.168.1.1/25"); - IPNetwork2 supernet = network1.Supernet(network2); - } + var network1 = IPNetwork2.Parse("192.168.0.1/24"); + var network2 = IPNetwork2.Parse("192.168.1.1/25"); + IPNetwork2 supernet = network1.Supernet(network2); + } /// /// Test to supernet non overlapping networks. @@ -136,10 +135,10 @@ public void TestSupernet4() [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestSupernet5() { - var network1 = IPNetwork2.Parse("192.168.0.1/24"); - var network2 = IPNetwork2.Parse("192.168.5.1/24"); - IPNetwork2 supernet = network1.Supernet(network2); - } + var network1 = IPNetwork2.Parse("192.168.0.1/24"); + var network2 = IPNetwork2.Parse("192.168.5.1/24"); + IPNetwork2 supernet = network1.Supernet(network2); + } /// /// Tests Supernet functionality with Supernet6. @@ -147,13 +146,13 @@ public void TestSupernet5() [TestMethod] public void TestSupernet6() { - var network1 = IPNetwork2.Parse("192.168.0.1/24"); - var network2 = IPNetwork2.Parse("192.168.0.1/25"); - var expected = IPNetwork2.Parse("192.168.0.0/24"); - IPNetwork2 supernet = network1.Supernet(network2); + var network1 = IPNetwork2.Parse("192.168.0.1/24"); + var network2 = IPNetwork2.Parse("192.168.0.1/25"); + var expected = IPNetwork2.Parse("192.168.0.0/24"); + IPNetwork2 supernet = network1.Supernet(network2); - Assert.AreEqual(expected, supernet, "supernet"); - } + Assert.AreEqual(expected, supernet, "supernet"); + } /// /// Tests Supernet functionality with Supernet7. @@ -161,13 +160,13 @@ public void TestSupernet6() [TestMethod] public void TestSupernet7() { - var network1 = IPNetwork2.Parse("192.168.0.1/25"); - var network2 = IPNetwork2.Parse("192.168.0.1/24"); - var expected = IPNetwork2.Parse("192.168.0.0/24"); - IPNetwork2 supernet = network1.Supernet(network2); + var network1 = IPNetwork2.Parse("192.168.0.1/25"); + var network2 = IPNetwork2.Parse("192.168.0.1/24"); + var expected = IPNetwork2.Parse("192.168.0.0/24"); + IPNetwork2 supernet = network1.Supernet(network2); - Assert.AreEqual(expected, supernet, "supernet"); - } + Assert.AreEqual(expected, supernet, "supernet"); + } /// /// Tests Supernet functionality with Supernet Static1. @@ -175,15 +174,15 @@ public void TestSupernet7() [TestMethod] public void TestSupernetStatic1() { - var network1 = IPNetwork2.Parse("192.168.0.1/25"); - var network2 = IPNetwork2.Parse("192.168.0.1/24"); - var expected = IPNetwork2.Parse("192.168.0.0/24"); + var network1 = IPNetwork2.Parse("192.168.0.1/25"); + var network2 = IPNetwork2.Parse("192.168.0.1/24"); + var expected = IPNetwork2.Parse("192.168.0.0/24"); #pragma warning disable CS0618 // Type or member is obsolete - var supernet = IPNetwork2.Supernet(network1, network2); + var supernet = IPNetwork2.Supernet(network1, network2); #pragma warning restore CS0618 // Type or member is obsolete - Assert.AreEqual(expected, supernet, "supernet"); - } + Assert.AreEqual(expected, supernet, "supernet"); + } /// /// Test to supernet continuous networks. @@ -192,10 +191,10 @@ public void TestSupernetStatic1() [ExpectedException(typeof(ArgumentException))] public void TestSupernet8() { - var network1 = IPNetwork2.Parse("192.168.1.1/24"); - var network2 = IPNetwork2.Parse("192.168.2.1/24"); - IPNetwork2 supernet = network1.Supernet(network2); - } + var network1 = IPNetwork2.Parse("192.168.1.1/24"); + var network2 = IPNetwork2.Parse("192.168.2.1/24"); + IPNetwork2 supernet = network1.Supernet(network2); + } /// /// Tests Supernet functionality with Supernet9. @@ -203,16 +202,16 @@ public void TestSupernet8() [TestMethod] public void TestSupernet9() { - var ipnetwork1 = IPNetwork2.Parse("200.16.0.0/24"); - var ipnetwork2 = IPNetwork2.Parse("200.16.1.0/24"); - var ipnetwork3 = IPNetwork2.Parse("200.16.2.0/24"); - var ipnetwork4 = IPNetwork2.Parse("200.16.3.0/24"); + var ipnetwork1 = IPNetwork2.Parse("200.16.0.0/24"); + var ipnetwork2 = IPNetwork2.Parse("200.16.1.0/24"); + var ipnetwork3 = IPNetwork2.Parse("200.16.2.0/24"); + var ipnetwork4 = IPNetwork2.Parse("200.16.3.0/24"); - IPNetwork2 result = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2, ipnetwork3, ipnetwork4 })[0]; - var expected = IPNetwork2.Parse("200.16.0.0/22"); + IPNetwork2 result = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2, ipnetwork3, ipnetwork4 })[0]; + var expected = IPNetwork2.Parse("200.16.0.0/22"); - Assert.AreEqual(expected, result, "supernet"); - } + Assert.AreEqual(expected, result, "supernet"); + } /// /// Tests Supernet functionality with Supernet10. @@ -220,12 +219,12 @@ public void TestSupernet9() [TestMethod] public void TestSupernet10() { - var ipnetwork1 = IPNetwork2.Parse("1.1.0.0/24"); - var ipnetwork2 = IPNetwork2.Parse("1.2.1.0/24"); + var ipnetwork1 = IPNetwork2.Parse("1.1.0.0/24"); + var ipnetwork2 = IPNetwork2.Parse("1.2.1.0/24"); - IPNetwork2 result = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2 })[0]; - var expected = IPNetwork2.Parse("1.1.0.0/24"); + IPNetwork2 result = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2 })[0]; + var expected = IPNetwork2.Parse("1.1.0.0/24"); - Assert.AreEqual(expected, result, "supernet"); - } + Assert.AreEqual(expected, result, "supernet"); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkV6UnitTest.cs b/src/TestProject/IPNetworkV6UnitTest.cs index e2c4ae13..db13ebbf 100644 --- a/src/TestProject/IPNetworkV6UnitTest.cs +++ b/src/TestProject/IPNetworkV6UnitTest.cs @@ -23,9 +23,9 @@ public class IPNetworkV6UnitTest [ExpectedException(typeof(ArgumentException))] public void TestParseIPAddressNetmaskAne8(string withFirst, string andSecond) { - var ipnet = IPNetwork2.Parse(withFirst, andSecond); - } - + var ipnet = IPNetwork2.Parse(withFirst, andSecond); + } + /// /// Test parse of IPv6 networks. /// @@ -37,8 +37,8 @@ public void TestParseIPAddressNetmaskAne8(string withFirst, string andSecond) [ExpectedException(typeof(ArgumentException))] public void TestParseIPAddressNetmaskAne10(string withFirst, string andSecond) { - var ipnet = IPNetwork2.Parse(withFirst, andSecond); - } + var ipnet = IPNetwork2.Parse(withFirst, andSecond); + } /// /// Test parse of IPv& networks with 128 cidr. @@ -46,59 +46,59 @@ public void TestParseIPAddressNetmaskAne10(string withFirst, string andSecond) [TestMethod] public void TestParsev6_128() { - IPNetwork2 ipnetwork = null; - string ipaddress = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - - string network = "2001:db8::"; - string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - - // string broadcast = "2001:db8::"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::"; - byte cidr = 128; - BigInteger usable = 1; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - + IPNetwork2 ipnetwork = null; + string ipaddress = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + + string network = "2001:db8::"; + string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + + // string broadcast = "2001:db8::"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::"; + byte cidr = 128; + BigInteger usable = 1; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + /// /// Test parse of IPv& networks with 127 cidr. /// [TestMethod] public void TestParsev6_127() { - IPNetwork2 ipnetwork = null; - string ipaddress = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; - - string network = "2001:db8::"; - string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; - - // string broadcast = "2001:db8::1"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::1"; - byte cidr = 127; - BigInteger usable = 2; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; + + string network = "2001:db8::"; + string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; + + // string broadcast = "2001:db8::1"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::1"; + byte cidr = 127; + BigInteger usable = 2; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with 126 cidr. @@ -106,29 +106,29 @@ public void TestParsev6_127() [TestMethod] public void TestParsev6_126() { - IPNetwork2 ipnetwork = null; - string ipaddress = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; - - string network = "2001:db8::"; - string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; - - // string broadcast = "2001:db8::3"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::3"; - byte cidr = 126; - BigInteger usable = 4; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; + + string network = "2001:db8::"; + string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; + + // string broadcast = "2001:db8::3"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::3"; + byte cidr = 126; + BigInteger usable = 4; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with 125 cidr. @@ -136,29 +136,29 @@ public void TestParsev6_126() [TestMethod] public void TestParsev6_125() { - IPNetwork2 ipnetwork = null; - string ipaddress = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"; - - string network = "2001:db8::"; - string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"; - - // string broadcast = "2001:db8::7"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::7"; - byte cidr = 125; - BigInteger usable = 8; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"; + + string network = "2001:db8::"; + string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"; + + // string broadcast = "2001:db8::7"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::7"; + byte cidr = 125; + BigInteger usable = 8; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with 124 cidr. @@ -166,29 +166,29 @@ public void TestParsev6_125() [TestMethod] public void TestParsev6_124() { - IPNetwork2 ipnetwork = null; - string ipaddress = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; - - string network = "2001:db8::"; - string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; - - // string broadcast = "2001:db8::f"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::f"; - byte cidr = 124; - BigInteger usable = 16; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; + + string network = "2001:db8::"; + string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; + + // string broadcast = "2001:db8::f"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::f"; + byte cidr = 124; + BigInteger usable = 16; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with 123 cidr. @@ -196,29 +196,29 @@ public void TestParsev6_124() [TestMethod] public void TestParsev6_123() { - IPNetwork2 ipnetwork = null; - string ipaddress = "2001:0db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"; - - string network = "2001:db8::"; - string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"; - - // string broadcast = "2001:db8::1f"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::1f"; - byte cidr = 123; - BigInteger usable = 32; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "2001:0db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"; + + string network = "2001:db8::"; + string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"; + + // string broadcast = "2001:db8::1f"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::1f"; + byte cidr = 123; + BigInteger usable = 32; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with 112 cidr. @@ -226,29 +226,29 @@ public void TestParsev6_123() [TestMethod] public void TestParsev6_112() { - IPNetwork2 ipnetwork = null; - string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"; - - string network = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0"; - string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0"; - - // string broadcast = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0"; - string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 112; - uint usable = 65536; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"; + + string network = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0"; + string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0"; + + // string broadcast = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0"; + string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 112; + uint usable = 65536; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with 64 cidr. @@ -256,29 +256,29 @@ public void TestParsev6_112() [TestMethod] public void TestParsev6_64() { - IPNetwork2 ipnetwork = null; - string ipaddress = "ffff:ffff:ffff:ffff:1234:1234:1234:1234"; - string netmask = "ffff:ffff:ffff:ffff:0000:0000:0000:0000"; - - string network = "ffff:ffff:ffff:ffff::"; - string netmask2 = "ffff:ffff:ffff:ffff::"; - - // string broadcast = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "ffff:ffff:ffff:ffff::"; - string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 64; - var usable = BigInteger.Pow(2, 128 - cidr); - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "ffff:ffff:ffff:ffff:1234:1234:1234:1234"; + string netmask = "ffff:ffff:ffff:ffff:0000:0000:0000:0000"; + + string network = "ffff:ffff:ffff:ffff::"; + string netmask2 = "ffff:ffff:ffff:ffff::"; + + // string broadcast = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "ffff:ffff:ffff:ffff::"; + string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 64; + var usable = BigInteger.Pow(2, 128 - cidr); + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with 16 cidr. @@ -286,29 +286,29 @@ public void TestParsev6_64() [TestMethod] public void TestParsev6_16() { - IPNetwork2 ipnetwork = null; - string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string netmask = "ffff:0000:0000:0000:0000:0000:0000:0000"; - - string network = "ffff::"; - string netmask2 = "ffff::"; - - // string broadcast = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "ffff::"; - string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 16; - var usable = BigInteger.Pow(2, 128 - cidr); - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string netmask = "ffff:0000:0000:0000:0000:0000:0000:0000"; + + string network = "ffff::"; + string netmask2 = "ffff::"; + + // string broadcast = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "ffff::"; + string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 16; + var usable = BigInteger.Pow(2, 128 - cidr); + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test parse of IPv& networks with edge cases. @@ -316,27 +316,27 @@ public void TestParsev6_16() [TestMethod] public void TestParsev6_EDGE() { - IPNetwork2 ipnetwork = null; - string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - - string network = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 128; - uint usable = 1; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + IPNetwork2 ipnetwork = null; + string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + + string network = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 128; + uint usable = 1; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } #endregion @@ -348,24 +348,24 @@ public void TestParsev6_EDGE() [TestMethod] public void TestParseString1() { - string ipaddress = "2001:0db8:: ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; - - string network = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::f"; - byte cidr = 124; - uint usable = 16; - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "2001:0db8:: ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; + + string network = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::f"; + byte cidr = 124; + uint usable = 16; + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString. @@ -373,24 +373,24 @@ public void TestParseString1() [TestMethod] public void TestParseString3() { - string ipaddress = ":: ::"; - - string network = "::"; - string netmask = "::"; - string firstUsable = "::"; - string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 0; - var usable = BigInteger.Pow(2, 128 - cidr); - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = ":: ::"; + + string network = "::"; + string netmask = "::"; + string firstUsable = "::"; + string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 0; + var usable = BigInteger.Pow(2, 128 - cidr); + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString. @@ -398,24 +398,24 @@ public void TestParseString3() [TestMethod] public void TestParseString4() { - string ipaddress = "::/0"; - - string network = "::"; - string netmask = "::"; - string firstUsable = "::"; - string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 0; - var usable = BigInteger.Pow(2, 128 - cidr); - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "::/0"; + + string network = "::"; + string netmask = "::"; + string firstUsable = "::"; + string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 0; + var usable = BigInteger.Pow(2, 128 - cidr); + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString. @@ -423,24 +423,24 @@ public void TestParseString4() [TestMethod] public void TestParseString5() { - string ipaddress = "::/32"; - - string network = "::"; - string netmask = "ffff:ffff::"; - string firstUsable = "::"; - string lastUsable = "::ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 32; - var usable = BigInteger.Pow(2, 128 - cidr); - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "::/32"; + + string network = "::"; + string netmask = "ffff:ffff::"; + string firstUsable = "::"; + string lastUsable = "::ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 32; + var usable = BigInteger.Pow(2, 128 - cidr); + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString. @@ -448,24 +448,24 @@ public void TestParseString5() [TestMethod] public void TestParseString6() { - string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128"; - - string network = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 128; - uint usable = 1; - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128"; + + string network = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + byte cidr = 128; + uint usable = 1; + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -473,25 +473,25 @@ public void TestParseString6() [TestMethod] public void TestParseString7_Uppercase_ipv6_must_parse() { - string ipaddress = "2FFF:FFFF:123::/60"; + string ipaddress = "2FFF:FFFF:123::/60"; - string network = "2fff:ffff:123::"; - string netmask = "ffff:ffff:ffff:fff0::"; - string firstUsable = "2fff:ffff:123::"; - string lastUsable = "2fff:ffff:123:f:ffff:ffff:ffff:ffff"; - byte cidr = 60; + string network = "2fff:ffff:123::"; + string netmask = "ffff:ffff:ffff:fff0::"; + string firstUsable = "2fff:ffff:123::"; + string lastUsable = "2fff:ffff:123:f:ffff:ffff:ffff:ffff"; + byte cidr = 60; - // BigInteger usable = 295147905179352825856; - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + // BigInteger usable = 295147905179352825856; + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -499,25 +499,25 @@ public void TestParseString7_Uppercase_ipv6_must_parse() [TestMethod] public void TestParseString8_Uppercase_ipv6_must_parse() { - string ipaddress = "2FFF:FFFE:123::/60"; + string ipaddress = "2FFF:FFFE:123::/60"; - string network = "2fff:fffe:123::"; - string netmask = "ffff:ffff:ffff:fff0::"; - string firstUsable = "2fff:fffe:123::"; - string lastUsable = "2fff:fffe:123:f:ffff:ffff:ffff:ffff"; - byte cidr = 60; + string network = "2fff:fffe:123::"; + string netmask = "ffff:ffff:ffff:fff0::"; + string firstUsable = "2fff:fffe:123::"; + string lastUsable = "2fff:fffe:123:f:ffff:ffff:ffff:ffff"; + byte cidr = 60; - // BigInteger usable = 295147905179352825856; - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + // BigInteger usable = 295147905179352825856; + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -525,25 +525,25 @@ public void TestParseString8_Uppercase_ipv6_must_parse() [TestMethod] public void TestParseString9_Uppercase_ipv6_must_parse() { - string ipaddress = "2FFF:FFFC:123::/60"; + string ipaddress = "2FFF:FFFC:123::/60"; - string network = "2fff:fffc:123::"; - string netmask = "ffff:ffff:ffff:fff0::"; - string firstUsable = "2fff:fffc:123::"; - string lastUsable = "2fff:fffc:123:f:ffff:ffff:ffff:ffff"; - byte cidr = 60; + string network = "2fff:fffc:123::"; + string netmask = "ffff:ffff:ffff:fff0::"; + string firstUsable = "2fff:fffc:123::"; + string lastUsable = "2fff:fffc:123:f:ffff:ffff:ffff:ffff"; + byte cidr = 60; - // BigInteger usable = 295147905179352825856; - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + // BigInteger usable = 295147905179352825856; + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -551,25 +551,25 @@ public void TestParseString9_Uppercase_ipv6_must_parse() [TestMethod] public void TestParseString10_Uppercase_ipv6_must_parse() { - string ipaddress = "2FFF:FFFA:123::/60"; + string ipaddress = "2FFF:FFFA:123::/60"; - string network = "2fff:fffa:123::"; - string netmask = "ffff:ffff:ffff:fff0::"; - string firstUsable = "2fff:fffa:123::"; - string lastUsable = "2fff:fffa:123:f:ffff:ffff:ffff:ffff"; - byte cidr = 60; + string network = "2fff:fffa:123::"; + string netmask = "ffff:ffff:ffff:fff0::"; + string firstUsable = "2fff:fffa:123::"; + string lastUsable = "2fff:fffa:123:f:ffff:ffff:ffff:ffff"; + byte cidr = 60; - // BigInteger usable = 295147905179352825856; - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + // BigInteger usable = 295147905179352825856; + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -577,25 +577,25 @@ public void TestParseString10_Uppercase_ipv6_must_parse() [TestMethod] public void TestParseString11_Uppercase_ipv6_must_parse() { - string ipaddress = "FFFF:FFF1:123::/60"; + string ipaddress = "FFFF:FFF1:123::/60"; - string network = "ffff:fff1:123::"; - string netmask = "ffff:ffff:ffff:fff0::"; - string firstUsable = "ffff:fff1:123::"; - string lastUsable = "ffff:fff1:123:f:ffff:ffff:ffff:ffff"; - byte cidr = 60; + string network = "ffff:fff1:123::"; + string netmask = "ffff:ffff:ffff:fff0::"; + string firstUsable = "ffff:fff1:123::"; + string lastUsable = "ffff:fff1:123:f:ffff:ffff:ffff:ffff"; + byte cidr = 60; - // BigInteger usable = 295147905179352825856; - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + // BigInteger usable = 295147905179352825856; + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -603,24 +603,24 @@ public void TestParseString11_Uppercase_ipv6_must_parse() [TestMethod] public void TestParseIPAddressNoNetmask1() { - string ipaddress = "2001:0db8::"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - - string network = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff::"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; - byte cidr = 64; - var usable = BigInteger.Pow(2, 64); - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "2001:0db8::"; + var ipnetwork = IPNetwork2.Parse(ipaddress); + + string network = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff::"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; + byte cidr = 64; + var usable = BigInteger.Pow(2, 64); + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -628,24 +628,24 @@ public void TestParseIPAddressNoNetmask1() [TestMethod] public void TestParseIPAddressNoNetmask4() { - string ipaddress = "::"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - - string network = "::"; - string netmask = "ffff:ffff:ffff:ffff::"; - string firstUsable = "::"; - string lastUsable = "::ffff:ffff:ffff:ffff"; - byte cidr = 64; - var usable = BigInteger.Pow(2, 64); - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "::"; + var ipnetwork = IPNetwork2.Parse(ipaddress); + + string network = "::"; + string netmask = "ffff:ffff:ffff:ffff::"; + string firstUsable = "::"; + string lastUsable = "::ffff:ffff:ffff:ffff"; + byte cidr = 64; + var usable = BigInteger.Pow(2, 64); + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -653,24 +653,24 @@ public void TestParseIPAddressNoNetmask4() [TestMethod] public void TestParseIPAddressNoNetmask5() { - string ipaddress = "2001:0db8::1"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - - string network = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff::"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; - byte cidr = 64; - var usable = BigInteger.Pow(2, 64); - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "2001:0db8::1"; + var ipnetwork = IPNetwork2.Parse(ipaddress); + + string network = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff::"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; + byte cidr = 64; + var usable = BigInteger.Pow(2, 64); + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -678,26 +678,26 @@ public void TestParseIPAddressNoNetmask5() [TestMethod] public void TestParseIPAddressNoNetmask1_ClassFull() { - string ipaddress = "2001:0db8::"; - ICidrGuess cidrGess = CidrGuess.ClassFull; - - var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); - - string network = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff::"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; - byte cidr = 64; - var usable = BigInteger.Pow(2, 64); - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "2001:0db8::"; + ICidrGuess cidrGess = CidrGuess.ClassFull; + + var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); + + string network = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff::"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; + byte cidr = 64; + var usable = BigInteger.Pow(2, 64); + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString uppercase lowercase. @@ -705,26 +705,26 @@ public void TestParseIPAddressNoNetmask1_ClassFull() [TestMethod] public void TestParseIPAddressNoNetmask4_ClassFull() { - string ipaddress = "::"; - ICidrGuess cidrGess = CidrGuess.ClassFull; - - var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); - - string network = "::"; - string netmask = "ffff:ffff:ffff:ffff::"; - string firstUsable = "::"; - string lastUsable = "::ffff:ffff:ffff:ffff"; - byte cidr = 64; - var usable = BigInteger.Pow(2, 64); - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "::"; + ICidrGuess cidrGess = CidrGuess.ClassFull; + + var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); + + string network = "::"; + string netmask = "ffff:ffff:ffff:ffff::"; + string firstUsable = "::"; + string lastUsable = "::ffff:ffff:ffff:ffff"; + byte cidr = 64; + var usable = BigInteger.Pow(2, 64); + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString ClassFull. @@ -732,26 +732,26 @@ public void TestParseIPAddressNoNetmask4_ClassFull() [TestMethod] public void TestParseIPAddressNoNetmask5_ClassFull() { - string ipaddress = "2001:0db8::1"; - ICidrGuess cidrGess = CidrGuess.ClassFull; - - var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); - - string network = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff::"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; - byte cidr = 64; - var usable = BigInteger.Pow(2, 64); - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "2001:0db8::1"; + ICidrGuess cidrGess = CidrGuess.ClassFull; + + var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); + + string network = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff::"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::ffff:ffff:ffff:ffff"; + byte cidr = 64; + var usable = BigInteger.Pow(2, 64); + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString ClassLess. @@ -759,26 +759,26 @@ public void TestParseIPAddressNoNetmask5_ClassFull() [TestMethod] public void TestParseIPAddressNoNetmask1_ClassLess() { - string ipaddress = "2001:0db8::"; - ICidrGuess cidrGess = CidrGuess.ClassLess; - - var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); - - string network = "2001:db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "2001:db8::"; - string lastUsable = "2001:db8::"; - byte cidr = 128; - int usable = 1; - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "2001:0db8::"; + ICidrGuess cidrGess = CidrGuess.ClassLess; + + var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); + + string network = "2001:db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "2001:db8::"; + string lastUsable = "2001:db8::"; + byte cidr = 128; + int usable = 1; + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString ClassLess. @@ -786,26 +786,26 @@ public void TestParseIPAddressNoNetmask1_ClassLess() [TestMethod] public void TestParseIPAddressNoNetmask4_ClassLess() { - string ipaddress = "::"; - ICidrGuess cidrGess = CidrGuess.ClassLess; - - var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); - - string network = "::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "::"; - string lastUsable = "::"; - byte cidr = 128; - int usable = 1; - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "::"; + ICidrGuess cidrGess = CidrGuess.ClassLess; + + var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); + + string network = "::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "::"; + string lastUsable = "::"; + byte cidr = 128; + int usable = 1; + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString ClassLess. @@ -813,26 +813,26 @@ public void TestParseIPAddressNoNetmask4_ClassLess() [TestMethod] public void TestParseIPAddressNoNetmask5_ClassLess() { - string ipaddress = "2001:0db8::1"; - ICidrGuess cidrGess = CidrGuess.ClassLess; - - var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); - - string network = "2001:db8::1"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string firstUsable = "2001:db8::1"; - string lastUsable = "2001:db8::1"; - byte cidr = 128; - int usable = 1; - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "2001:0db8::1"; + ICidrGuess cidrGess = CidrGuess.ClassLess; + + var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); + + string network = "2001:db8::1"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string firstUsable = "2001:db8::1"; + string lastUsable = "2001:db8::1"; + byte cidr = 128; + int usable = 1; + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Test ParseString garbage. @@ -841,9 +841,9 @@ public void TestParseIPAddressNoNetmask5_ClassLess() [ExpectedException(typeof(ArgumentException))] public void TestParseStringAe1() { - string ipaddress = "garbage"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - } + string ipaddress = "garbage"; + var ipnetwork = IPNetwork2.Parse(ipaddress); + } /// /// Test ParseString too long. @@ -852,9 +852,9 @@ public void TestParseStringAe1() [ExpectedException(typeof(ArgumentException))] public void TestParseStringAe2() { - string ipaddress = "0:0:0:0:0:0:1:0:0 0:1:2:3:4:5:6:7:8"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - } + string ipaddress = "0:0:0:0:0:0:1:0:0 0:1:2:3:4:5:6:7:8"; + var ipnetwork = IPNetwork2.Parse(ipaddress); + } /// /// Test ParseString null. @@ -863,9 +863,9 @@ public void TestParseStringAe2() [ExpectedException(typeof(ArgumentNullException))] public void TestParseStringAne1() { - string ipaddress = null; - var ipnetwork = IPNetwork2.Parse(ipaddress); - } + string ipaddress = null; + var ipnetwork = IPNetwork2.Parse(ipaddress); + } #endregion @@ -877,12 +877,12 @@ public void TestParseStringAne1() [TestMethod] public void TestParseStringString1() { - string ipaddress = "2001:0db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; + string ipaddress = "2001:0db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); - Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); - } + var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); + } /// /// Test ParseString 3. @@ -891,11 +891,11 @@ public void TestParseStringString1() [ExpectedException(typeof(ArgumentNullException))] public void TestParseStringString3() { - string ipaddress = "2001:0db8::"; - string netmask = null; + string ipaddress = "2001:0db8::"; + string netmask = null; - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); - } + var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + } /// /// Test ParseString with string string @@ -904,11 +904,11 @@ public void TestParseStringString3() [ExpectedException(typeof(ArgumentNullException))] public void TestParseStringString5() { - string ipaddress = "2001:0db8::"; - string netmask = string.Empty; + string ipaddress = "2001:0db8::"; + string netmask = string.Empty; - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); - } + var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + } #endregion @@ -920,13 +920,13 @@ public void TestParseStringString5() [TestMethod] public void ParseIpIp1() { - string ipaddress = "2001:0db8::"; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; - var ip = IPAddress.Parse(ipaddress); - var netm = IPAddress.Parse(netmask); - var ipnetwork = IPNetwork2.Parse(ip, netm); - Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); - } + string ipaddress = "2001:0db8::"; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; + var ip = IPAddress.Parse(ipaddress); + var netm = IPAddress.Parse(netmask); + var ipnetwork = IPNetwork2.Parse(ip, netm); + Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); + } /// /// Test ParseString with IP @@ -935,11 +935,11 @@ public void ParseIpIp1() [ExpectedException(typeof(ArgumentNullException))] public void ParseIpIp3() { - string ipaddress = "2001:0db8::"; - var ip = IPAddress.Parse(ipaddress); - IPAddress netm = null; - var ipnetwork = IPNetwork2.Parse(ip, netm); - } + string ipaddress = "2001:0db8::"; + var ip = IPAddress.Parse(ipaddress); + IPAddress netm = null; + var ipnetwork = IPNetwork2.Parse(ip, netm); + } #endregion @@ -951,11 +951,11 @@ public void ParseIpIp3() [TestMethod] public void CtorWithIpAndCidr1() { - string ipaddress = "2001:0db8::"; - var ip = IPAddress.Parse(ipaddress); - var ipnetwork = new IPNetwork2(ip, 124); - Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); - } + string ipaddress = "2001:0db8::"; + var ip = IPAddress.Parse(ipaddress); + var ipnetwork = new IPNetwork2(ip, 124); + Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); + } /// /// Test CtorWithIpAndCidr2. @@ -964,10 +964,10 @@ public void CtorWithIpAndCidr1() [ExpectedException(typeof(ArgumentOutOfRangeException))] public void CtorWithIpAndCidr2() { - string ipaddress = "2001:db8::"; - var ip = IPAddress.Parse(ipaddress); - var ipnetwork = new IPNetwork2(ip, 129); - } + string ipaddress = "2001:db8::"; + var ip = IPAddress.Parse(ipaddress); + var ipnetwork = new IPNetwork2(ip, 129); + } #endregion @@ -979,9 +979,9 @@ public void CtorWithIpAndCidr2() [TestMethod] public void TestToCidrAe() { - byte cidr = IPNetwork2.ToCidr(IPAddress.IPv6Any); - Assert.AreEqual(0, cidr, "cidr"); - } + byte cidr = IPNetwork2.ToCidr(IPAddress.IPv6Any); + Assert.AreEqual(0, cidr, "cidr"); + } /// /// Test ToCidr. @@ -990,8 +990,8 @@ public void TestToCidrAe() [ExpectedException(typeof(ArgumentException))] public void TestToCidrAe2() { - IPNetwork2.ToCidr(IPAddress.Parse("2001:db8:3:4:5:6:7:8")); - } + IPNetwork2.ToCidr(IPAddress.Parse("2001:db8:3:4:5:6:7:8")); + } /// /// Test ToCidr. @@ -999,12 +999,12 @@ public void TestToCidrAe2() [TestMethod] public void TestToCidr128() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); - byte cidr = 128; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); + byte cidr = 128; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1012,12 +1012,12 @@ public void TestToCidr128() [TestMethod] public void TestToCidr127() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"); - byte cidr = 127; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"); + byte cidr = 127; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1025,12 +1025,12 @@ public void TestToCidr127() [TestMethod] public void TestToCidr126() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"); - byte cidr = 126; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"); + byte cidr = 126; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1038,12 +1038,12 @@ public void TestToCidr126() [TestMethod] public void TestToCidr125() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"); - byte cidr = 125; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"); + byte cidr = 125; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1051,12 +1051,12 @@ public void TestToCidr125() [TestMethod] public void TestToCidr124() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); - byte cidr = 124; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); + byte cidr = 124; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1064,12 +1064,12 @@ public void TestToCidr124() [TestMethod] public void TestToCidr123() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"); - byte cidr = 123; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"); + byte cidr = 123; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1077,12 +1077,12 @@ public void TestToCidr123() [TestMethod] public void TestToCidr122() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffc0"); - byte cidr = 122; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffc0"); + byte cidr = 122; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1090,12 +1090,12 @@ public void TestToCidr122() [TestMethod] public void TestToCidr121() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff80"); - byte cidr = 121; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff80"); + byte cidr = 121; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1103,12 +1103,12 @@ public void TestToCidr121() [TestMethod] public void TestToCidr120() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00"); - byte cidr = 120; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00"); + byte cidr = 120; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1116,12 +1116,12 @@ public void TestToCidr120() [TestMethod] public void TestToCidr119() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fe00"); - byte cidr = 119; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fe00"); + byte cidr = 119; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1129,12 +1129,12 @@ public void TestToCidr119() [TestMethod] public void TestToCidr118() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fc00"); - byte cidr = 118; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fc00"); + byte cidr = 118; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1142,12 +1142,12 @@ public void TestToCidr118() [TestMethod] public void TestToCidr117() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f800"); - byte cidr = 117; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f800"); + byte cidr = 117; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test ToCidr. @@ -1155,12 +1155,12 @@ public void TestToCidr117() [TestMethod] public void TestToCidr116() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f000"); - byte cidr = 116; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f000"); + byte cidr = 116; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1168,12 +1168,12 @@ public void TestToCidr116() [TestMethod] public void TestToCidr115() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:e000"); - byte cidr = 115; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:e000"); + byte cidr = 115; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1181,12 +1181,12 @@ public void TestToCidr115() [TestMethod] public void TestToCidr114() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:c000"); - byte cidr = 114; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:c000"); + byte cidr = 114; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1194,12 +1194,12 @@ public void TestToCidr114() [TestMethod] public void TestToCidr113() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:8000"); - byte cidr = 113; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:8000"); + byte cidr = 113; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1207,12 +1207,12 @@ public void TestToCidr113() [TestMethod] public void TestToCidr112() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); - byte cidr = 112; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); + byte cidr = 112; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1220,12 +1220,12 @@ public void TestToCidr112() [TestMethod] public void TestToCidr111() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffe:0"); - byte cidr = 111; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffe:0"); + byte cidr = 111; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1233,12 +1233,12 @@ public void TestToCidr111() [TestMethod] public void TestToCidr110() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffc:0"); - byte cidr = 110; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffc:0"); + byte cidr = 110; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1246,12 +1246,12 @@ public void TestToCidr110() [TestMethod] public void TestToCidr109() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff8:0"); - byte cidr = 109; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff8:0"); + byte cidr = 109; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1259,12 +1259,12 @@ public void TestToCidr109() [TestMethod] public void TestToCidr108() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff0:0"); - byte cidr = 108; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff0:0"); + byte cidr = 108; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1272,12 +1272,12 @@ public void TestToCidr108() [TestMethod] public void TestToCidr001() { - var mask = IPAddress.Parse("8000::"); - byte cidr = 1; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("8000::"); + byte cidr = 1; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1285,12 +1285,12 @@ public void TestToCidr001() [TestMethod] public void TestToCidr000() { - var mask = IPAddress.Parse("::"); - byte cidr = 0; - int result = IPNetwork2.ToCidr(mask); + var mask = IPAddress.Parse("::"); + byte cidr = 0; + int result = IPNetwork2.ToCidr(mask); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(cidr, result, "cidr"); + } #endregion @@ -1302,14 +1302,14 @@ public void TestToCidr000() [TestMethod] public void TestTryToCidr128() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); - byte cidr = 128; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); + byte cidr = 128; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1317,14 +1317,14 @@ public void TestTryToCidr128() [TestMethod] public void TestTryToCidr127() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"); - byte cidr = 127; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"); + byte cidr = 127; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1332,14 +1332,14 @@ public void TestTryToCidr127() [TestMethod] public void TestTryToCidr126() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"); - byte cidr = 126; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"); + byte cidr = 126; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1347,14 +1347,14 @@ public void TestTryToCidr126() [TestMethod] public void TestTryToCidr125() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"); - byte cidr = 125; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"); + byte cidr = 125; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1362,14 +1362,14 @@ public void TestTryToCidr125() [TestMethod] public void TestTryToCidr124() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); - byte cidr = 124; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); + byte cidr = 124; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1377,14 +1377,14 @@ public void TestTryToCidr124() [TestMethod] public void TestTryToCidr123() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"); - byte cidr = 123; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"); + byte cidr = 123; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1392,14 +1392,14 @@ public void TestTryToCidr123() [TestMethod] public void TestTryToCidr122() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffc0"); - byte cidr = 122; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffc0"); + byte cidr = 122; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1407,14 +1407,14 @@ public void TestTryToCidr122() [TestMethod] public void TestTryToCidr121() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff80"); - byte cidr = 121; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff80"); + byte cidr = 121; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1422,14 +1422,14 @@ public void TestTryToCidr121() [TestMethod] public void TestTryToCidr120() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00"); - byte cidr = 120; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00"); + byte cidr = 120; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1437,14 +1437,14 @@ public void TestTryToCidr120() [TestMethod] public void TestTryToCidr119() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fe00"); - byte cidr = 119; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fe00"); + byte cidr = 119; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1452,14 +1452,14 @@ public void TestTryToCidr119() [TestMethod] public void TestTryToCidr118() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fc00"); - byte cidr = 118; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fc00"); + byte cidr = 118; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1467,14 +1467,14 @@ public void TestTryToCidr118() [TestMethod] public void TestTryToCidr117() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f800"); - byte cidr = 117; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f800"); + byte cidr = 117; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1482,14 +1482,14 @@ public void TestTryToCidr117() [TestMethod] public void TestTryToCidr116() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f000"); - byte cidr = 116; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f000"); + byte cidr = 116; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1497,14 +1497,14 @@ public void TestTryToCidr116() [TestMethod] public void TestTryToCidr115() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:e000"); - byte cidr = 115; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:e000"); + byte cidr = 115; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1512,14 +1512,14 @@ public void TestTryToCidr115() [TestMethod] public void TestTryToCidr114() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:c000"); - byte cidr = 114; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:c000"); + byte cidr = 114; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1527,14 +1527,14 @@ public void TestTryToCidr114() [TestMethod] public void TestTryToCidr113() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:8000"); - byte cidr = 113; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:8000"); + byte cidr = 113; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1542,14 +1542,14 @@ public void TestTryToCidr113() [TestMethod] public void TestTryToCidr112() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); - byte cidr = 112; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); + byte cidr = 112; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1557,14 +1557,14 @@ public void TestTryToCidr112() [TestMethod] public void TestTryToCidr111() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffe:0"); - byte cidr = 111; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffe:0"); + byte cidr = 111; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1572,14 +1572,14 @@ public void TestTryToCidr111() [TestMethod] public void TestTryToCidr110() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffc:0"); - byte cidr = 110; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffc:0"); + byte cidr = 110; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1587,14 +1587,14 @@ public void TestTryToCidr110() [TestMethod] public void TestTryToCidr109() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff8:0"); - byte cidr = 109; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff8:0"); + byte cidr = 109; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1602,14 +1602,14 @@ public void TestTryToCidr109() [TestMethod] public void TestTryToCidr108() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff0:0"); - byte cidr = 108; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff0:0"); + byte cidr = 108; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1617,14 +1617,14 @@ public void TestTryToCidr108() [TestMethod] public void TestTryToCidr001() { - var mask = IPAddress.Parse("8000::"); - byte cidr = 1; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("8000::"); + byte cidr = 1; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Test. @@ -1632,14 +1632,14 @@ public void TestTryToCidr001() [TestMethod] public void TestTryToCidr000() { - var mask = IPAddress.Parse("::"); - byte cidr = 0; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + var mask = IPAddress.Parse("::"); + byte cidr = 0; + byte? result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out result); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } #endregion @@ -1651,12 +1651,12 @@ public void TestTryToCidr000() [TestMethod] public void TestToBigInteger32() { - var mask = IPAddress.Parse("::f"); - uint uintMask = 0xf; - var result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("::f"); + uint uintMask = 0xf; + var result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } /// /// Test. @@ -1664,12 +1664,12 @@ public void TestToBigInteger32() [TestMethod] public void TestToBigInteger24() { - var mask = IPAddress.Parse("::fff"); - uint uintMask = 0xfff; - BigInteger? result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("::fff"); + uint uintMask = 0xfff; + BigInteger? result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } /// /// Test. @@ -1677,12 +1677,12 @@ public void TestToBigInteger24() [TestMethod] public void TestToBigInteger16() { - var mask = IPAddress.Parse("::ff"); - uint uintMask = 0xff; - BigInteger? result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("::ff"); + uint uintMask = 0xff; + BigInteger? result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } /// /// Test. @@ -1690,12 +1690,12 @@ public void TestToBigInteger16() [TestMethod] public void TestToBigInteger8() { - var mask = IPAddress.Parse("::ff00:0"); - uint uintMask = 0xff000000; - BigInteger? result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("::ff00:0"); + uint uintMask = 0xff000000; + BigInteger? result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } /// /// Test. @@ -1703,12 +1703,12 @@ public void TestToBigInteger8() [TestMethod] public void TestToBigInteger0() { - var mask = IPAddress.Parse("::"); - uint uintMask = 0x00000000; - BigInteger? result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("::"); + uint uintMask = 0x00000000; + BigInteger? result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } #endregion @@ -1720,14 +1720,14 @@ public void TestToBigInteger0() [TestMethod] public void TestTryToBigInteger32() { - var mask = IPAddress.Parse("::ffff:ffff"); - uint uintMask = 0xffffffff; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + var mask = IPAddress.Parse("::ffff:ffff"); + uint uintMask = 0xffffffff; + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(mask, out result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Test. @@ -1735,14 +1735,14 @@ public void TestTryToBigInteger32() [TestMethod] public void TestTryToBigInteger24() { - var mask = IPAddress.Parse("::ffff:ff00"); - uint uintMask = 0xffffff00; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + var mask = IPAddress.Parse("::ffff:ff00"); + uint uintMask = 0xffffff00; + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(mask, out result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Test. @@ -1750,14 +1750,14 @@ public void TestTryToBigInteger24() [TestMethod] public void TestTryToBigInteger16() { - var mask = IPAddress.Parse("::ffff:0"); - uint uintMask = 0xffff0000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + var mask = IPAddress.Parse("::ffff:0"); + uint uintMask = 0xffff0000; + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(mask, out result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Test. @@ -1765,15 +1765,15 @@ public void TestTryToBigInteger16() [TestMethod] public void TestTryToBigInteger8() { - var mask = IPAddress.Parse("::ff00:0"); - uint uintMask = 0xff000000; + var mask = IPAddress.Parse("::ff00:0"); + uint uintMask = 0xff000000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(mask, out result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Test. @@ -1781,14 +1781,14 @@ public void TestTryToBigInteger8() [TestMethod] public void TestTryToBigInteger0() { - var mask = IPAddress.Parse("::"); - uint uintMask = 0x00000000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + var mask = IPAddress.Parse("::"); + uint uintMask = 0x00000000; + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(mask, out result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } #endregion @@ -1800,13 +1800,13 @@ public void TestTryToBigInteger0() [TestMethod] public void TryToNetmask1() { - IPAddress result = null; - bool parsed = IPNetwork2.TryToNetmask(0, AddressFamily.InterNetworkV6, out result); - var expected = IPAddress.Parse("::"); + IPAddress result = null; + bool parsed = IPNetwork2.TryToNetmask(0, AddressFamily.InterNetworkV6, out result); + var expected = IPAddress.Parse("::"); - Assert.AreEqual(expected, result, "Netmask"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(expected, result, "Netmask"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Test. @@ -1814,13 +1814,13 @@ public void TryToNetmask1() [TestMethod] public void TryToNetmask2() { - IPAddress result = null; - bool parsed = IPNetwork2.TryToNetmask(33, AddressFamily.InterNetworkV6, out result); - var expected = IPAddress.Parse("ffff:ffff:8000::"); + IPAddress result = null; + bool parsed = IPNetwork2.TryToNetmask(33, AddressFamily.InterNetworkV6, out result); + var expected = IPAddress.Parse("ffff:ffff:8000::"); - Assert.AreEqual(expected, result, "Netmask"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(expected, result, "Netmask"); + Assert.AreEqual(true, parsed, "parsed"); + } #endregion @@ -1832,12 +1832,12 @@ public void TryToNetmask2() [TestMethod] public void ToNetmask128() { - byte cidr = 128; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); + byte cidr = 128; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); - Assert.AreEqual(netmask, result, "netmask"); - } + Assert.AreEqual(netmask, result, "netmask"); + } /// /// Test. @@ -1845,12 +1845,12 @@ public void ToNetmask128() [TestMethod] public void ToNetmask31() { - byte cidr = 127; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); + byte cidr = 127; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); - Assert.AreEqual(netmask, result, "netmask"); - } + Assert.AreEqual(netmask, result, "netmask"); + } /// /// Test. @@ -1858,12 +1858,12 @@ public void ToNetmask31() [TestMethod] public void ToNetmask30() { - byte cidr = 126; - string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); + byte cidr = 126; + string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); - Assert.AreEqual(netmask, result, "netmask"); - } + Assert.AreEqual(netmask, result, "netmask"); + } /// /// Test. @@ -1871,12 +1871,12 @@ public void ToNetmask30() [TestMethod] public void ToNetmask1() { - byte cidr = 1; - string netmask = "8000::"; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); + byte cidr = 1; + string netmask = "8000::"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); - Assert.AreEqual(netmask, result, "netmask"); - } + Assert.AreEqual(netmask, result, "netmask"); + } /// /// Test. @@ -1884,12 +1884,12 @@ public void ToNetmask1() [TestMethod] public void ToNetmask0() { - byte cidr = 0; - string netmask = "::"; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); + byte cidr = 0; + string netmask = "::"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); - Assert.AreEqual(netmask, result, "netmask"); - } + Assert.AreEqual(netmask, result, "netmask"); + } /// /// Test. @@ -1898,9 +1898,9 @@ public void ToNetmask0() [ExpectedException(typeof(ArgumentOutOfRangeException))] public void ToNetmaskOore1() { - byte cidr = 129; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); - } + byte cidr = 129; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); + } #endregion @@ -1912,12 +1912,12 @@ public void ToNetmaskOore1() [TestMethod] public void TestValidNetmask0() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); - bool expected = true; - bool result = IPNetwork2.ValidNetmask(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); + bool expected = true; + bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); - } + Assert.AreEqual(expected, result, "ValidNetmask"); + } /// /// Test. @@ -1925,12 +1925,12 @@ public void TestValidNetmask0() [TestMethod] public void TestValidNetmask1() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); - bool expected = true; - bool result = IPNetwork2.ValidNetmask(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); + bool expected = true; + bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); - } + Assert.AreEqual(expected, result, "ValidNetmask"); + } /// /// Test. @@ -1938,12 +1938,12 @@ public void TestValidNetmask1() [TestMethod] public void TestValidNetmask2() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); - bool expected = true; - bool result = IPNetwork2.ValidNetmask(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); + bool expected = true; + bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); - } + Assert.AreEqual(expected, result, "ValidNetmask"); + } /// /// Test. @@ -1951,12 +1951,12 @@ public void TestValidNetmask2() [TestMethod] public void TestValidNetmaskEae1() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:0000:ffff"); - bool expected = false; - bool result = IPNetwork2.ValidNetmask(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:0000:ffff"); + bool expected = false; + bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); - } + Assert.AreEqual(expected, result, "ValidNetmask"); + } /// /// Test. @@ -1964,12 +1964,12 @@ public void TestValidNetmaskEae1() [TestMethod] public void TestValidNetmaskEae3() { - var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:0000:0001"); - bool expected = false; - bool result = IPNetwork2.ValidNetmask(mask); + var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:0000:0001"); + bool expected = false; + bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); - } + Assert.AreEqual(expected, result, "ValidNetmask"); + } #endregion @@ -1981,12 +1981,12 @@ public void TestValidNetmaskEae3() [TestMethod] public void TestBitsSet128() { - var ip = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); - uint bits = 128; - uint result = IPNetwork2.BitsSet(ip); + var ip = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); + uint bits = 128; + uint result = IPNetwork2.BitsSet(ip); - Assert.AreEqual(bits, result, "BitsSet"); - } + Assert.AreEqual(bits, result, "BitsSet"); + } /// /// Test. @@ -1994,12 +1994,12 @@ public void TestBitsSet128() [TestMethod] public void TestBitsSet120() { - var ip = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); - uint bits = 124; - uint result = IPNetwork2.BitsSet(ip); + var ip = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); + uint bits = 124; + uint result = IPNetwork2.BitsSet(ip); - Assert.AreEqual(bits, result, "BitsSet"); - } + Assert.AreEqual(bits, result, "BitsSet"); + } /// /// Test. @@ -2007,12 +2007,12 @@ public void TestBitsSet120() [TestMethod] public void TestBitsSet16() { - var ip = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); - uint bits = 112; - uint result = IPNetwork2.BitsSet(ip); + var ip = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); + uint bits = 112; + uint result = IPNetwork2.BitsSet(ip); - Assert.AreEqual(bits, result, "BitsSet"); - } + Assert.AreEqual(bits, result, "BitsSet"); + } /// /// Test. @@ -2020,12 +2020,12 @@ public void TestBitsSet16() [TestMethod] public void TestBitsSet4() { - var ip = IPAddress.Parse("f0f0:f0f0:f0f0:f0f0:f0f0:f0f0:f0f0:f0f0"); - uint bits = 64; - uint result = IPNetwork2.BitsSet(ip); + var ip = IPAddress.Parse("f0f0:f0f0:f0f0:f0f0:f0f0:f0f0:f0f0:f0f0"); + uint bits = 64; + uint result = IPNetwork2.BitsSet(ip); - Assert.AreEqual(bits, result, "BitsSet"); - } + Assert.AreEqual(bits, result, "BitsSet"); + } #endregion @@ -2037,14 +2037,14 @@ public void TestBitsSet4() [TestMethod] public void TestContains1() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - var ipaddress = IPAddress.Parse("2001:0db8::1"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipaddress = IPAddress.Parse("2001:0db8::1"); - bool result = ipnetwork.Contains(ipaddress); - bool expected = true; + bool result = ipnetwork.Contains(ipaddress); + bool expected = true; - Assert.AreEqual(expected, result, "contains"); - } + Assert.AreEqual(expected, result, "contains"); + } /// /// Test. @@ -2052,14 +2052,14 @@ public void TestContains1() [TestMethod] public void TestContains2() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - var ipaddress = IPAddress.Parse("2001:0db8:0:1::"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipaddress = IPAddress.Parse("2001:0db8:0:1::"); - bool result = ipnetwork.Contains(ipaddress); - bool expected = false; + bool result = ipnetwork.Contains(ipaddress); + bool expected = false; - Assert.AreEqual(expected, result, "contains"); - } + Assert.AreEqual(expected, result, "contains"); + } /// /// Test. @@ -2067,14 +2067,14 @@ public void TestContains2() [TestMethod] public void TestContains3() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/64"); - bool result = ipnetwork.Contains(ipnetwork2); - bool expected = true; + bool result = ipnetwork.Contains(ipnetwork2); + bool expected = true; - Assert.AreEqual(expected, result, "contains"); - } + Assert.AreEqual(expected, result, "contains"); + } /// /// Test. @@ -2082,14 +2082,14 @@ public void TestContains3() [TestMethod] public void TestContains4() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/65"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/65"); - bool result = ipnetwork.Contains(ipnetwork2); - bool expected = true; + bool result = ipnetwork.Contains(ipnetwork2); + bool expected = true; - Assert.AreEqual(expected, result, "contains"); - } + Assert.AreEqual(expected, result, "contains"); + } /// /// Test. @@ -2097,14 +2097,14 @@ public void TestContains4() [TestMethod] public void TestContains5() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - var ipnetwork2 = IPNetwork2.Parse("2001:0db8:1::/65"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork2 = IPNetwork2.Parse("2001:0db8:1::/65"); - bool result = ipnetwork.Contains(ipnetwork2); - bool expected = false; + bool result = ipnetwork.Contains(ipnetwork2); + bool expected = false; - Assert.AreEqual(expected, result, "contains"); - } + Assert.AreEqual(expected, result, "contains"); + } /// /// Test. @@ -2112,14 +2112,14 @@ public void TestContains5() [TestMethod] public void TestContains6() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/63"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/63"); - bool result = ipnetwork.Contains(ipnetwork2); - bool expected = false; + bool result = ipnetwork.Contains(ipnetwork2); + bool expected = false; - Assert.AreEqual(expected, result, "contains"); - } + Assert.AreEqual(expected, result, "contains"); + } /// /// Test. @@ -2128,11 +2128,11 @@ public void TestContains6() [ExpectedException(typeof(ArgumentNullException))] public void TestContains10() { - var ipnetwork = IPNetwork2.Parse("::/0"); - IPAddress ipaddress = null; + var ipnetwork = IPNetwork2.Parse("::/0"); + IPAddress ipaddress = null; - bool result = ipnetwork.Contains(ipaddress); - } + bool result = ipnetwork.Contains(ipaddress); + } /// /// Test. @@ -2140,12 +2140,12 @@ public void TestContains10() [TestMethod] public void TestContains11_different_address_family_returns_false() { - var ipnetwork = IPNetwork2.Parse("::1"); // IPv6 - var ipaddress = IPAddress.Parse("127.0.0.1"); // IPv4 + var ipnetwork = IPNetwork2.Parse("::1"); // IPv6 + var ipaddress = IPAddress.Parse("127.0.0.1"); // IPv4 - bool result = ipnetwork.Contains(ipaddress); - Assert.AreEqual(false, result, "contains"); - } + bool result = ipnetwork.Contains(ipaddress); + Assert.AreEqual(false, result, "contains"); + } #endregion @@ -2158,10 +2158,10 @@ public void TestContains11_different_address_family_returns_false() [ExpectedException(typeof(ArgumentNullException))] public void TestOverlap2() { - var network1 = IPNetwork2.Parse("2001:0db8::/0"); - IPNetwork2 network2 = null; - network1.Overlap(network2); - } + var network1 = IPNetwork2.Parse("2001:0db8::/0"); + IPNetwork2 network2 = null; + network1.Overlap(network2); + } /// /// Test. @@ -2169,13 +2169,13 @@ public void TestOverlap2() [TestMethod] public void TestOverlap3() { - var network1 = IPNetwork2.Parse("2001:0db8::/64"); - var network2 = IPNetwork2.Parse("2001:0db8::/64"); - bool result = network1.Overlap(network2); - bool expected = true; + var network1 = IPNetwork2.Parse("2001:0db8::/64"); + var network2 = IPNetwork2.Parse("2001:0db8::/64"); + bool result = network1.Overlap(network2); + bool expected = true; - Assert.AreEqual(expected, result, "overlap"); - } + Assert.AreEqual(expected, result, "overlap"); + } /// /// Test. @@ -2183,13 +2183,13 @@ public void TestOverlap3() [TestMethod] public void TestOverlap4() { - var network1 = IPNetwork2.Parse("2001:0db8::/64"); - var network2 = IPNetwork2.Parse("2001:0db8:0:0:1::/65"); - bool result = network1.Overlap(network2); - bool expected = true; + var network1 = IPNetwork2.Parse("2001:0db8::/64"); + var network2 = IPNetwork2.Parse("2001:0db8:0:0:1::/65"); + bool result = network1.Overlap(network2); + bool expected = true; - Assert.AreEqual(expected, result, "overlap"); - } + Assert.AreEqual(expected, result, "overlap"); + } /// /// Test. @@ -2197,13 +2197,13 @@ public void TestOverlap4() [TestMethod] public void TestOverlap5() { - var network1 = IPNetwork2.Parse("2001:0db8:0:1::/68"); - var network2 = IPNetwork2.Parse("2001:0db8:0:2::/68"); - bool result = network1.Overlap(network2); - bool expected = false; + var network1 = IPNetwork2.Parse("2001:0db8:0:1::/68"); + var network2 = IPNetwork2.Parse("2001:0db8:0:2::/68"); + bool result = network1.Overlap(network2); + bool expected = false; - Assert.AreEqual(expected, result, "overlap"); - } + Assert.AreEqual(expected, result, "overlap"); + } /// /// Test. @@ -2211,13 +2211,13 @@ public void TestOverlap5() [TestMethod] public void TestOverlap6() { - var network1 = IPNetwork2.Parse("2001:0db8:0:1::/68"); - var network2 = IPNetwork2.Parse("2001:0db8:0:2::/62"); - bool result = network1.Overlap(network2); - bool expected = true; + var network1 = IPNetwork2.Parse("2001:0db8:0:1::/68"); + var network2 = IPNetwork2.Parse("2001:0db8:0:2::/62"); + bool result = network1.Overlap(network2); + bool expected = true; - Assert.AreEqual(expected, result, "overlap"); - } + Assert.AreEqual(expected, result, "overlap"); + } #endregion @@ -2229,16 +2229,16 @@ public void TestOverlap6() [TestMethod] public void Example1() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - Console.WriteLine("Network : {0}", ipnetwork.Network); - Console.WriteLine("Netmask : {0}", ipnetwork.Netmask); - Console.WriteLine("Broadcast : {0}", ipnetwork.Broadcast); - Console.WriteLine("FirstUsable : {0}", ipnetwork.FirstUsable); - Console.WriteLine("LastUsable : {0}", ipnetwork.LastUsable); - Console.WriteLine("Usable : {0}", ipnetwork.Usable); - Console.WriteLine("Cidr : {0}", ipnetwork.Cidr); - } + Console.WriteLine("Network : {0}", ipnetwork.Network); + Console.WriteLine("Netmask : {0}", ipnetwork.Netmask); + Console.WriteLine("Broadcast : {0}", ipnetwork.Broadcast); + Console.WriteLine("FirstUsable : {0}", ipnetwork.FirstUsable); + Console.WriteLine("LastUsable : {0}", ipnetwork.LastUsable); + Console.WriteLine("Usable : {0}", ipnetwork.Usable); + Console.WriteLine("Cidr : {0}", ipnetwork.Cidr); + } /// /// Test. @@ -2246,30 +2246,30 @@ public void Example1() [TestMethod] public void Example2() { - var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); - var ipaddress = IPAddress.Parse("2001:0db8::1"); - var ipaddress2 = IPAddress.Parse("2001:0db9::1"); + var ipaddress = IPAddress.Parse("2001:0db8::1"); + var ipaddress2 = IPAddress.Parse("2001:0db9::1"); - var ipnetwork2 = IPNetwork2.Parse("2001:0db8::1/128"); - var ipnetwork3 = IPNetwork2.Parse("2001:0db9::1/64"); + var ipnetwork2 = IPNetwork2.Parse("2001:0db8::1/128"); + var ipnetwork3 = IPNetwork2.Parse("2001:0db9::1/64"); - bool contains1 = ipnetwork.Contains(ipaddress); - bool contains2 = ipnetwork.Contains(ipaddress2); - bool contains3 = ipnetwork.Contains(ipnetwork2); - bool contains4 = ipnetwork.Contains(ipnetwork3); + bool contains1 = ipnetwork.Contains(ipaddress); + bool contains2 = ipnetwork.Contains(ipaddress2); + bool contains3 = ipnetwork.Contains(ipnetwork2); + bool contains4 = ipnetwork.Contains(ipnetwork3); - bool overlap1 = ipnetwork.Overlap(ipnetwork2); - bool overlap2 = ipnetwork.Overlap(ipnetwork3); + bool overlap1 = ipnetwork.Overlap(ipnetwork2); + bool overlap2 = ipnetwork.Overlap(ipnetwork3); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress, contains1); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress2, contains2); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipnetwork2, contains3); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipnetwork3, contains4); + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress, contains1); + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress2, contains2); + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipnetwork2, contains3); + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipnetwork3, contains4); - Console.WriteLine("{0} overlap {1} : {2}", ipnetwork, ipnetwork2, overlap1); - Console.WriteLine("{0} overlap {1} : {2}", ipnetwork, ipnetwork3, overlap2); - } + Console.WriteLine("{0} overlap {1} : {2}", ipnetwork, ipnetwork2, overlap1); + Console.WriteLine("{0} overlap {1} : {2}", ipnetwork, ipnetwork3, overlap2); + } /// /// Test. @@ -2277,20 +2277,20 @@ public void Example2() [TestMethod] public void Example4() { - var wholeInternet = IPNetwork2.Parse("::/0"); - byte newCidr = 2; - IPNetworkCollection subneted = wholeInternet.Subnet(newCidr); + var wholeInternet = IPNetwork2.Parse("::/0"); + byte newCidr = 2; + IPNetworkCollection subneted = wholeInternet.Subnet(newCidr); - Console.WriteLine("{0} was subnetted into {1} subnets", wholeInternet, subneted.Count); - Console.WriteLine("First: {0}", subneted[0]); - Console.WriteLine("Last : {0}", subneted[subneted.Count - 1]); - Console.WriteLine("All :"); + Console.WriteLine("{0} was subnetted into {1} subnets", wholeInternet, subneted.Count); + Console.WriteLine("First: {0}", subneted[0]); + Console.WriteLine("Last : {0}", subneted[subneted.Count - 1]); + Console.WriteLine("All :"); - foreach (IPNetwork2 ipnetwork in subneted) - { - Console.WriteLine("{0}", ipnetwork); - } + foreach (IPNetwork2 ipnetwork in subneted) + { + Console.WriteLine("{0}", ipnetwork); } + } /// /// Test. @@ -2298,12 +2298,12 @@ public void Example4() [TestMethod] public void Example5() { - var ipnetwork1 = IPNetwork2.Parse("2001:0db8::/64"); - var ipnetwork2 = IPNetwork2.Parse("2001:0db9::/64"); - IPNetwork2[] ipnetwork3 = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2 }); + var ipnetwork1 = IPNetwork2.Parse("2001:0db8::/64"); + var ipnetwork2 = IPNetwork2.Parse("2001:0db9::/64"); + IPNetwork2[] ipnetwork3 = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2 }); - Console.WriteLine("{0} + {1} = {2}", ipnetwork1, ipnetwork2, ipnetwork3[0]); - } + Console.WriteLine("{0} + {1} = {2}", ipnetwork1, ipnetwork2, ipnetwork3[0]); + } /// /// Test. @@ -2311,17 +2311,17 @@ public void Example5() [TestMethod] public void Example6() { - var ipnetwork = IPNetwork2.Parse("fe80::202:b3ff:fe1e:8329/24"); + var ipnetwork = IPNetwork2.Parse("fe80::202:b3ff:fe1e:8329/24"); - var ipaddress = IPAddress.Parse("2001:db8::"); - var ipaddress2 = IPAddress.Parse("fe80::202:b3ff:fe1e:1"); + var ipaddress = IPAddress.Parse("2001:db8::"); + var ipaddress2 = IPAddress.Parse("fe80::202:b3ff:fe1e:1"); - bool contains1 = ipnetwork.Contains(ipaddress); - bool contains2 = ipnetwork.Contains(ipaddress2); + bool contains1 = ipnetwork.Contains(ipaddress); + bool contains2 = ipnetwork.Contains(ipaddress2); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress, contains1); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress2, contains2); - } + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress, contains1); + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress2, contains2); + } /// /// Test. @@ -2329,14 +2329,14 @@ public void Example6() [TestMethod] public void Example8() { - var network = IPNetwork2.Parse("::/124"); - IPNetworkCollection ips = network.Subnet(128); + var network = IPNetwork2.Parse("::/124"); + IPNetworkCollection ips = network.Subnet(128); - foreach (IPNetwork2 ip in ips) - { - Console.WriteLine("{0}", ip); - } + foreach (IPNetwork2 ip in ips) + { + Console.WriteLine("{0}", ip); } + } /// /// Test. @@ -2344,14 +2344,14 @@ public void Example8() [TestMethod] public void Example11() { - var defaultParse = IPNetwork2.Parse("::1"); - var classFullParse = IPNetwork2.Parse("::1", CidrGuess.ClassFull); - var classLessParse = IPNetwork2.Parse("::1", CidrGuess.ClassLess); + var defaultParse = IPNetwork2.Parse("::1"); + var classFullParse = IPNetwork2.Parse("::1", CidrGuess.ClassFull); + var classLessParse = IPNetwork2.Parse("::1", CidrGuess.ClassLess); - Console.WriteLine("IPV6 Default Parse : {0}", defaultParse); - Console.WriteLine("IPV6 ClassFull Parse : {0}", classFullParse); - Console.WriteLine("IPV6 ClassLess Parse : {0}", classLessParse); - } + Console.WriteLine("IPV6 Default Parse : {0}", defaultParse); + Console.WriteLine("IPV6 ClassFull Parse : {0}", classFullParse); + Console.WriteLine("IPV6 ClassLess Parse : {0}", classLessParse); + } #endregion @@ -2363,12 +2363,12 @@ public void Example11() [TestMethod] public void TestToString() { - var ipnetwork = IPNetwork2.Parse("2001:0db8:0000:0000:0000:0000:0000:0000/32"); - string expected = "2001:db8::/32"; - string result = ipnetwork.ToString(); + var ipnetwork = IPNetwork2.Parse("2001:0db8:0000:0000:0000:0000:0000:0000/32"); + string expected = "2001:db8::/32"; + string result = ipnetwork.ToString(); - Assert.AreEqual(expected, result, "ToString"); - } + Assert.AreEqual(expected, result, "ToString"); + } /// /// Test. @@ -2376,12 +2376,12 @@ public void TestToString() [TestMethod] public void TestToString1() { - var ipnetwork = IPNetwork2.Parse("2001:0db8:1:2:3:4:5:6/32"); - string expected = "2001:db8::/32"; - string result = ipnetwork.ToString(); + var ipnetwork = IPNetwork2.Parse("2001:0db8:1:2:3:4:5:6/32"); + string expected = "2001:db8::/32"; + string result = ipnetwork.ToString(); - Assert.AreEqual(expected, result, "ToString"); - } + Assert.AreEqual(expected, result, "ToString"); + } /// /// Test. @@ -2389,12 +2389,12 @@ public void TestToString1() [TestMethod] public void TestToString2() { - var ipnetwork = IPNetwork2.Parse("2001:0db8:1:2:3:4:5:6/64"); - string expected = "2001:db8:1:2::/64"; - string result = ipnetwork.ToString(); + var ipnetwork = IPNetwork2.Parse("2001:0db8:1:2:3:4:5:6/64"); + string expected = "2001:db8:1:2::/64"; + string result = ipnetwork.ToString(); - Assert.AreEqual(expected, result, "ToString"); - } + Assert.AreEqual(expected, result, "ToString"); + } /// /// Test. @@ -2402,12 +2402,12 @@ public void TestToString2() [TestMethod] public void TestToString3() { - var ipnetwork = IPNetwork2.Parse("2001:0db8:1:2:3:4:5:6/100"); - string expected = "2001:db8:1:2:3:4::/100"; - string result = ipnetwork.ToString(); + var ipnetwork = IPNetwork2.Parse("2001:0db8:1:2:3:4:5:6/100"); + string expected = "2001:db8:1:2:3:4::/100"; + string result = ipnetwork.ToString(); - Assert.AreEqual(expected, result, "ToString"); - } + Assert.AreEqual(expected, result, "ToString"); + } #endregion @@ -2420,11 +2420,11 @@ public void TestToString3() [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestSubnet3() { - var ipnetwork = IPNetwork2.Parse("::"); - byte cidr = 129; + var ipnetwork = IPNetwork2.Parse("::"); + byte cidr = 129; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - } + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + } /// /// Test. @@ -2433,11 +2433,11 @@ public void TestSubnet3() [ExpectedException(typeof(ArgumentException))] public void TestSubnet4() { - var ipnetwork = IPNetwork2.Parse("::"); - byte cidr = 1; + var ipnetwork = IPNetwork2.Parse("::"); + byte cidr = 1; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - } + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + } /// /// Test. @@ -2445,14 +2445,14 @@ public void TestSubnet4() [TestMethod] public void TestSubnet5() { - var ipnetwork = IPNetwork2.Parse("1:1:1:1:1:1:1:1"); - byte cidr = 65; + var ipnetwork = IPNetwork2.Parse("1:1:1:1:1:1:1:1"); + byte cidr = 65; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - Assert.AreEqual(2, subnets.Count, "count"); - Assert.AreEqual("1:1:1:1::/65", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("1:1:1:1:8000::/65", subnets[1].ToString(), "subnet2"); - } + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + Assert.AreEqual(2, subnets.Count, "count"); + Assert.AreEqual("1:1:1:1::/65", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("1:1:1:1:8000::/65", subnets[1].ToString(), "subnet2"); + } /// /// Test. @@ -2460,28 +2460,28 @@ public void TestSubnet5() [TestMethod] public void TestSubnet6() { - var ipnetwork = IPNetwork2.Parse("1:1:1:1:1:1:1:1"); - byte cidr = 68; - - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - Assert.AreEqual(16, subnets.Count, "count"); - Assert.AreEqual("1:1:1:1::/68", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("1:1:1:1:1000::/68", subnets[1].ToString(), "subnet2"); - Assert.AreEqual("1:1:1:1:2000::/68", subnets[2].ToString(), "subnet3"); - Assert.AreEqual("1:1:1:1:3000::/68", subnets[3].ToString(), "subnet4"); - Assert.AreEqual("1:1:1:1:4000::/68", subnets[4].ToString(), "subnet5"); - Assert.AreEqual("1:1:1:1:5000::/68", subnets[5].ToString(), "subnet6"); - Assert.AreEqual("1:1:1:1:6000::/68", subnets[6].ToString(), "subnet7"); - Assert.AreEqual("1:1:1:1:7000::/68", subnets[7].ToString(), "subnet8"); - Assert.AreEqual("1:1:1:1:8000::/68", subnets[8].ToString(), "subnet9"); - Assert.AreEqual("1:1:1:1:9000::/68", subnets[9].ToString(), "subnet10"); - Assert.AreEqual("1:1:1:1:a000::/68", subnets[10].ToString(), "subnet11"); - Assert.AreEqual("1:1:1:1:b000::/68", subnets[11].ToString(), "subnet12"); - Assert.AreEqual("1:1:1:1:c000::/68", subnets[12].ToString(), "subnet13"); - Assert.AreEqual("1:1:1:1:d000::/68", subnets[13].ToString(), "subnet14"); - Assert.AreEqual("1:1:1:1:e000::/68", subnets[14].ToString(), "subnet15"); - Assert.AreEqual("1:1:1:1:f000::/68", subnets[15].ToString(), "subnet16"); - } + var ipnetwork = IPNetwork2.Parse("1:1:1:1:1:1:1:1"); + byte cidr = 68; + + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + Assert.AreEqual(16, subnets.Count, "count"); + Assert.AreEqual("1:1:1:1::/68", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("1:1:1:1:1000::/68", subnets[1].ToString(), "subnet2"); + Assert.AreEqual("1:1:1:1:2000::/68", subnets[2].ToString(), "subnet3"); + Assert.AreEqual("1:1:1:1:3000::/68", subnets[3].ToString(), "subnet4"); + Assert.AreEqual("1:1:1:1:4000::/68", subnets[4].ToString(), "subnet5"); + Assert.AreEqual("1:1:1:1:5000::/68", subnets[5].ToString(), "subnet6"); + Assert.AreEqual("1:1:1:1:6000::/68", subnets[6].ToString(), "subnet7"); + Assert.AreEqual("1:1:1:1:7000::/68", subnets[7].ToString(), "subnet8"); + Assert.AreEqual("1:1:1:1:8000::/68", subnets[8].ToString(), "subnet9"); + Assert.AreEqual("1:1:1:1:9000::/68", subnets[9].ToString(), "subnet10"); + Assert.AreEqual("1:1:1:1:a000::/68", subnets[10].ToString(), "subnet11"); + Assert.AreEqual("1:1:1:1:b000::/68", subnets[11].ToString(), "subnet12"); + Assert.AreEqual("1:1:1:1:c000::/68", subnets[12].ToString(), "subnet13"); + Assert.AreEqual("1:1:1:1:d000::/68", subnets[13].ToString(), "subnet14"); + Assert.AreEqual("1:1:1:1:e000::/68", subnets[14].ToString(), "subnet15"); + Assert.AreEqual("1:1:1:1:f000::/68", subnets[15].ToString(), "subnet16"); + } /// /// Test. @@ -2489,14 +2489,14 @@ public void TestSubnet6() [TestMethod] public void TestSubnet7() { - var ipnetwork = IPNetwork2.Parse("1:1:1:1:1:1:1:1"); - byte cidr = 72; + var ipnetwork = IPNetwork2.Parse("1:1:1:1:1:1:1:1"); + byte cidr = 72; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - Assert.AreEqual(256, subnets.Count, "count"); - Assert.AreEqual("1:1:1:1::/72", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("1:1:1:1:ff00::/72", subnets[255].ToString(), "subnet256"); - } + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + Assert.AreEqual(256, subnets.Count, "count"); + Assert.AreEqual("1:1:1:1::/72", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("1:1:1:1:ff00::/72", subnets[255].ToString(), "subnet256"); + } /// /// Test. @@ -2504,15 +2504,15 @@ public void TestSubnet7() [TestMethod] public void TestSubnet9() { - var ipnetwork = IPNetwork2.Parse("2001:db08:1:1:1:1:1:1"); - byte cidr = 128; - var count = BigInteger.Pow(2, ipnetwork.Cidr); - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - Assert.AreEqual(count, subnets.Count, "count"); - Assert.AreEqual("2001:db08:1:1::/128", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("2001:db08:1:1::ff/128", subnets[255].ToString(), "subnet256"); - Assert.AreEqual("2001:db08:1:1:ffff:ffff:ffff:ffff/128", subnets[count - 1].ToString(), "last"); - } + var ipnetwork = IPNetwork2.Parse("2001:db08:1:1:1:1:1:1"); + byte cidr = 128; + var count = BigInteger.Pow(2, ipnetwork.Cidr); + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + Assert.AreEqual(count, subnets.Count, "count"); + Assert.AreEqual("2001:db08:1:1::/128", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("2001:db08:1:1::ff/128", subnets[255].ToString(), "subnet256"); + Assert.AreEqual("2001:db08:1:1:ffff:ffff:ffff:ffff/128", subnets[count - 1].ToString(), "last"); + } /// /// Test. @@ -2520,16 +2520,16 @@ public void TestSubnet9() [TestMethod] public void TestSubnet10() { - var ipnetwork = IPNetwork2.Parse("2001:db08::/0"); - byte cidr = 128; - var count = BigInteger.Pow(2, 128 - ipnetwork.Cidr); + var ipnetwork = IPNetwork2.Parse("2001:db08::/0"); + byte cidr = 128; + var count = BigInteger.Pow(2, 128 - ipnetwork.Cidr); - // Here I spawm a OOM dragon ! beware of the beast ! - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - Assert.AreEqual(count, subnets.Count, "count"); - Assert.AreEqual("::/128", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128", subnets[count - 1].ToString(), "last"); - } + // Here I spawm a OOM dragon ! beware of the beast ! + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + Assert.AreEqual(count, subnets.Count, "count"); + Assert.AreEqual("::/128", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128", subnets[count - 1].ToString(), "last"); + } /// /// Test. @@ -2537,16 +2537,16 @@ public void TestSubnet10() [TestMethod] public void TestSubnet12() { - var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); - byte cidr = 70; - int i = -1; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - foreach (IPNetwork2 ipn in subnets) - { - i++; - Assert.AreEqual(subnets[i], ipn, "subnet"); - } + var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); + byte cidr = 70; + int i = -1; + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + foreach (IPNetwork2 ipn in subnets) + { + i++; + Assert.AreEqual(subnets[i], ipn, "subnet"); } + } /// /// Test. @@ -2555,11 +2555,11 @@ public void TestSubnet12() [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestSubnet13() { - var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); - byte cidr = 70; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - IPNetwork2 error = subnets[1000]; - } + var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); + byte cidr = 70; + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + IPNetwork2 error = subnets[1000]; + } /// /// Test. @@ -2567,18 +2567,18 @@ public void TestSubnet13() [TestMethod] public void TestSubnet14() { - var network = IPNetwork2.Parse("15.0.0.0/8"); - IPNetworkCollection subnets = network.Subnet(12); - Assert.AreEqual(subnets[0].ToString(), "15.0.0.0/12", "subnets[0]"); - Assert.AreEqual(subnets[1].ToString(), "15.16.0.0/12", "subnets[1]"); - Assert.AreEqual(subnets[2].ToString(), "15.32.0.0/12", "subnets[2]"); - Assert.AreEqual(subnets[15].ToString(), "15.240.0.0/12", "subnets[15]"); - - foreach (IPNetwork2 ipn in subnets) - { - Console.WriteLine(ipn); - } + var network = IPNetwork2.Parse("15.0.0.0/8"); + IPNetworkCollection subnets = network.Subnet(12); + Assert.AreEqual(subnets[0].ToString(), "15.0.0.0/12", "subnets[0]"); + Assert.AreEqual(subnets[1].ToString(), "15.16.0.0/12", "subnets[1]"); + Assert.AreEqual(subnets[2].ToString(), "15.32.0.0/12", "subnets[2]"); + Assert.AreEqual(subnets[15].ToString(), "15.240.0.0/12", "subnets[15]"); + + foreach (IPNetwork2 ipn in subnets) + { + Console.WriteLine(ipn); } + } #endregion @@ -2590,14 +2590,14 @@ public void TestSubnet14() [TestMethod] public void TestTrySubnet3() { - var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); - byte cidr = 255; + var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); + byte cidr = 255; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + IPNetworkCollection subnets = null; + bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); - Assert.AreEqual(false, subnetted, "subnetted"); - } + Assert.AreEqual(false, subnetted, "subnetted"); + } /// /// Test. @@ -2605,14 +2605,14 @@ public void TestTrySubnet3() [TestMethod] public void TestTrySubnet4() { - var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); - byte cidr = 63; + var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); + byte cidr = 63; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + IPNetworkCollection subnets = null; + bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); - Assert.AreEqual(false, subnetted, "subnetted"); - } + Assert.AreEqual(false, subnetted, "subnetted"); + } /// /// Test. @@ -2620,17 +2620,17 @@ public void TestTrySubnet4() [TestMethod] public void TestTrySubnet5() { - var ipnetwork = IPNetwork2.Parse("2001:db8::/64"); - byte cidr = 65; + var ipnetwork = IPNetwork2.Parse("2001:db8::/64"); + byte cidr = 65; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + IPNetworkCollection subnets = null; + bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); - Assert.AreEqual(true, subnetted, "subnetted"); - Assert.AreEqual(2, subnets.Count, "count"); - Assert.AreEqual("2001:db8::/65", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("2001:db8:0:0:8000::/65", subnets[1].ToString(), "subnet2"); - } + Assert.AreEqual(true, subnetted, "subnetted"); + Assert.AreEqual(2, subnets.Count, "count"); + Assert.AreEqual("2001:db8::/65", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("2001:db8:0:0:8000::/65", subnets[1].ToString(), "subnet2"); + } /// /// Test. @@ -2638,31 +2638,31 @@ public void TestTrySubnet5() [TestMethod] public void TestTrySubnet6() { - var ipnetwork = IPNetwork2.Parse("2001:db8::/64"); - byte cidr = 68; - - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); - - Assert.AreEqual(true, subnetted, "subnetted"); - Assert.AreEqual(16, subnets.Count, "count"); - Assert.AreEqual("2001:db8::/68", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("2001:db8:0:0:1000::/68", subnets[1].ToString(), "subnet2"); - Assert.AreEqual("2001:db8:0:0:2000::/68", subnets[2].ToString(), "subnet3"); - Assert.AreEqual("2001:db8:0:0:3000::/68", subnets[3].ToString(), "subnet4"); - Assert.AreEqual("2001:db8:0:0:4000::/68", subnets[4].ToString(), "subnet5"); - Assert.AreEqual("2001:db8:0:0:5000::/68", subnets[5].ToString(), "subnet6"); - Assert.AreEqual("2001:db8:0:0:6000::/68", subnets[6].ToString(), "subnet7"); - Assert.AreEqual("2001:db8:0:0:7000::/68", subnets[7].ToString(), "subnet8"); - Assert.AreEqual("2001:db8:0:0:8000::/68", subnets[8].ToString(), "subnet9"); - Assert.AreEqual("2001:db8:0:0:9000::/68", subnets[9].ToString(), "subnet10"); - Assert.AreEqual("2001:db8:0:0:a000::/68", subnets[10].ToString(), "subnet11"); - Assert.AreEqual("2001:db8:0:0:b000::/68", subnets[11].ToString(), "subnet12"); - Assert.AreEqual("2001:db8:0:0:c000::/68", subnets[12].ToString(), "subnet13"); - Assert.AreEqual("2001:db8:0:0:d000::/68", subnets[13].ToString(), "subnet14"); - Assert.AreEqual("2001:db8:0:0:e000::/68", subnets[14].ToString(), "subnet15"); - Assert.AreEqual("2001:db8:0:0:f000::/68", subnets[15].ToString(), "subnet16"); - } + var ipnetwork = IPNetwork2.Parse("2001:db8::/64"); + byte cidr = 68; + + IPNetworkCollection subnets = null; + bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + + Assert.AreEqual(true, subnetted, "subnetted"); + Assert.AreEqual(16, subnets.Count, "count"); + Assert.AreEqual("2001:db8::/68", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("2001:db8:0:0:1000::/68", subnets[1].ToString(), "subnet2"); + Assert.AreEqual("2001:db8:0:0:2000::/68", subnets[2].ToString(), "subnet3"); + Assert.AreEqual("2001:db8:0:0:3000::/68", subnets[3].ToString(), "subnet4"); + Assert.AreEqual("2001:db8:0:0:4000::/68", subnets[4].ToString(), "subnet5"); + Assert.AreEqual("2001:db8:0:0:5000::/68", subnets[5].ToString(), "subnet6"); + Assert.AreEqual("2001:db8:0:0:6000::/68", subnets[6].ToString(), "subnet7"); + Assert.AreEqual("2001:db8:0:0:7000::/68", subnets[7].ToString(), "subnet8"); + Assert.AreEqual("2001:db8:0:0:8000::/68", subnets[8].ToString(), "subnet9"); + Assert.AreEqual("2001:db8:0:0:9000::/68", subnets[9].ToString(), "subnet10"); + Assert.AreEqual("2001:db8:0:0:a000::/68", subnets[10].ToString(), "subnet11"); + Assert.AreEqual("2001:db8:0:0:b000::/68", subnets[11].ToString(), "subnet12"); + Assert.AreEqual("2001:db8:0:0:c000::/68", subnets[12].ToString(), "subnet13"); + Assert.AreEqual("2001:db8:0:0:d000::/68", subnets[13].ToString(), "subnet14"); + Assert.AreEqual("2001:db8:0:0:e000::/68", subnets[14].ToString(), "subnet15"); + Assert.AreEqual("2001:db8:0:0:f000::/68", subnets[15].ToString(), "subnet16"); + } #endregion @@ -2674,16 +2674,16 @@ public void TestTrySubnet6() [TestMethod] public void TestTrySupernet1() { - var network1 = IPNetwork2.Parse("2001:db8::/65"); - var network2 = IPNetwork2.Parse("2001:db8:0:0:8000::/65"); - var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); - IPNetwork2 supernet; - bool supernetted = true; - bool result = network1.TrySupernet(network2, out supernet); + var network1 = IPNetwork2.Parse("2001:db8::/65"); + var network2 = IPNetwork2.Parse("2001:db8:0:0:8000::/65"); + var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); + IPNetwork2 supernet; + bool supernetted = true; + bool result = network1.TrySupernet(network2, out supernet); - Assert.AreEqual(supernetted, result, "supernetted"); - Assert.AreEqual(supernetExpected, supernet, "supernet"); - } + Assert.AreEqual(supernetted, result, "supernetted"); + Assert.AreEqual(supernetExpected, supernet, "supernet"); + } /// /// Test. @@ -2692,13 +2692,13 @@ public void TestTrySupernet1() [ExpectedException(typeof(ArgumentNullException))] public void TestTrySupernet2() { - IPNetwork2 network1 = null; - var network2 = IPNetwork2.Parse("2001:db8::/64"); - IPNetwork2 supernet; + IPNetwork2 network1 = null; + var network2 = IPNetwork2.Parse("2001:db8::/64"); + IPNetwork2 supernet; #pragma warning disable 0618 - bool result = IPNetwork2.TrySupernet(network1, network2, out supernet); + bool result = IPNetwork2.TrySupernet(network1, network2, out supernet); #pragma warning restore 0618 - } + } /// /// Test. @@ -2706,16 +2706,16 @@ public void TestTrySupernet2() [TestMethod] public void TestTrySupernet3() { - var network1 = IPNetwork2.Parse("2001:db8::/64"); - IPNetwork2 network2 = null; - IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; - bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + var network1 = IPNetwork2.Parse("2001:db8::/64"); + IPNetwork2 network2 = null; + IPNetwork2 supernetExpected = null; + IPNetwork2 supernet; + bool parsed = false; + bool result = network1.TrySupernet(network2, out supernet); - Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + Assert.AreEqual(supernetExpected, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } /// /// Test. @@ -2723,16 +2723,16 @@ public void TestTrySupernet3() [TestMethod] public void TestTrySupernet4() { - var network1 = IPNetwork2.Parse("2001:db8::/64"); - var network2 = IPNetwork2.Parse("2001:db9::/65"); - IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; - bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + var network1 = IPNetwork2.Parse("2001:db8::/64"); + var network2 = IPNetwork2.Parse("2001:db9::/65"); + IPNetwork2 supernetExpected = null; + IPNetwork2 supernet; + bool parsed = false; + bool result = network1.TrySupernet(network2, out supernet); - Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + Assert.AreEqual(supernetExpected, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } /// /// Test. @@ -2740,16 +2740,16 @@ public void TestTrySupernet4() [TestMethod] public void TestTrySupernet5() { - var network1 = IPNetwork2.Parse("2001:db8::/64"); - var network2 = IPNetwork2.Parse("2001:dba::/64"); - IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; - bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + var network1 = IPNetwork2.Parse("2001:db8::/64"); + var network2 = IPNetwork2.Parse("2001:dba::/64"); + IPNetwork2 supernetExpected = null; + IPNetwork2 supernet; + bool parsed = false; + bool result = network1.TrySupernet(network2, out supernet); - Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + Assert.AreEqual(supernetExpected, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } /// /// Test. @@ -2757,16 +2757,16 @@ public void TestTrySupernet5() [TestMethod] public void TestTrySupernet6() { - var network1 = IPNetwork2.Parse("2001:db8::/64"); - var network2 = IPNetwork2.Parse("2001:db8::1/65"); - var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); - IPNetwork2 supernet; - bool parsed = true; - bool result = network1.TrySupernet(network2, out supernet); + var network1 = IPNetwork2.Parse("2001:db8::/64"); + var network2 = IPNetwork2.Parse("2001:db8::1/65"); + var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); + IPNetwork2 supernet; + bool parsed = true; + bool result = network1.TrySupernet(network2, out supernet); - Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + Assert.AreEqual(supernetExpected, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } /// /// Test. @@ -2774,16 +2774,16 @@ public void TestTrySupernet6() [TestMethod] public void TestTrySupernet8() { - var network1 = IPNetwork2.Parse("2001:db0::/64"); - var network2 = IPNetwork2.Parse("2001:dbf::/64"); - IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; - bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + var network1 = IPNetwork2.Parse("2001:db0::/64"); + var network2 = IPNetwork2.Parse("2001:dbf::/64"); + IPNetwork2 supernetExpected = null; + IPNetwork2 supernet; + bool parsed = false; + bool result = network1.TrySupernet(network2, out supernet); - Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + Assert.AreEqual(supernetExpected, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } /// /// Test. @@ -2791,18 +2791,18 @@ public void TestTrySupernet8() [TestMethod] public void TestTrySupernet9() { - var network1 = IPNetwork2.Parse("192.168.1.1/24"); - var network2 = IPNetwork2.Parse("192.168.2.1/24"); - IPNetwork2[] network3 = { network1, network2 }; - IPNetwork2[] supernetExpected = { network1, network2 }; - IPNetwork2[] supernet; - bool parsed = true; - bool result = IPNetwork2.TrySupernet(network3, out supernet); - - Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); - Assert.AreEqual(supernetExpected[1], supernet[1], "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + var network1 = IPNetwork2.Parse("192.168.1.1/24"); + var network2 = IPNetwork2.Parse("192.168.2.1/24"); + IPNetwork2[] network3 = { network1, network2 }; + IPNetwork2[] supernetExpected = { network1, network2 }; + IPNetwork2[] supernet; + bool parsed = true; + bool result = IPNetwork2.TrySupernet(network3, out supernet); + + Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); + Assert.AreEqual(supernetExpected[1], supernet[1], "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } /// /// Test. @@ -2810,17 +2810,17 @@ public void TestTrySupernet9() [TestMethod] public void TestTrySupernet10() { - var network1 = IPNetwork2.Parse("2001:db8:0000::/65"); - var network2 = IPNetwork2.Parse("2001:db8:0:0:8000::/65"); - IPNetwork2[] network3 = { network1, network2 }; - IPNetwork2[] supernetExpected = { IPNetwork2.Parse("2001:db8::/64") }; - IPNetwork2[] supernet; - bool parsed = true; - bool result = IPNetwork2.TrySupernet(network3, out supernet); + var network1 = IPNetwork2.Parse("2001:db8:0000::/65"); + var network2 = IPNetwork2.Parse("2001:db8:0:0:8000::/65"); + IPNetwork2[] network3 = { network1, network2 }; + IPNetwork2[] supernetExpected = { IPNetwork2.Parse("2001:db8::/64") }; + IPNetwork2[] supernet; + bool parsed = true; + bool result = IPNetwork2.TrySupernet(network3, out supernet); - Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } /// /// Test. @@ -2828,15 +2828,15 @@ public void TestTrySupernet10() [TestMethod] public void TestTrySupernet11() { - IPNetwork2[] network3 = null; - IPNetwork2[] supernetExpected = { IPNetwork2.Parse("2001:db8::/64") }; - IPNetwork2[] supernet; - bool parsed = false; - bool result = IPNetwork2.TrySupernet(network3, out supernet); + IPNetwork2[] network3 = null; + IPNetwork2[] supernetExpected = { IPNetwork2.Parse("2001:db8::/64") }; + IPNetwork2[] supernet; + bool parsed = false; + bool result = IPNetwork2.TrySupernet(network3, out supernet); - Assert.AreEqual(null, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } + Assert.AreEqual(null, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } #endregion @@ -2848,12 +2848,12 @@ public void TestTrySupernet11() [TestMethod] public void TestTryGuessCidrNull() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr(null, out cidr); + byte cidr; + bool parsed = IPNetwork2.TryGuessCidr(null, out cidr); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(0, cidr, "cidr"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(0, cidr, "cidr"); + } /// /// Test. @@ -2861,12 +2861,12 @@ public void TestTryGuessCidrNull() [TestMethod] public void TestTryGuessCidr1() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("::", out cidr); + byte cidr; + bool parsed = IPNetwork2.TryGuessCidr("::", out cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(64, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(64, cidr, "cidr"); + } /// /// Test. @@ -2874,12 +2874,12 @@ public void TestTryGuessCidr1() [TestMethod] public void TestTryGuessCidr2() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("2001:0db8::", out cidr); + byte cidr; + bool parsed = IPNetwork2.TryGuessCidr("2001:0db8::", out cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(64, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(64, cidr, "cidr"); + } #endregion @@ -2891,10 +2891,10 @@ public void TestTryGuessCidr2() [TestMethod] public void Total32() { - var network = IPNetwork2.Parse("::/128"); - int total = 1; - Assert.AreEqual(total, network.Total, "Total"); - } + var network = IPNetwork2.Parse("::/128"); + int total = 1; + Assert.AreEqual(total, network.Total, "Total"); + } /// /// Test. @@ -2902,10 +2902,10 @@ public void Total32() [TestMethod] public void Total31() { - var network = IPNetwork2.Parse("::/127"); - int total = 2; - Assert.AreEqual(total, network.Total, "Total"); - } + var network = IPNetwork2.Parse("::/127"); + int total = 2; + Assert.AreEqual(total, network.Total, "Total"); + } /// /// Test. @@ -2913,10 +2913,10 @@ public void Total31() [TestMethod] public void Total30() { - var network = IPNetwork2.Parse("::/126"); - int total = 4; - Assert.AreEqual(total, network.Total, "Total"); - } + var network = IPNetwork2.Parse("::/126"); + int total = 4; + Assert.AreEqual(total, network.Total, "Total"); + } /// /// Test. @@ -2924,10 +2924,10 @@ public void Total30() [TestMethod] public void Total24() { - var network = IPNetwork2.Parse("::/120"); - int total = 256; - Assert.AreEqual(total, network.Total, "Total"); - } + var network = IPNetwork2.Parse("::/120"); + int total = 256; + Assert.AreEqual(total, network.Total, "Total"); + } /// /// Test. @@ -2935,10 +2935,10 @@ public void Total24() [TestMethod] public void Total16() { - var network = IPNetwork2.Parse("::/112"); - int total = 65536; - Assert.AreEqual(total, network.Total, "Total"); - } + var network = IPNetwork2.Parse("::/112"); + int total = 65536; + Assert.AreEqual(total, network.Total, "Total"); + } /// /// Test. @@ -2946,10 +2946,10 @@ public void Total16() [TestMethod] public void Total8() { - var network = IPNetwork2.Parse("::/104"); - int total = 16777216; - Assert.AreEqual(total, network.Total, "Total"); - } + var network = IPNetwork2.Parse("::/104"); + int total = 16777216; + Assert.AreEqual(total, network.Total, "Total"); + } /// /// Test. @@ -2957,10 +2957,10 @@ public void Total8() [TestMethod] public void Total0() { - var network = IPNetwork2.Parse("::/0"); - var total = BigInteger.Pow(2, 128); - Assert.AreEqual(total, network.Total, "Total"); - } + var network = IPNetwork2.Parse("::/0"); + var total = BigInteger.Pow(2, 128); + Assert.AreEqual(total, network.Total, "Total"); + } #endregion @@ -2972,10 +2972,10 @@ public void Total0() [TestMethod] public void Usable32() { - var network = IPNetwork2.Parse("::/128"); - uint usable = 1; - Assert.AreEqual(usable, network.Usable, "Usable"); - } + var network = IPNetwork2.Parse("::/128"); + uint usable = 1; + Assert.AreEqual(usable, network.Usable, "Usable"); + } /// /// Test. @@ -2983,10 +2983,10 @@ public void Usable32() [TestMethod] public void Usable31() { - var network = IPNetwork2.Parse("::/127"); - uint usable = 2; - Assert.AreEqual(usable, network.Usable, "Usable"); - } + var network = IPNetwork2.Parse("::/127"); + uint usable = 2; + Assert.AreEqual(usable, network.Usable, "Usable"); + } /// /// Test. @@ -2994,10 +2994,10 @@ public void Usable31() [TestMethod] public void Usable30() { - var network = IPNetwork2.Parse("::/126"); - uint usable = 4; - Assert.AreEqual(usable, network.Usable, "Usable"); - } + var network = IPNetwork2.Parse("::/126"); + uint usable = 4; + Assert.AreEqual(usable, network.Usable, "Usable"); + } /// /// Test. @@ -3005,10 +3005,10 @@ public void Usable30() [TestMethod] public void Usable24() { - var network = IPNetwork2.Parse("::/120"); - uint usable = 256; - Assert.AreEqual(usable, network.Usable, "Usable"); - } + var network = IPNetwork2.Parse("::/120"); + uint usable = 256; + Assert.AreEqual(usable, network.Usable, "Usable"); + } /// /// Test. @@ -3016,10 +3016,10 @@ public void Usable24() [TestMethod] public void Usable16() { - var network = IPNetwork2.Parse("::/112"); - uint usable = 65536; - Assert.AreEqual(usable, network.Usable, "Usable"); - } + var network = IPNetwork2.Parse("::/112"); + uint usable = 65536; + Assert.AreEqual(usable, network.Usable, "Usable"); + } /// /// Test. @@ -3027,10 +3027,10 @@ public void Usable16() [TestMethod] public void Usable8() { - var network = IPNetwork2.Parse("::/104"); - uint usable = 16777216; - Assert.AreEqual(usable, network.Usable, "Usable"); - } + var network = IPNetwork2.Parse("::/104"); + uint usable = 16777216; + Assert.AreEqual(usable, network.Usable, "Usable"); + } /// /// Test. @@ -3038,10 +3038,10 @@ public void Usable8() [TestMethod] public void Usable0() { - var network = IPNetwork2.Parse("::/0"); - var usable = BigInteger.Pow(2, 128); - Assert.AreEqual(usable, network.Usable, "Usable"); - } + var network = IPNetwork2.Parse("::/0"); + var usable = BigInteger.Pow(2, 128); + Assert.AreEqual(usable, network.Usable, "Usable"); + } #endregion @@ -3053,14 +3053,14 @@ public void Usable0() [TestMethod] public void TryParseCidr1() { - string sidr = "0"; - byte? cidr; - byte? result = 0; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + string sidr = "0"; + byte? cidr; + byte? result = 0; + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(result, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(result, cidr, "cidr"); + } /// /// Test. @@ -3068,15 +3068,15 @@ public void TryParseCidr1() [TestMethod] public void TryParseCidr2() { - string sidr = "sadsd"; - byte? cidr; - byte? result = null; + string sidr = "sadsd"; + byte? cidr; + byte? result = null; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(result, cidr, "cidr"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(result, cidr, "cidr"); + } /// /// Test. @@ -3084,15 +3084,15 @@ public void TryParseCidr2() [TestMethod] public void TryParseCidr33() { - string sidr = "33"; - byte? cidr; - byte result = 33; + string sidr = "33"; + byte? cidr; + byte result = 33; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(result, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(result, cidr, "cidr"); + } /// /// Test. @@ -3100,15 +3100,15 @@ public void TryParseCidr33() [TestMethod] public void TryParseCidr128() { - string sidr = "128"; - byte? cidr; - byte result = 128; + string sidr = "128"; + byte? cidr; + byte result = 128; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(result, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(result, cidr, "cidr"); + } /// /// Test. @@ -3116,15 +3116,15 @@ public void TryParseCidr128() [TestMethod] public void TryParseCidr129() { - string sidr = "129"; - byte? cidr; - byte? result = null; + string sidr = "129"; + byte? cidr; + byte? result = null; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(result, cidr, "cidr"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(result, cidr, "cidr"); + } #endregion } \ No newline at end of file diff --git a/src/TestProject/SerializeDataContractTest.cs b/src/TestProject/SerializeDataContractTest.cs index 5c267173..04103a76 100644 --- a/src/TestProject/SerializeDataContractTest.cs +++ b/src/TestProject/SerializeDataContractTest.cs @@ -16,27 +16,27 @@ public class SerializeDataContractTest [TestMethod] public void Test_Serialize_DataContract() { - var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); + var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); + + string result = DataContractSerializeHelper.Serialize(ipnetwork); + string expected = + $"{Environment.NewLine} 10.0.0.0/8{Environment.NewLine}"; + Assert.AreEqual(expected, result); + } - string result = DataContractSerializeHelper.Serialize(ipnetwork); - string expected = - $"{Environment.NewLine} 10.0.0.0/8{Environment.NewLine}"; - Assert.AreEqual(expected, result); - } - /// /// Test Deserilaization. /// [TestMethod] public void Test_Deserialize_DataContract() { - var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); - string serialized = DataContractSerializeHelper.Serialize(ipnetwork); + var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); + string serialized = DataContractSerializeHelper.Serialize(ipnetwork); - IPNetwork2 result = DataContractSerializeHelper.Deserialize(serialized); + IPNetwork2 result = DataContractSerializeHelper.Deserialize(serialized); - Assert.AreEqual(ipnetwork, result); - } + Assert.AreEqual(ipnetwork, result); + } /// /// Test empty constructor. @@ -44,7 +44,7 @@ public void Test_Deserialize_DataContract() [TestMethod] public void Test_Empty_Constructor() { - var ipnetwork = new IPNetwork2(); - Assert.AreEqual("0.0.0.0/0", ipnetwork.ToString()); - } + var ipnetwork = new IPNetwork2(); + Assert.AreEqual("0.0.0.0/0", ipnetwork.ToString()); + } } \ No newline at end of file From 4b56d10ef7208e76d7de83e32df49ab2f2cc34ca Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sat, 29 Mar 2025 22:20:35 +0100 Subject: [PATCH 16/25] Chore: split IPNetwork2 into multiple partial classes --- src/System.Net.IPNetwork/CidrClassFull.cs | 3 +- src/System.Net.IPNetwork/IPNetwork2.cs | 841 +--------------------- 2 files changed, 2 insertions(+), 842 deletions(-) diff --git a/src/System.Net.IPNetwork/CidrClassFull.cs b/src/System.Net.IPNetwork/CidrClassFull.cs index 64b4ec21..5d717f99 100644 --- a/src/System.Net.IPNetwork/CidrClassFull.cs +++ b/src/System.Net.IPNetwork/CidrClassFull.cs @@ -29,8 +29,7 @@ public sealed class CidrClassFull : ICidrGuess /// true if ip was converted successfully; otherwise, false. public bool TryGuessCidr(string ip, out byte cidr) { - IPAddress ipaddress = null; - bool parsed = IPAddress.TryParse(string.Format("{0}", ip), out ipaddress); + bool parsed = IPAddress.TryParse(string.Format("{0}", ip), out var ipaddress); if (parsed == false) { cidr = 0; diff --git a/src/System.Net.IPNetwork/IPNetwork2.cs b/src/System.Net.IPNetwork/IPNetwork2.cs index 4272ed84..c3f890e4 100644 --- a/src/System.Net.IPNetwork/IPNetwork2.cs +++ b/src/System.Net.IPNetwork/IPNetwork2.cs @@ -9,7 +9,6 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; using System.Runtime.Serialization; -using System.Text.RegularExpressions; /// /// IP Network utility class. @@ -17,840 +16,8 @@ namespace System.Net; /// [Serializable] [CLSCompliant(true)] -public sealed class IPNetwork2 : IComparable, ISerializable +public sealed partial class IPNetwork2 : IComparable, ISerializable { - #region properties - - private readonly object sync = new (); - private readonly int hashCode; - private BigInteger ipaddress; - private byte cidr; - private BigInteger? cachedBroadcast; - - private AddressFamily family; - - /// - /// Gets or sets the value of the IPNetwork property. - /// - [DataMember(Name = "IPNetwork", IsRequired = true)] - public string Value - { - get - { - return this.ToString(); - } - - set - { - var ipnetwork = IPNetwork2.Parse(value); - this.ipaddress = ipnetwork.ipaddress; - this.family = ipnetwork.family; - this.cidr = ipnetwork.cidr; - lock (this.sync) - { - this.cachedBroadcast = null; - } - } - } - - #endregion - - #region accessors - - /// - /// Gets the network address calculated by applying the subnet mask to the IP address. - /// - internal BigInteger InternalNetwork - { - get - { - BigInteger uintNetwork = this.ipaddress & this.InternalNetmask; - return uintNetwork; - } - } - - /// - /// Gets network address. - /// - public IPAddress Network - { - get - { - return IPNetwork2.ToIPAddress(this.InternalNetwork, this.family); - } - } - - /// - /// Gets address Family. - /// - public AddressFamily AddressFamily - { - get - { - return this.family; - } - } - - /// - /// Gets the netmask as a BigInteger representation based on the CIDR and address family. - /// - internal BigInteger InternalNetmask - { - get - { - return IPNetwork2.ToUint(this.cidr, this.family); - } - } - - /// - /// Gets netmask. - /// - public IPAddress Netmask - { - get - { - return IPNetwork2.ToIPAddress(this.InternalNetmask, this.family); - } - } - - /// - /// Gets the broadcast address calculated from the network address and the netmask. - /// - internal BigInteger InternalBroadcast - { - get - { - var cached = this.cachedBroadcast; - if (cached != null) - { - return cached.Value; - } - - lock (this.sync) - { - var cached2 = this.cachedBroadcast; - if (cached2 != null) - { - return cached2.Value; - } - - var network = this.InternalNetwork; - var computed = CreateBroadcast(ref network, this.InternalNetmask, this.family); - this.cachedBroadcast = computed; - return computed; - } - } - } - - /// - /// Gets broadcast address. - /// - public IPAddress Broadcast - { - get - { - if (this.family == Sockets.AddressFamily.InterNetworkV6) - { - return null; - } - - return IPNetwork2.ToIPAddress(this.InternalBroadcast, this.family); - } - } - - /// - /// Gets first usable IP adress in Network. - /// - public IPAddress FirstUsable - { - get - { - BigInteger first = this.family == Sockets.AddressFamily.InterNetworkV6 - ? this.InternalNetwork - : (this.Usable <= 0) - ? this.InternalNetwork - : this.InternalNetwork + 1; - return IPNetwork2.ToIPAddress(first, this.family); - } - } - - /// - /// Gets last usable IP adress in Network. - /// - public IPAddress LastUsable - { - get - { - BigInteger last = this.family == Sockets.AddressFamily.InterNetworkV6 - ? this.InternalBroadcast - : (this.Usable <= 0) - ? this.InternalNetwork - : this.InternalBroadcast - 1; - return IPNetwork2.ToIPAddress(last, this.family); - } - } - - /// - /// Gets number of usable IP adress in Network. - /// - public BigInteger Usable - { - get - { - if (this.family == Sockets.AddressFamily.InterNetworkV6) - { - return this.Total; - } - - byte[] mask = new byte[] { 0xff, 0xff, 0xff, 0xff, 0x00 }; - var bmask = new BigInteger(mask); - BigInteger usableIps = (this.cidr > 30) ? 0 : ((bmask >> this.cidr) - 1); - return usableIps; - } - } - - /// - /// Gets number of IP adress in Network. - /// - public BigInteger Total - { - get - { - int max = this.family == Sockets.AddressFamily.InterNetwork ? 32 : 128; - var count = BigInteger.Pow(2, max - this.cidr); - return count; - } - } - - /// - /// Gets the CIDR netmask notation. - /// - public byte Cidr - { - get - { - return this.cidr; - } - } - - #endregion - - #region constructor - - /// - /// Initializes a new instance of the class with the specified IP address, address family, and CIDR. - /// - /// The IP address of the network. - /// The address family of the network. - /// The CIDR (Classless Inter-Domain Routing) notation of the network. -#if TRAVISCI - public -#else - internal -#endif - IPNetwork2(BigInteger ipaddress, AddressFamily family, byte cidr) - { - this.Init(ipaddress, family, cidr); - this.hashCode = this.ComputeHashCode(); - } - - /// - /// Initializes a new instance of the class. - /// Creates a new IPNetwork. - /// - /// An ipaddress. - /// A byte representing the netmask in cidr format (/24). - /// ipaddress is null. - public IPNetwork2(IPAddress ipaddress, byte cidr) - { - if (ipaddress == null) - { - throw new ArgumentNullException("ipaddress"); - } - - BigInteger uintIpAddress = ToBigInteger(ipaddress); - - this.Init(uintIpAddress, ipaddress.AddressFamily, cidr); - this.hashCode = this.ComputeHashCode(); - } - - private void Init(BigInteger ipaddress, AddressFamily family, byte cidr) - { - int maxCidr = family == AddressFamily.InterNetwork ? 32 : 128; - if (cidr > maxCidr) - { - throw new ArgumentOutOfRangeException("cidr"); - } - - this.ipaddress = ipaddress; - this.family = family; - this.cidr = cidr; - } - - #endregion - - #region parsers - - /// - /// 192.168.168.100 - 255.255.255.0 - /// - /// ``` - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255 - /// ```. - /// - /// - /// A string containing an ip address to convert. - /// A string representing a netmask in std format (255.255.255.0). - /// An IPNetwork equivalent to the network contained in ipaddress/netmask. - public static IPNetwork2 Parse(string ipaddress, string netmask) - { - IPNetwork2.InternalParse(false, ipaddress, netmask, out IPNetwork2 ipnetwork); - return ipnetwork; - } - - /// - /// 192.168.168.100/24 - /// - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255. - /// - /// A string containing an ip address to convert. - /// A byte representing the netmask in cidr format (/24). - /// An IPNetwork equivalent to the network contained in ipaddress/cidr. - public static IPNetwork2 Parse(string ipaddress, byte cidr) - { - IPNetwork2.InternalParse(false, ipaddress, cidr, out IPNetwork2 ipnetwork); - return ipnetwork; - } - - /// - /// 192.168.168.100 255.255.255.0 - /// - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255. - /// - /// A string containing an ip address to convert. - /// A netmask to be used to create the IPNetwork. - /// An IPNetwork equivalent to the network contained in ipaddress/netmask. - public static IPNetwork2 Parse(IPAddress ipaddress, IPAddress netmask) - { - IPNetwork2.InternalParse(false, ipaddress, netmask, out IPNetwork2 ipnetwork); - return ipnetwork; - } - - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// An IPNetwork equivalent to the network contained in string network. - public static IPNetwork2 Parse(string network) - { - IPNetwork2.InternalParse(false, network, CidrGuess.ClassFull, true, out IPNetwork2 ipnetwork); - return ipnetwork; - } - - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// Whether to sanitize network or not. - /// An IPNetwork equivalent to the network contained in string network. - public static IPNetwork2 Parse(string network, bool sanitanize) - { - IPNetwork2.InternalParse(false, network, CidrGuess.ClassFull, sanitanize, out IPNetwork2 ipnetwork); - return ipnetwork; - } - - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// A ICidrGuess implementation that will be used to guess CIDR during converion. - /// An IPNetwork equivalent to the network contained in string network. - public static IPNetwork2 Parse(string network, ICidrGuess cidrGuess) - { - IPNetwork2.InternalParse(false, network, cidrGuess, true, out IPNetwork2 ipnetwork); - return ipnetwork; - } - - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// A ICidrGuess implementation that will be used to guess CIDR during converion. - /// Whether to sanitize network or not. - /// An IPNetwork equivalent to the network contained in string network. - public static IPNetwork2 Parse(string network, ICidrGuess cidrGuess, bool sanitanize) - { - IPNetwork2.InternalParse(false, network, cidrGuess, sanitanize, out IPNetwork2 ipnetwork); - return ipnetwork; - } - - #endregion - - #region TryParse - - /// - /// 192.168.168.100 - 255.255.255.0 - /// - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255. - /// - /// A string containing an ip address to convert. - /// A string containing a netmaks to convert (255.255.255.0). - /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. - /// true if ipaddress/netmask was converted successfully; otherwise, false.. - public static bool TryParse(string ipaddress, string netmask, out IPNetwork2 ipnetwork) - { - IPNetwork2.InternalParse(true, ipaddress, netmask, out IPNetwork2 ipnetwork2); - bool parsed = ipnetwork2 != null; - ipnetwork = ipnetwork2; - - return parsed; - } - - /// - /// 192.168.168.100/24 - /// - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255. - /// - /// A string containing an ip address to convert. - /// A byte representing the netmask in cidr format (/24). - /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. - /// true if ipaddress/cidr was converted successfully; otherwise, false.. - public static bool TryParse(string ipaddress, byte cidr, out IPNetwork2 ipnetwork) - { - IPNetwork2.InternalParse(true, ipaddress, cidr, out IPNetwork2 ipnetwork2); - bool parsed = ipnetwork2 != null; - ipnetwork = ipnetwork2; - - return parsed; - } - - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. - /// true if network was converted successfully; otherwise, false.. - public static bool TryParse(string network, out IPNetwork2 ipnetwork) - { - bool sanitanize = true; - IPNetwork2.InternalParse(true, network, CidrGuess.ClassFull, sanitanize, out IPNetwork2 ipnetwork2); - bool parsed = ipnetwork2 != null; - ipnetwork = ipnetwork2; - - return parsed; - } - - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// Whether to sanitize network or not. - /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. - /// true if network was converted successfully; otherwise, false.. - public static bool TryParse(string network, bool sanitanize, out IPNetwork2 ipnetwork) - { - IPNetwork2.InternalParse(true, network, CidrGuess.ClassFull, sanitanize, out IPNetwork2 ipnetwork2); - bool parsed = ipnetwork2 != null; - ipnetwork = ipnetwork2; - - return parsed; - } - - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// An IPAdresse to convert. - /// A IPAdresse to be used as netmaks to convert. - /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. - /// true if network was converted successfully; otherwise, false.. - public static bool TryParse(IPAddress ipaddress, IPAddress netmask, out IPNetwork2 ipnetwork) - { - IPNetwork2.InternalParse(true, ipaddress, netmask, out IPNetwork2 ipnetwork2); - bool parsed = ipnetwork2 != null; - ipnetwork = ipnetwork2; - - return parsed; - } - - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// A ICidrGuess implementation that will be used to guess CIDR during converion. - /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. - /// true if network was converted successfully; otherwise, false.. - public static bool TryParse(string network, ICidrGuess cidrGuess, out IPNetwork2 ipnetwork) - { - IPNetwork2.InternalParse(true, network, cidrGuess, true, out IPNetwork2 ipnetwork2); - bool parsed = ipnetwork2 != null; - ipnetwork = ipnetwork2; - - return parsed; - } - - /// - /// 192.168.0.1/24 - /// 192.168.0.1 255.255.255.0 - /// - /// Network : 192.168.0.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.0.1 - /// End : 192.168.0.254 - /// Broadcast : 192.168.0.255. - /// - /// A string containing an ip network to convert. - /// A ICidrGuess implementation that will be used to guess CIDR during converion. - /// Whether to sanitize network or not. - /// When this method returns, contains the IPNetwork value equivalent of the ip adress contained in ipaddress with the netmask corresponding to cidr, if the conversion succeeded, or null if the conversion failed. The conversion fails if the s parameter is null or Empty, is not of the correct format, or represents an invalid ip address. This parameter is passed uninitialized; any value originally supplied in result will be overwritten. - /// true if network was converted successfully; otherwise, false.. - public static bool TryParse(string network, ICidrGuess cidrGuess, bool sanitanize, out IPNetwork2 ipnetwork) - { - IPNetwork2.InternalParse(true, network, cidrGuess, sanitanize, out IPNetwork2 ipnetwork2); - bool parsed = ipnetwork2 != null; - ipnetwork = ipnetwork2; - - return parsed; - } - - #endregion - - #region InternalParse - - /// - /// 192.168.168.100 - 255.255.255.0 - /// - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255. - /// - /// Whether to throw exception or not during conversion. - /// A string containing an ip address to convert. - /// A string containing a netmask to convert (255.255.255.0). - /// The resulting IPNetwork. - private static void InternalParse(bool tryParse, string ipaddress, string netmask, out IPNetwork2 ipnetwork) - { - if (string.IsNullOrEmpty(ipaddress)) - { - if (tryParse == false) - { - throw new ArgumentNullException("ipaddress"); - } - - ipnetwork = null; - return; - } - - if (string.IsNullOrEmpty(netmask)) - { - if (tryParse == false) - { - throw new ArgumentNullException("netmask"); - } - - ipnetwork = null; - return; - } - - bool ipaddressParsed = IPAddress.TryParse(ipaddress, out IPAddress ip); - if (ipaddressParsed == false) - { - if (tryParse == false) - { - throw new ArgumentException("ipaddress"); - } - - ipnetwork = null; - return; - } - - bool netmaskParsed = IPAddress.TryParse(netmask, out IPAddress mask); - if (netmaskParsed == false) - { - if (tryParse == false) - { - throw new ArgumentException("netmask"); - } - - ipnetwork = null; - return; - } - - IPNetwork2.InternalParse(tryParse, ip, mask, out ipnetwork); - } - - private static void InternalParse(bool tryParse, string network, ICidrGuess cidrGuess, bool sanitanize, out IPNetwork2 ipnetwork) - { - if (string.IsNullOrEmpty(network)) - { - if (tryParse == false) - { - throw new ArgumentNullException("network"); - } - - ipnetwork = null; - return; - } - - if (sanitanize) - { - network = Regex.Replace(network, @"[^0-9a-fA-F\.\/\s\:]+", string.Empty, RegexOptions.None, TimeSpan.FromMilliseconds(100)); - network = Regex.Replace(network, @"\s{2,}", " ", RegexOptions.None, TimeSpan.FromMilliseconds(100)); - network = network.Trim(); - } - - StringSplitOptions splitOptions = sanitanize ? StringSplitOptions.RemoveEmptyEntries : StringSplitOptions.None; - string[] args = network.Split(new char[] { ' ', '/' }, splitOptions); - byte cidr = 0; - - if (args.Length == 0) - { - if (tryParse == false) - { - throw new ArgumentNullException("network"); - } - - ipnetwork = null; - return; - } - - if (args.Length == 1) - { - string cidrlessNetwork = args[0]; - if (cidrGuess.TryGuessCidr(cidrlessNetwork, out cidr)) - { - IPNetwork2.InternalParse(tryParse, cidrlessNetwork, cidr, out ipnetwork); - return; - } - - if (tryParse == false) - { - throw new ArgumentException("network"); - } - - ipnetwork = null; - return; - } - - if (byte.TryParse(args[1], out cidr)) - { - IPNetwork2.InternalParse(tryParse, args[0], cidr, out ipnetwork); - return; - } - - IPNetwork2.InternalParse(tryParse, args[0], args[1], out ipnetwork); - return; - } - - /// - /// 192.168.168.100 255.255.255.0 - /// - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255. - /// - /// Whether to throw exception or not during conversion. - /// An ip address to convert. - /// A netmask to convert (255.255.255.0). - /// The resulting IPNetwork. - private static void InternalParse(bool tryParse, IPAddress ipaddress, IPAddress netmask, out IPNetwork2 ipnetwork) - { - if (ipaddress == null) - { - if (tryParse == false) - { - throw new ArgumentNullException("ipaddress"); - } - - ipnetwork = null; - return; - } - - if (netmask == null) - { - if (tryParse == false) - { - throw new ArgumentNullException("netmask"); - } - - ipnetwork = null; - return; - } - - var uintIpAddress = IPNetwork2.ToBigInteger(ipaddress); - bool parsed = IPNetwork2.TryToCidr(netmask, out byte? cidr2); - if (parsed == false) - { - if (tryParse == false) - { - throw new ArgumentException("netmask"); - } - - ipnetwork = null; - return; - } - - byte cidr = (byte)cidr2; - - var ipnet = new IPNetwork2(uintIpAddress, ipaddress.AddressFamily, cidr); - ipnetwork = ipnet; - - return; - } - - /// - /// 192.168.168.100/24 - /// - /// Network : 192.168.168.0 - /// Netmask : 255.255.255.0 - /// Cidr : 24 - /// Start : 192.168.168.1 - /// End : 192.168.168.254 - /// Broadcast : 192.168.168.255. - /// - /// Whether to throw exception or not during conversion. - /// A string containing an ip address to convert. - /// A byte representing the CIDR to be used in conversion (/24). - /// The resulting IPNetwork. - private static void InternalParse(bool tryParse, string ipaddress, byte cidr, out IPNetwork2 ipnetwork) - { - if (string.IsNullOrEmpty(ipaddress)) - { - if (tryParse == false) - { - throw new ArgumentNullException("ipaddress"); - } - - ipnetwork = null; - return; - } - - bool ipaddressParsed = IPAddress.TryParse(ipaddress, out IPAddress ip); - if (ipaddressParsed == false) - { - if (tryParse == false) - { - throw new ArgumentException("ipaddress"); - } - - ipnetwork = null; - return; - } - - bool parsedNetmask = IPNetwork2.TryToNetmask(cidr, ip.AddressFamily, out IPAddress mask); - if (parsedNetmask == false) - { - if (tryParse == false) - { - throw new ArgumentException("cidr"); - } - - ipnetwork = null; - return; - } - - IPNetwork2.InternalParse(tryParse, ip, mask, out ipnetwork); - } - - #endregion - - #region converters - #region ToUint /// @@ -1211,10 +378,6 @@ internal static void InternalToNetmask(bool tryParse, byte cidr, AddressFamily f #endregion - #endregion - - #region utils - #region BitsSet /// @@ -1358,8 +521,6 @@ internal static byte[] Resize(byte[] bytes, AddressFamily family) #endregion - #endregion - #region contains /// From ac886905b0ef7c462eadd5aa702271d524afdf34 Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sat, 29 Mar 2025 22:49:31 +0100 Subject: [PATCH 17/25] Chore: split IPNetwork2 --- src/System.Net.IPNetwork/IPNetwork2.cs | 1819 +---------------- .../IPNetwork2GetHashCode.cs | 3 - .../IPNetwork2IANAblock.cs | 29 +- .../IPNetwork2IComparableIPNetworkMembers.cs | 3 - .../IPNetwork2IEquatableIPNetworkMembers.cs | 3 - .../IPNetwork2ISerializable.cs | 3 - .../IPNetwork2ListIPAddress.cs | 5 +- .../IPNetwork2Operators.cs | 3 - src/System.Net.IPNetwork/IPNetwork2Print.cs | 38 +- src/System.Net.IPNetwork/IPNetwork2Subnet.cs | 51 +- .../IPNetwork2Supernet.cs | 53 +- .../IPNetwork2SupernetArray.cs | 3 - src/System.Net.IPNetwork/IPNetwork2ToCidr.cs | 61 +- .../IPNetwork2ToIPAddress.cs | 3 - .../IPNetwork2ToNetmask.cs | 3 - .../IPNetwork2ToString.cs | 19 + src/System.Net.IPNetwork/IPNetwork2ToUint.cs | 109 +- .../IPNetwork2TryGuessCidr.cs | 3 - .../IPNetwork2ValidNetmask.cs | 3 - .../IPNetwork2WideSubnet.cs | 3 - .../IPNetwork2WildcardMask.cs | 3 - .../IPNetwork2XmlSerialization.cs | 3 - .../IPNetwork2contains.cs | 89 +- src/System.Net.IPNetwork/IPNetwork2overlap.cs | 37 +- src/System.Net.IPNetwork/split.py | 83 + 25 files changed, 323 insertions(+), 2109 deletions(-) create mode 100644 src/System.Net.IPNetwork/IPNetwork2ToString.cs create mode 100644 src/System.Net.IPNetwork/split.py diff --git a/src/System.Net.IPNetwork/IPNetwork2.cs b/src/System.Net.IPNetwork/IPNetwork2.cs index c3f890e4..be6fd833 100644 --- a/src/System.Net.IPNetwork/IPNetwork2.cs +++ b/src/System.Net.IPNetwork/IPNetwork2.cs @@ -4,10 +4,6 @@ namespace System.Net; -using System.Collections.Generic; -using System.IO; -using System.Net.Sockets; -using System.Numerics; using System.Runtime.Serialization; /// @@ -18,1817 +14,4 @@ namespace System.Net; [CLSCompliant(true)] public sealed partial class IPNetwork2 : IComparable, ISerializable { - #region ToUint - - /// - /// Convert an ipadress to decimal - /// 0.0.0.0 -> 0 - /// 0.0.1.0 -> 256. - /// - /// A string containing an ip address to convert. - /// A number representing the ipaddress. - public static BigInteger ToBigInteger(IPAddress ipaddress) - { - IPNetwork2.InternalToBigInteger(false, ipaddress, out BigInteger? uintIpAddress); - - return (BigInteger)uintIpAddress; - } - - /// - /// Convert an ipadress to decimal - /// 0.0.0.0 -> 0 - /// 0.0.1.0 -> 256. - /// - /// A string containing an ip address to convert. - /// A number representing the IPAdress. - /// true if ipaddress was converted successfully; otherwise, false. - public static bool TryToBigInteger(IPAddress ipaddress, out BigInteger? uintIpAddress) - { - IPNetwork2.InternalToBigInteger(true, ipaddress, out BigInteger? uintIpAddress2); - bool parsed = uintIpAddress2 != null; - uintIpAddress = uintIpAddress2; - - return parsed; - } - - /// - /// Converts an IPAddress to a nullable BigInteger representation. - /// - /// Indicates whether the method should handle errors silently (true) or throw exceptions (false). - /// The IPAddress to convert. - /// The resulting BigInteger representation of the IP address, or null if conversion fails and tryParse is true. - internal static void InternalToBigInteger(bool tryParse, IPAddress ipaddress, out BigInteger? uintIpAddress) - { - if (ipaddress == null) - { - if (tryParse == false) - { - throw new ArgumentNullException("ipaddress"); - } - - uintIpAddress = null; - return; - } - -#if NETSTANDARD2_1 - byte[] bytes = ipaddress.AddressFamily == AddressFamily.InterNetwork ? new byte[4] : new byte[16]; - Span span = bytes.AsSpan(); - if (!ipaddress.TryWriteBytes(span, out _)) - { - if (tryParse == false) - { - throw new ArgumentException("ipaddress"); - } - - uintIpAddress = null; - return; - } - - uintIpAddress = new BigInteger(span, isUnsigned: true, isBigEndian: true); -#elif NETSTANDARD20 - byte[] bytes = ipaddress.GetAddressBytes(); - bytes.AsSpan().Reverse(); - - // add trailing 0 to make unsigned - byte[] unsigned = new byte[bytes.Length + 1]; - Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); - uintIpAddress = new BigInteger(unsigned); -#else - byte[] bytes = ipaddress.GetAddressBytes(); - Array.Reverse(bytes); - - // add trailing 0 to make unsigned - byte[] unsigned = new byte[bytes.Length + 1]; - Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); - uintIpAddress = new BigInteger(unsigned); -#endif - } - - /// - /// Convert a cidr to BigInteger netmask. - /// - /// A byte representing the netmask in cidr format (/24). - /// Either IPv4 or IPv6. - /// A number representing the netmask exprimed in CIDR. - public static BigInteger ToUint(byte cidr, AddressFamily family) - { - IPNetwork2.InternalToBigInteger(false, cidr, family, out BigInteger? uintNetmask); - - return (BigInteger)uintNetmask; - } - - /// - /// Convert a cidr to uint netmask. - /// - /// A byte representing the netmask in cidr format (/24). - /// Either IPv4 or IPv6. - /// A number representing the netmask. - /// true if cidr was converted successfully; otherwise, false. - public static bool TryToUint(byte cidr, AddressFamily family, out BigInteger? uintNetmask) - { - IPNetwork2.InternalToBigInteger(true, cidr, family, out BigInteger? uintNetmask2); - bool parsed = uintNetmask2 != null; - uintNetmask = uintNetmask2; - - return parsed; - } - - /// - /// Convert a cidr to uint netmask. - /// - /// Whether to throw exception or not during conversion. - /// A byte representing the netmask in cidr format (/24). - /// Either IPv4 or IPv6. - /// A number representing the netmask. - internal static void InternalToBigInteger(bool tryParse, byte cidr, AddressFamily family, out BigInteger? uintNetmask) - { - if (family == AddressFamily.InterNetwork && cidr > 32) - { - if (tryParse == false) - { - throw new ArgumentOutOfRangeException("cidr"); - } - - uintNetmask = null; - return; - } - - if (family == AddressFamily.InterNetworkV6 && cidr > 128) - { - if (tryParse == false) - { - throw new ArgumentOutOfRangeException("cidr"); - } - - uintNetmask = null; - return; - } - - if (family != AddressFamily.InterNetwork - && family != AddressFamily.InterNetworkV6) - { - if (tryParse == false) - { - throw new NotSupportedException(family.ToString()); - } - - uintNetmask = null; - return; - } - - if (family == AddressFamily.InterNetwork) - { - uintNetmask = cidr == 0 ? 0 : 0xffffffff << (32 - cidr); - return; - } - - var mask = new BigInteger(new byte[] - { - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0x00, - }); - - BigInteger masked = cidr == 0 ? 0 : mask << (128 - cidr); - byte[] m = masked.ToByteArray(); - byte[] bmask = new byte[17]; - int copy = m.Length > 16 ? 16 : m.Length; - Array.Copy(m, 0, bmask, 0, copy); - uintNetmask = new BigInteger(bmask); - } - - #endregion - - #region ToCidr - - /// - /// Convert netmask to CIDR - /// 255.255.255.0 -> 24 - /// 255.255.0.0 -> 16 - /// 255.0.0.0 -> 8. - /// - /// Whether to throw exception or not during conversion. - /// A number representing the netmask to convert. - /// Either IPv4 or IPv6. - /// A byte representing the netmask in cidr format (/24). - private static void InternalToCidr(bool tryParse, BigInteger netmask, AddressFamily family, out byte? cidr) - { - if (!IPNetwork2.InternalValidNetmask(netmask, family)) - { - if (tryParse == false) - { - throw new ArgumentException("netmask"); - } - - cidr = null; - return; - } - - byte cidr2 = IPNetwork2.BitsSet(netmask, family); - cidr = cidr2; - - return; - } - - /// - /// Convert netmask to CIDR - /// 255.255.255.0 -> 24 - /// 255.255.0.0 -> 16 - /// 255.0.0.0 -> 8. - /// - /// An IPAdress representing the CIDR to convert. - /// A byte representing the CIDR converted from the netmask. - public static byte ToCidr(IPAddress netmask) - { - IPNetwork2.InternalToCidr(false, netmask, out byte? cidr); - return (byte)cidr; - } - - /// - /// Convert netmask to CIDR - /// 255.255.255.0 -> 24 - /// 255.255.0.0 -> 16 - /// 255.0.0.0 -> 8. - /// - /// An IPAdress representing the CIDR to convert. - /// A byte representing the netmask in cidr format (/24). - /// true if netmask was converted successfully; otherwise, false. - public static bool TryToCidr(IPAddress netmask, out byte? cidr) - { - IPNetwork2.InternalToCidr(true, netmask, out byte? cidr2); - bool parsed = cidr2 != null; - cidr = cidr2; - return parsed; - } - - private static void InternalToCidr(bool tryParse, IPAddress netmask, out byte? cidr) - { - if (netmask == null) - { - if (tryParse == false) - { - throw new ArgumentNullException("netmask"); - } - - cidr = null; - return; - } - - bool parsed = IPNetwork2.TryToBigInteger(netmask, out BigInteger? uintNetmask2); - - // 20180217 lduchosal - // impossible to reach code. - // if (parsed == false) { - // if (tryParse == false) { - // throw new ArgumentException("netmask"); - // } - // cidr = null; - // return; - // } - var uintNetmask = (BigInteger)uintNetmask2; - - IPNetwork2.InternalToCidr(tryParse, uintNetmask, netmask.AddressFamily, out byte? cidr2); - cidr = cidr2; - - return; - } - - #endregion - - #region ToNetmask - - /// - /// Convert CIDR to netmask - /// 24 -> 255.255.255.0 - /// 16 -> 255.255.0.0 - /// 8 -> 255.0.0.0. - /// - /// - /// A byte representing the netmask in cidr format (/24). - /// Either IPv4 or IPv6. - /// An IPAdress representing cidr. - public static IPAddress ToNetmask(byte cidr, AddressFamily family) - { - IPNetwork2.InternalToNetmask(false, cidr, family, out IPAddress netmask); - - return netmask; - } - - /// - /// Convert CIDR to netmask - /// 24 -> 255.255.255.0 - /// 16 -> 255.255.0.0 - /// 8 -> 255.0.0.0. - /// - /// - /// A byte representing the netmask in cidr format (/24). - /// Either IPv4 or IPv6. - /// The resulting netmask. - /// true if cidr was converted successfully; otherwise, false. - public static bool TryToNetmask(byte cidr, AddressFamily family, out IPAddress netmask) - { - IPNetwork2.InternalToNetmask(true, cidr, family, out IPAddress netmask2); - bool parsed = netmask2 != null; - netmask = netmask2; - - return parsed; - } - - /// - /// Converts a CIDR value to its corresponding IPAddress netmask. - /// - /// If true, handles errors silently; otherwise, throws exceptions. - /// The CIDR value to convert. - /// The address family (IPv4 or IPv6). - /// The resulting IPAddress netmask. - internal static void InternalToNetmask(bool tryParse, byte cidr, AddressFamily family, out IPAddress netmask) - { - if (family != AddressFamily.InterNetwork - && family != AddressFamily.InterNetworkV6) - { - if (tryParse == false) - { - throw new ArgumentException("family"); - } - - netmask = null; - return; - } - - int maxCidr = family == Sockets.AddressFamily.InterNetwork ? 32 : 128; - if (cidr > maxCidr) - { - if (tryParse == false) - { - throw new ArgumentOutOfRangeException("cidr"); - } - - netmask = null; - return; - } - - BigInteger mask = IPNetwork2.ToUint(cidr, family); - var netmask2 = IPNetwork2.ToIPAddress(mask, family); - netmask = netmask2; - - return; - } - - #endregion - - #region BitsSet - - /// - /// Count bits set to 1 in netmask. - /// - /// - /// A number representing the netmask to count bits from. - /// Either IPv4 or IPv6. - /// The number of bytes set to 1. - private static byte BitsSet(BigInteger netmask, AddressFamily family) - { - string s = netmask.ToBinaryString(); - - return (byte)s.Replace("0", string.Empty) - .ToCharArray() - .Length; - } - - /// - /// Count bits set to 1 in netmask. - /// - /// A number representing the netmask to count bits from. - /// The number of bytes set to 1. - [CLSCompliant(false)] - public static uint BitsSet(IPAddress netmask) - { - var uintNetmask = IPNetwork2.ToBigInteger(netmask); - uint bits = IPNetwork2.BitsSet(uintNetmask, netmask.AddressFamily); - - return bits; - } - - #endregion - - #region ValidNetmask - - /// - /// return true if netmask is a valid netmask - /// 255.255.255.0, 255.0.0.0, 255.255.240.0, ... - /// - /// - /// A number representing the netmask to validate. - /// true if netmask is a valid IP Netmask; otherwise, false. - public static bool ValidNetmask(IPAddress netmask) - { - if (netmask == null) - { - throw new ArgumentNullException("netmask"); - } - - var uintNetmask = IPNetwork2.ToBigInteger(netmask); - bool valid = IPNetwork2.InternalValidNetmask(uintNetmask, netmask.AddressFamily); - - return valid; - } - - /// - /// Determines whether a given BigInteger netmask is valid for the specified address family. - /// - /// The netmask represented as a BigInteger. - /// The address family (IPv4 or IPv6). - /// - /// true if the netmask is valid; otherwise, false. - /// - internal static bool InternalValidNetmask(BigInteger netmask, AddressFamily family) - { - if (family != AddressFamily.InterNetwork - && family != AddressFamily.InterNetworkV6) - { - throw new ArgumentException("family"); - } - - BigInteger mask = family == AddressFamily.InterNetwork - ? new BigInteger(0x0ffffffff) - : new BigInteger(new byte[] - { - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0x00, - }); - - BigInteger neg = (~netmask) & mask; - bool isNetmask = ((neg + 1) & neg) == 0; - - return isNetmask; - } - - #endregion - - #region ToIPAddress - - /// - /// Transform a uint ipaddress into IPAddress object. - /// - /// A number representing an ip address to convert. - /// Either IPv4 or IPv6. - /// An ip adress. - public static IPAddress ToIPAddress(BigInteger ipaddress, AddressFamily family) - { - int width = family == AddressFamily.InterNetwork ? 4 : 16; - byte[] bytes = ipaddress.ToByteArray(); - byte[] bytes2 = new byte[width]; - int copy = bytes.Length > width ? width : bytes.Length; - Array.Copy(bytes, 0, bytes2, 0, copy); - Array.Reverse(bytes2); - - byte[] sized = Resize(bytes2, family); - var ip = new IPAddress(sized); - return ip; - } - - /// - /// Resizes the given byte array to match the expected width for the specified address family (IPv4 or IPv6). - /// Pads with zeros if the array is shorter than required. - /// - /// The byte array to resize. - /// The address family (IPv4 or IPv6). - /// A byte array resized to the appropriate length for the address family. - internal static byte[] Resize(byte[] bytes, AddressFamily family) - { - if (family != AddressFamily.InterNetwork - && family != AddressFamily.InterNetworkV6) - { - throw new ArgumentException("family"); - } - - int width = family == AddressFamily.InterNetwork ? 4 : 16; - - if (bytes.Length > width) - { - throw new ArgumentException("bytes"); - } - - byte[] result = new byte[width]; - Array.Copy(bytes, 0, result, 0, bytes.Length); - - return result; - } - - #endregion - - #region contains - - /// - /// return true if ipaddress is contained in network. - /// - /// A string containing an ip address to convert. - /// true if ipaddress is contained into the IP Network; otherwise, false. - public bool Contains(IPAddress contains) - { - if (contains == null) - { - throw new ArgumentNullException("contains"); - } - - if (this.AddressFamily != contains.AddressFamily) - { - return false; - } - - BigInteger uintNetwork = this.InternalNetwork; - BigInteger uintBroadcast = this.InternalBroadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); - var uintAddress = IPNetwork2.ToBigInteger(contains); - - bool result = uintAddress >= uintNetwork - && uintAddress <= uintBroadcast; - - return result; - } - - /// - /// Determines whether the given IP address is part of the given IP network. - /// - /// The IP network. - /// The IP address. - /// - /// true if the IP address is part of the IP network; otherwise, false. - /// - [Obsolete("static Contains is deprecated, please use instance Contains.")] - public static bool Contains(IPNetwork2 network, IPAddress ipaddress) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.Contains(ipaddress); - } - - /// - /// return true is network2 is fully contained in network. - /// - /// The network to test. - /// It returns the boolean value. If network2 is in IPNetwork then it returns True, otherwise returns False. - public bool Contains(IPNetwork2 contains) - { - if (contains == null) - { - throw new ArgumentNullException("contains"); - } - - BigInteger uintNetwork = this.InternalNetwork; - BigInteger uintBroadcast = this.InternalBroadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); - - BigInteger uintFirst = contains.InternalNetwork; - BigInteger - uintLast = contains.InternalBroadcast; // CreateBroadcast(ref uintFirst, network2._netmask, network2._family); - - bool result = uintFirst >= uintNetwork - && uintLast <= uintBroadcast; - - return result; - } - - /// - /// Determines if the given contains the specified . - /// - /// The network to check for containment. - /// The network to check if it is contained. - /// - /// true if the contains the ; otherwise, false. - /// - [Obsolete("static Contains is deprecated, please use instance Contains.")] - public static bool Contains(IPNetwork2 network, IPNetwork2 network2) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.Contains(network2); - } - - private static BigInteger CreateBroadcast(ref BigInteger network, BigInteger netmask, AddressFamily family) - { - int width = family == AddressFamily.InterNetwork ? 4 : 16; - BigInteger uintBroadcast = network + netmask.PositiveReverse(width); - - return uintBroadcast; - } - - #endregion - - #region overlap - - /// - /// return true is network2 overlap network. - /// - /// The network to test. - /// true if network2 overlaps into the IP Network; otherwise, false. - public bool Overlap(IPNetwork2 network2) - { - if (network2 == null) - { - throw new ArgumentNullException("network2"); - } - - BigInteger uintNetwork = this.InternalNetwork; - BigInteger uintBroadcast = this.InternalBroadcast; - - BigInteger uintFirst = network2.InternalNetwork; - BigInteger uintLast = network2.InternalBroadcast; - - bool overlap = - (uintFirst >= uintNetwork && uintFirst <= uintBroadcast) - || (uintLast >= uintNetwork && uintLast <= uintBroadcast) - || (uintFirst <= uintNetwork && uintLast >= uintBroadcast) - || (uintFirst >= uintNetwork && uintLast <= uintBroadcast); - - return overlap; - } - - /// - /// Determines if two IPNetwork2 objects overlap each other. - /// - /// The first IPNetwork2 object. - /// The second IPNetwork2 object. - /// Returns true if the two IPNetwork2 objects overlap, otherwise false. - [Obsolete("static Overlap is deprecated, please use instance Overlap.")] - public static bool Overlap(IPNetwork2 network, IPNetwork2 network2) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.Overlap(network2); - } - - #endregion - - #region ToString - - /// - /// Returns a string representation of the object. - /// - /// - /// A string representation of the object which includes the Network and Cidr values separated by a "/". - /// - public override string ToString() - { - return string.Format("{0}/{1}", this.Network, this.Cidr); - } - - #endregion - - #region IANA block - - private static readonly Lazy IanaAblockReserved = new (() => IPNetwork2.Parse("10.0.0.0/8")); - private static readonly Lazy IanaBblockReserved = new (() => IPNetwork2.Parse("172.16.0.0/12")); - private static readonly Lazy IanaCblockReserved = new (() => IPNetwork2.Parse("192.168.0.0/16")); - - /// - /// Gets 10.0.0.0/8. - /// - /// The IANA reserved IPNetwork 10.0.0.0/8. - public static IPNetwork2 IANA_ABLK_RESERVED1 - { - get - { - return IanaAblockReserved.Value; - } - } - - /// - /// Gets 172.12.0.0/12. - /// - /// The IANA reserved IPNetwork 172.12.0.0/12. - public static IPNetwork2 IANA_BBLK_RESERVED1 - { - get - { - return IanaBblockReserved.Value; - } - } - - /// - /// Gets 192.168.0.0/16. - /// - /// The IANA reserved IPNetwork 192.168.0.0/16. - public static IPNetwork2 IANA_CBLK_RESERVED1 - { - get - { - return IanaCblockReserved.Value; - } - } - - /// - /// return true if ipaddress is contained in - /// IANA_ABLK_RESERVED1, IANA_BBLK_RESERVED1, IANA_CBLK_RESERVED1. - /// - /// A string containing an ip address to convert. - /// true if ipaddress is a IANA reserverd IP Netowkr ; otherwise, false. - public static bool IsIANAReserved(IPAddress ipaddress) - { - if (ipaddress == null) - { - throw new ArgumentNullException("ipaddress"); - } - - return IPNetwork2.IANA_ABLK_RESERVED1.Contains(ipaddress) - || IPNetwork2.IANA_BBLK_RESERVED1.Contains(ipaddress) - || IPNetwork2.IANA_CBLK_RESERVED1.Contains(ipaddress); - } - - /// - /// return true if ipnetwork is contained in - /// IANA_ABLK_RESERVED1, IANA_BBLK_RESERVED1, IANA_CBLK_RESERVED1. - /// - /// true if the ipnetwork is a IANA reserverd IP Netowkr ; otherwise, false. - public bool IsIANAReserved() - { - return IPNetwork2.IANA_ABLK_RESERVED1.Contains(this) - || IPNetwork2.IANA_BBLK_RESERVED1.Contains(this) - || IPNetwork2.IANA_CBLK_RESERVED1.Contains(this); - } - - /// - /// Determines whether the specified IP network is reserved according to the IANA Reserved ranges. - /// - /// The IP network to check. - /// - /// true if the specified IP network is reserved according to the IANA Reserved ranges; otherwise, false. - /// - /// - /// - /// This method is obsolete and should not be used. Please use the instance method instead. - /// - /// - /// Throws an if is null. - /// - /// - [Obsolete("static IsIANAReserved is deprecated, please use instance IsIANAReserved.")] - public static bool IsIANAReserved(IPNetwork2 ipnetwork) - { - if (ipnetwork == null) - { - throw new ArgumentNullException("ipnetwork"); - } - - return ipnetwork.IsIANAReserved(); - } - - #endregion - - #region Subnet - - /// - /// Subnet a network into multiple nets of cidr mask - /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 - /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. - /// - /// A byte representing the CIDR to be used to subnet the current IPNetwork. - /// A IPNetworkCollection splitted by CIDR. - public IPNetworkCollection Subnet(byte cidr) - { - IPNetwork2.InternalSubnet(false, this, cidr, out IPNetworkCollection ipnetworkCollection); - - return ipnetworkCollection; - } - - /// - /// Subnet method is used to divide the given IP network into subnets with the specified CIDR. - /// - /// The IP network to be subnetted. - /// The CIDR (Classless Inter-Domain Routing) value used to subnet the network. - /// - /// A collection of subnets created from the given network using the specified CIDR. - /// - [Obsolete("static Subnet is deprecated, please use instance Subnet.")] - public static IPNetworkCollection Subnet(IPNetwork2 network, byte cidr) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.Subnet(cidr); - } - - /// - /// Subnet a network into multiple nets of cidr mask - /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 - /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. - /// - /// A byte representing the CIDR to be used to subnet the current IPNetwork. - /// The resulting subnetted IPNetwork. - /// true if network was split successfully; otherwise, false. - public bool TrySubnet(byte cidr, out IPNetworkCollection ipnetworkCollection) - { - IPNetwork2.InternalSubnet(true, this, cidr, out IPNetworkCollection inc); - if (inc == null) - { - ipnetworkCollection = null; - return false; - } - - ipnetworkCollection = inc; - return true; - } - - /// - /// Subnet a network into multiple nets of cidr mask - /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 - /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. - /// - /// The network. - /// A byte representing the CIDR to be used to subnet the current IPNetwork. - /// The resulting subnetted IPNetwork. - /// true if network was split successfully; otherwise, false. - [Obsolete("static TrySubnet is deprecated, please use instance TrySubnet.")] - public static bool TrySubnet(IPNetwork2 network, byte cidr, out IPNetworkCollection ipnetworkCollection) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.TrySubnet(cidr, out ipnetworkCollection); - } - - /// - /// Splits a given IP network into smaller subnets of the specified CIDR size. - /// - /// Indicates whether to throw exceptions or return null on failure. - /// The IP network to be subnetted. - /// The CIDR value used to define the new subnet size. - /// The resulting collection of subnets, or null if the operation fails and trySubnet is true. - internal static void InternalSubnet(bool trySubnet, IPNetwork2 network, byte cidr, out IPNetworkCollection ipnetworkCollection) - { - if (network == null) - { - if (trySubnet == false) - { - throw new ArgumentNullException("network"); - } - - ipnetworkCollection = null; - return; - } - - int maxCidr = network.family == Sockets.AddressFamily.InterNetwork ? 32 : 128; - if (cidr > maxCidr) - { - if (trySubnet == false) - { - throw new ArgumentOutOfRangeException("cidr"); - } - - ipnetworkCollection = null; - return; - } - - if (cidr < network.Cidr) - { - if (trySubnet == false) - { - throw new ArgumentException("cidr"); - } - - ipnetworkCollection = null; - return; - } - - ipnetworkCollection = new IPNetworkCollection(network, cidr); - return; - } - - #endregion - - #region Supernet - - /// - /// Supernet two consecutive cidr equal subnet into a single one - /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 - /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 - /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. - /// - /// The network to supernet with. - /// A supernetted IP Network. - public IPNetwork2 Supernet(IPNetwork2 network2) - { - IPNetwork2.InternalSupernet(false, this, network2, out IPNetwork2 supernet); - return supernet; - } - - /// - /// Supernet two consecutive cidr equal subnet into a single one - /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 - /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 - /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. - /// - /// the network. - /// The network to supernet with. - /// A supernetted IP Network. - [Obsolete("static Supernet is deprecated, please use instance Supernet.")] - public static IPNetwork2 Supernet(IPNetwork2 network, IPNetwork2 network2) - { - return network.Supernet(network2); - } - - /// - /// Try to supernet two consecutive cidr equal subnet into a single one - /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 - /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 - /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. - /// - /// The network to supernet with. - /// The resulting IPNetwork. - /// true if network2 was supernetted successfully; otherwise, false. - public bool TrySupernet(IPNetwork2 network2, out IPNetwork2 supernet) - { - IPNetwork2.InternalSupernet(true, this, network2, out IPNetwork2 outSupernet); - bool parsed = outSupernet != null; - supernet = outSupernet; - return parsed; - } - - /// - /// Try to supernet two consecutive cidr equal subnet into a single one - /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 - /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 - /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. - /// - /// the network. - /// The network to supernet with. - /// The resulting IPNetwork. - /// true if network2 was supernetted successfully; otherwise, false. - [Obsolete("static TrySupernet is deprecated, please use instance TrySupernet.")] - public static bool TrySupernet(IPNetwork2 network, IPNetwork2 network2, out IPNetwork2 supernet) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.TrySupernet(network2, out supernet); - } - - /// - /// Attempts to merge two adjacent IP networks with equal CIDR values into a single supernet. - /// - /// If true, suppresses exceptions on failure; otherwise, throws. - /// The first IP network. - /// The second IP network. - /// The resulting supernet if the merge is successful; otherwise, null. - internal static void InternalSupernet( - bool trySupernet, - IPNetwork2 network1, - IPNetwork2 network2, - out IPNetwork2 supernet) - { - if (network1 == null) - { - if (trySupernet == false) - { - throw new ArgumentNullException("network1"); - } - - supernet = null; - return; - } - - if (network2 == null) - { - if (trySupernet == false) - { - throw new ArgumentNullException("network2"); - } - - supernet = null; - return; - } - - if (network1.Contains(network2)) - { - supernet = new IPNetwork2(network1.InternalNetwork, network1.family, network1.Cidr); - return; - } - - if (network2.Contains(network1)) - { - supernet = new IPNetwork2(network2.InternalNetwork, network2.family, network2.Cidr); - return; - } - - if (network1.cidr != network2.cidr) - { - if (trySupernet == false) - { - throw new ArgumentException("cidr"); - } - - supernet = null; - return; - } - - IPNetwork2 first = (network1.InternalNetwork < network2.InternalNetwork) ? network1 : network2; - IPNetwork2 last = (network1.InternalNetwork > network2.InternalNetwork) ? network1 : network2; - - // Starting from here : - // network1 and network2 have the same cidr, - // network1 does not contain network2, - // network2 does not contain network1, - // first is the lower subnet - // last is the higher subnet - if ((first.InternalBroadcast + 1) != last.InternalNetwork) - { - if (trySupernet == false) - { - throw new ArgumentOutOfRangeException("network1"); - } - - supernet = null; - return; - } - - BigInteger uintSupernet = first.InternalNetwork; - byte cidrSupernet = (byte)(first.cidr - 1); - - var networkSupernet = new IPNetwork2(uintSupernet, first.family, cidrSupernet); - if (networkSupernet.InternalNetwork != first.InternalNetwork) - { - if (trySupernet == false) - { - throw new ArgumentException("network"); - } - - supernet = null; - return; - } - - supernet = networkSupernet; - return; - } - - #endregion - - #region GetHashCode - - /// - public override int GetHashCode() - { - return this.hashCode; - } - - /// - /// 20221105 : ldvhcosal - /// GetHashCode uses mutable attributes. That introduce undefined behaviour on Hashtable and dictionary. - /// - /// An number representing the hashCode. - private int ComputeHashCode() - { - return string.Format( - "{0}|{1}|{2}", - this.family.GetHashCode(), - this.InternalNetwork.GetHashCode(), - this.cidr.GetHashCode()).GetHashCode(); - } - - #endregion - - #region SupernetArray - - /// - /// Supernet a list of subnet - /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 - /// 192.168.0.0/24 + 192.168.1.0/24 + 192.168.2.0/24 + 192.168.3.0/24 = 192.168.0.0/22. - /// - /// A list of IPNetwork to merge into common supernets. - /// The result of IPNetwork if merges succeed, the first ipnetwork otherwise. - public static IPNetwork2[] Supernet(IPNetwork2[] ipnetworks) - { - InternalSupernet(false, ipnetworks, out IPNetwork2[] supernet); - return supernet; - } - - /// - /// Supernet a list of subnet - /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 - /// 192.168.0.0/24 + 192.168.1.0/24 + 192.168.2.0/24 + 192.168.3.0/24 = 192.168.0.0/22. - /// - /// A list of IPNetwork to merge into common supernets. - /// The result of IPNetwork merges. - /// true if ipnetworks was supernetted successfully; otherwise, false. - public static bool TrySupernet(IPNetwork2[] ipnetworks, out IPNetwork2[] supernet) - { - bool supernetted = InternalSupernet(true, ipnetworks, out supernet); - return supernetted; - } - - /// - /// Attempts to merge an array of adjacent IP networks with equal CIDR values into the smallest possible set of supernets. - /// - /// If true, suppresses exceptions on failure; otherwise, throws. - /// The array of IP networks to attempt to merge. - /// The resulting array of merged supernets if successful; otherwise, the original input. - /// true if supernetting was successful; otherwise, false. - internal static bool InternalSupernet(bool trySupernet, IPNetwork2[] ipnetworks, out IPNetwork2[] supernet) - { - if (ipnetworks == null) - { - if (trySupernet == false) - { - throw new ArgumentNullException("ipnetworks"); - } - - supernet = null; - return false; - } - - if (ipnetworks.Length <= 0) - { - supernet = new IPNetwork2[0]; - return true; - } - - var supernetted = new List(); - List ipns = IPNetwork2.Array2List(ipnetworks); - Stack current = IPNetwork2.List2Stack(ipns); - int previousCount = 0; - int currentCount = current.Count; - - while (previousCount != currentCount) - { - supernetted.Clear(); - while (current.Count > 1) - { - IPNetwork2 ipn1 = current.Pop(); - IPNetwork2 ipn2 = current.Peek(); - - bool success = ipn1.TrySupernet(ipn2, out IPNetwork2 outNetwork); - if (success) - { - current.Pop(); - current.Push(outNetwork); - } - else - { - supernetted.Add(ipn1); - } - } - - if (current.Count == 1) - { - supernetted.Add(current.Pop()); - } - - previousCount = currentCount; - currentCount = supernetted.Count; - current = IPNetwork2.List2Stack(supernetted); - } - - supernet = supernetted.ToArray(); - return true; - } - - private static Stack List2Stack(List list) - { - var stack = new Stack(); - list.ForEach(new Action( - delegate(IPNetwork2 ipn) - { - stack.Push(ipn); - })); - return stack; - } - - private static List Array2List(IPNetwork2[] array) - { - var ipns = new List(); - ipns.AddRange(array); - IPNetwork2.RemoveNull(ipns); - ipns.Sort(new Comparison( - delegate(IPNetwork2 ipn1, IPNetwork2 ipn2) - { - int networkCompare = ipn1.InternalNetwork.CompareTo(ipn2.InternalNetwork); - if (networkCompare == 0) - { - int cidrCompare = ipn1.cidr.CompareTo(ipn2.cidr); - return cidrCompare; - } - - return networkCompare; - })); - ipns.Reverse(); - - return ipns; - } - - private static void RemoveNull(List ipns) - { - ipns.RemoveAll(new Predicate( - delegate(IPNetwork2 ipn) - { - if (ipn == null) - { - return true; - } - - return false; - })); - } - - #endregion - - #region WideSubnet - - /// - /// Finds the widest subnet that can contain both the start and end IP addresses. - /// - /// The starting IP address. - /// The ending IP address. - /// The widest subnet that contains both the start and end IP addresses. - /// Thrown when either the start or end IP address is null or empty. - /// Thrown when the start or end IP addresses are not valid. - /// Thrown when the start and end IP addresses have different address families. - public static IPNetwork2 WideSubnet(string start, string end) - { - if (string.IsNullOrEmpty(start)) - { - throw new ArgumentNullException("start"); - } - - if (string.IsNullOrEmpty(end)) - { - throw new ArgumentNullException("end"); - } - - if (!IPAddress.TryParse(start, out IPAddress startIP)) - { - throw new ArgumentException("start"); - } - - if (!IPAddress.TryParse(end, out IPAddress endIP)) - { - throw new ArgumentException("end"); - } - - if (startIP.AddressFamily != endIP.AddressFamily) - { - throw new NotSupportedException("MixedAddressFamily"); - } - - var ipnetwork = new IPNetwork2(0, startIP.AddressFamily, 0); - for (byte cidr = 32; cidr >= 0; cidr--) - { - var wideSubnet = IPNetwork2.Parse(start, cidr); - if (wideSubnet.Contains(endIP)) - { - ipnetwork = wideSubnet; - break; - } - } - - return ipnetwork; - } - - /// - /// Attempts to find the widest subnet that contains both the start and end IP addresses. objects. - /// - /// An array of IPNetwork2 objects to wide subnet. - /// When this method returns, contains the wide subnet of the IPNetwork2 objects, if wide subnet was successful; otherwise, null. - /// true if wide subnet was successful; otherwise, false. - public static bool TryWideSubnet(IPNetwork2[] ipnetworks, out IPNetwork2 ipnetwork) - { - IPNetwork2.InternalWideSubnet(true, ipnetworks, out IPNetwork2 ipn); - if (ipn == null) - { - ipnetwork = null; - return false; - } - - ipnetwork = ipn; - - return true; - } - - /// - /// Finds the widest subnet from an array of IP networks. An array of IPNetwork2 objects representing the IP networks. The widest subnet as an IPNetwork2 object. - /// / - public static IPNetwork2 WideSubnet(IPNetwork2[] ipnetworks) - { - IPNetwork2.InternalWideSubnet(false, ipnetworks, out IPNetwork2 ipn); - return ipn; - } - - /// - /// Attempts to find the widest subnet that includes all given IPNetwork2 instances. - /// - /// If true, suppresses exceptions on invalid input; otherwise, throws. - /// The array of IPNetwork2 instances to encompass within the widest subnet. - /// The resulting widest IPNetwork2 subnet, or null if unsuccessful and tryWide is true. - internal static void InternalWideSubnet(bool tryWide, IPNetwork2[] ipnetworks, out IPNetwork2 ipnetwork) - { - if (ipnetworks == null) - { - if (tryWide == false) - { - throw new ArgumentNullException("ipnetworks"); - } - - ipnetwork = null; - return; - } - - IPNetwork2[] nnin = Array.FindAll(ipnetworks, new Predicate( - delegate(IPNetwork2 ipnet) - { - return ipnet != null; - })); - - if (nnin.Length <= 0) - { - if (tryWide == false) - { - throw new ArgumentException("ipnetworks"); - } - - ipnetwork = null; - return; - } - - if (nnin.Length == 1) - { - IPNetwork2 ipn0 = nnin[0]; - ipnetwork = ipn0; - return; - } - - Array.Sort(nnin); - IPNetwork2 nnin0 = nnin[0]; - BigInteger uintNnin0 = nnin0.ipaddress; - - IPNetwork2 nninX = nnin[nnin.Length - 1]; - IPAddress ipaddressX = nninX.Broadcast; - - AddressFamily family = ipnetworks[0].family; - foreach (IPNetwork2 ipnx in ipnetworks) - { - if (ipnx.family != family) - { - throw new ArgumentException("MixedAddressFamily"); - } - } - - var ipn = new IPNetwork2(0, family, 0); - for (byte cidr = nnin0.cidr; cidr >= 0; cidr--) - { - var wideSubnet = new IPNetwork2(uintNnin0, family, cidr); - if (wideSubnet.Contains(ipaddressX)) - { - ipn = wideSubnet; - break; - } - } - - ipnetwork = ipn; - return; - } - - #endregion - - #region Print - - /// - /// Print an ipnetwork in a clear representation string. - /// - /// Dump an IPNetwork representation as string. - public string Print() - { - using (var sw = new StringWriter()) - { - sw.WriteLine("IPNetwork : {0}", this.ToString()); - sw.WriteLine("Network : {0}", this.Network); - sw.WriteLine("Netmask : {0}", this.Netmask); - sw.WriteLine("Cidr : {0}", this.Cidr); - sw.WriteLine("Broadcast : {0}", this.Broadcast); - sw.WriteLine("FirstUsable : {0}", this.FirstUsable); - sw.WriteLine("LastUsable : {0}", this.LastUsable); - sw.WriteLine("Usable : {0}", this.Usable); - - return sw.ToString(); - } - } - - /// - /// Print an ipnetwork in a clear representation string. - /// - /// The ipnetwork. - /// Dump an IPNetwork representation as string. - /// When arg is null. - [Obsolete("static Print is deprecated, please use instance Print.")] - public static string Print(IPNetwork2 ipnetwork) - { - if (ipnetwork == null) - { - throw new ArgumentNullException("ipnetwork"); - } - - return ipnetwork.Print(); - } - - #endregion - - #region TryGuessCidr - - /// - /// Delegate to CidrGuess ClassFull guessing of cidr. - /// - /// A string representing an IPAdress that will be used to guess the corresponding CIDR. - /// The resulting CIDR as byte. - /// true if cidr was guessed successfully; otherwise, false. - public static bool TryGuessCidr(string ip, out byte cidr) - { - return CidrGuess.ClassFull.TryGuessCidr(ip, out cidr); - } - - /// - /// Try to parse cidr. Have to be >= 0 and <= 32 or 128. - /// - /// A string representing a byte CIRD (/24). - /// Either IPv4 or IPv6. - /// The resulting CIDR as byte. - /// true if cidr was converted successfully; otherwise, false. - public static bool TryParseCidr(string sidr, AddressFamily family, out byte? cidr) - { - byte b = 0; - if (!byte.TryParse(sidr, out b)) - { - cidr = null; - return false; - } - - if (!IPNetwork2.TryToNetmask(b, family, out IPAddress netmask)) - { - cidr = null; - return false; - } - - cidr = b; - return true; - } - - #endregion - - #region ListIPAddress - - /// - /// List all ip addresses in a subnet. - /// - /// The network to list IPAdresses. - /// All the IPAdresses contained in ipnetwork. - [Obsolete("static ListIPAddress is deprecated, please use instance ListIPAddress.")] - public static IPAddressCollection ListIPAddress(IPNetwork2 ipnetwork) - { - return ipnetwork.ListIPAddress(); - } - - /// - /// List all ip addresses in a subnet. - /// - /// Filter IPAdresses from IPNetwork. - /// The filterted IPAdresses contained in ipnetwork. - public IPAddressCollection ListIPAddress(FilterEnum filter = FilterEnum.All) - { - return new IPAddressCollection(this, filter); - } - - #endregion - - #region IComparable Members - - /// - /// Compares two IPNetwork2 instances. - /// - /// The first IPNetwork2 instance to compare. - /// The second IPNetwork2 instance to compare. - /// - /// A value indicating the relative order of the two IPNetwork2 instances. - /// Zero if the instances are equal. - /// A negative value if is less than . - /// A positive value if is greater than . - /// - public static int Compare(IPNetwork2 left, IPNetwork2 right) - { - // two null IPNetworks are equal - if (ReferenceEquals(left, null) && ReferenceEquals(right, null)) - { - return 0; - } - - // two same IPNetworks are equal - if (ReferenceEquals(left, right)) - { - return 0; - } - - // null is always sorted first - if (ReferenceEquals(left, null)) - { - return -1; - } - - if (ReferenceEquals(right, null)) - { - return 1; - } - - // first test family - int result = left.family.CompareTo(right.family); - if (result != 0) - { - return result; - } - - // second test the network - result = left.InternalNetwork.CompareTo(right.InternalNetwork); - if (result != 0) - { - return result; - } - - // then test the cidr - result = left.cidr.CompareTo(right.cidr); - return result; - } - - /// - /// Compare two ipnetworks. - /// - /// The other network to compare to. - /// A signed number indicating the relative values of this instance and value.. - public int CompareTo(IPNetwork2 other) - { - return Compare(this, other); - } - - /// - /// Compare two ipnetworks. - /// - /// The other object to compare to. - /// A signed number indicating the relative values of this instance and value.. - public int CompareTo(object obj) - { - // null is at less - if (obj == null) - { - return 1; - } - - // convert to a proper Cidr object - var other = obj as IPNetwork2; - - // type problem if null - if (other == null) - { - throw new ArgumentException( - "The supplied parameter is an invalid type. Please supply an IPNetwork type.", - "obj"); - } - - // perform the comparision - return this.CompareTo(other); - } - - #endregion - - #region IEquatable Members - - /// - /// Compare two ipnetworks. - /// - /// An IPNetwork to compare. - /// An other IPNetwork to compare to. - /// true if obj has the same value as this instance; otherwise, false. - public static bool Equals(IPNetwork2 left, IPNetwork2 right) - { - return Compare(left, right) == 0; - } - - /// - /// Compare two ipnetworks. - /// - /// An IPNetwork to compare to this instance. - /// true if obj has the same value as this instance; otherwise, false. - public bool Equals(IPNetwork2 other) - { - return Equals(this, other); - } - - /// - /// Compare two ipnetworks. - /// - /// An object value to compare to this instance. - /// true if obj has the same value as this instance; otherwise, false. - public override bool Equals(object obj) - { - return Equals(this, obj as IPNetwork2); - } - - #endregion - - #region Operators - - /// - /// Compares two IPNetwork. - /// - /// left instance. - /// Right instance. - /// true if left equals right; otherwise, false. - public static bool operator ==(IPNetwork2 left, IPNetwork2 right) - { - return Equals(left, right); - } - - /// - /// Compares two IPNetwork. - /// - /// left instance. - /// Right instance. - /// true if left does not equals right; otherwise, false. - public static bool operator !=(IPNetwork2 left, IPNetwork2 right) - { - return !Equals(left, right); - } - - /// - /// Compares two IPNetwork. - /// - /// left instance. - /// Right instance. - /// true if left is less than right; otherwise, false. - public static bool operator <(IPNetwork2 left, IPNetwork2 right) - { - return Compare(left, right) < 0; - } - - /// - /// Compares two IPNetwork. - /// - /// left instance. - /// Right instance. - /// true if left is greater than right; otherwise, false. - public static bool operator >(IPNetwork2 left, IPNetwork2 right) - { - return Compare(left, right) > 0; - } - - #endregion - - #region XmlSerialization - - /// - /// Initializes a new instance of the class. - /// Created for DataContractSerialization. Better use static methods IPNetwork.Parse() to create IPNetworks. - /// - public IPNetwork2() - : this(0, AddressFamily.InterNetwork, 0) - { - } - - #endregion - - #region ISerializable - - /// - /// Represents an internal structure to hold an IP address, its CIDR value, and address family. - /// Used for internal operations within the IPNetwork2 class. - /// - internal struct IPNetworkInteral - { - /// - /// Represents the IP address value. - /// - public BigInteger IPAddress; - - /// - /// Represents the CIDR (Classless Inter-Domain Routing) value. - /// - public byte Cidr; - - /// - /// Represents the address family (IPv4 or IPv6). - /// - public AddressFamily AddressFamily; - } - - private IPNetwork2(SerializationInfo info, StreamingContext context) - { - string sipnetwork = (string)info.GetValue("IPNetwork", typeof(string)); - var ipnetwork = IPNetwork2.Parse(sipnetwork); - - this.ipaddress = ipnetwork.ipaddress; - this.cidr = ipnetwork.cidr; - this.family = ipnetwork.family; - } - - /// - void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) - { - info.AddValue("IPNetwork", this.ToString()); - } - - #endregion - - #region WildcardMask - - /// - /// Gets netmask Inverse - /// https://en.wikipedia.org/wiki/Wildcard_mask - /// - /// A wildcard mask is a mask of bits that indicates which parts of an IP address are available for examination. - /// In the Cisco IOS,[1] they are used in several places, for example: - /// To indicate the size of a network or subnet for some routing protocols, such as OSPF. - /// To indicate what IP addresses should be permitted or denied in access control lists(ACLs). - /// - /// A wildcard mask can be thought of as an inverted subnet mask.For example, - /// a subnet mask of 255.255.255.0 (binary equivalent = 11111111.11111111.11111111.00000000) - /// inverts to a wildcard mask of 0.0.0.255 (binary equivalent = 00000000.00000000.00000000.11111111). - /// - /// A wild card mask is a matching rule.[2] The rule for a wildcard mask is: - /// 0 means that the equivalent bit must match - /// 1 means that the equivalent bit does not matter - /// - /// Any wildcard bit-pattern can be masked for examination.For example, a wildcard mask of 0.0.0.254 - /// (binary equivalent = 00000000.00000000.00000000.11111110) applied to IP address 10.10.10.2 - /// (00001010.00001010.00001010.00000010) will match even-numbered IP addresses 10.10.10.0, 10.10.10.2, - /// 10.10.10.4, 10.10.10.6 etc. - /// - /// Same mask applied to 10.10.10.1 (00001010.00001010.00001010.00000001) will match - /// odd-numbered IP addresses 10.10.10.1, 10.10.10.3, 10.10.10.5 etc. - /// - /// A network and wildcard mask combination of 1.1.1.1 0.0.0.0 would match an interface configured - /// exactly with 1.1.1.1 only, and nothing else. - /// - /// Wildcard masks are used in situations where subnet masks may not apply.For example, - /// when two affected hosts fall in different subnets, the use of a wildcard mask will - /// group them together. - /// - /// List of wildcard masks - /// Slash Netmask Wildcard mask - /// /32 255.255.255.255 0.0.0.0 - /// /31 255.255.255.254 0.0.0.1 - /// /30 255.255.255.252 0.0.0.3 - /// /29 255.255.255.248 0.0.0.7 - /// /28 255.255.255.240 0.0.0.15 - /// /27 255.255.255.224 0.0.0.31 - /// /26 255.255.255.192 0.0.0.63 - /// /25 255.255.255.128 0.0.0.127 - /// /24 255.255.255.0 0.0.0.255 - /// /23 255.255.254.0 0.0.1.255 - /// /22 255.255.252.0 0.0.3.255 - /// /21 255.255.248.0 0.0.7.255 - /// /20 255.255.240.0 0.0.15.255 - /// /19 255.255.224.0 0.0.31.255 - /// /18 255.255.192.0 0.0.63.255 - /// /17 255.255.128.0 0.0.127.255 - /// /16 255.255.0.0 0.0.255.255 - /// /15 255.254.0.0 0.1.255.255 - /// /14 255.252.0.0 0.3.255.255 - /// /13 255.248.0.0 0.7.255.255 - /// /12 255.240.0.0 0.15.255.255 - /// /11 255.224.0.0 0.31.255.255 - /// /10 255.192.0.0 0.63.255.255 - /// /9 255.128.0.0 0.127.255.255 - /// /8 255.0.0.0 0.255.255.255 - /// /7 254.0.0.0 1.255.255.255 - /// /6 252.0.0.0 3.255.255.255 - /// /5 248.0.0.0 7.255.255.255 - /// /4 240.0.0.0 15.255.255.255 - /// /3 224.0.0.0 31.255.255.255 - /// /2 192.0.0.0 63.255.255.255 - /// /1 128.0.0.0 127.255.255.255 - /// /0 0.0.0.0 255.255.255.255. - /// - /// - public IPAddress WildcardMask - { - get - { - byte cidr = this.family == AddressFamily.InterNetwork ? (byte)32 : (byte)128; - BigInteger netmask = IPNetwork2.ToUint(cidr, this.family); - BigInteger wildcardmask = netmask - this.InternalNetmask; - - return IPNetwork2.ToIPAddress(wildcardmask, this.family); - } - } - - #endregion -} \ No newline at end of file +} diff --git a/src/System.Net.IPNetwork/IPNetwork2GetHashCode.cs b/src/System.Net.IPNetwork/IPNetwork2GetHashCode.cs index fb7df497..28327c3c 100644 --- a/src/System.Net.IPNetwork/IPNetwork2GetHashCode.cs +++ b/src/System.Net.IPNetwork/IPNetwork2GetHashCode.cs @@ -4,9 +4,6 @@ namespace System.Net; -/// -/// GetHashcode. -/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs b/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs index 037cba59..943a65fc 100644 --- a/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs +++ b/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs @@ -4,9 +4,6 @@ namespace System.Net; -/// -/// IANA Blocks. -/// public sealed partial class IPNetwork2 { private static readonly Lazy IanaAblockReserved = new (() => IPNetwork2.Parse("10.0.0.0/8")); @@ -67,6 +64,18 @@ public static bool IsIANAReserved(IPAddress ipaddress) || IPNetwork2.IANA_CBLK_RESERVED1.Contains(ipaddress); } + /// + /// return true if ipnetwork is contained in + /// IANA_ABLK_RESERVED1, IANA_BBLK_RESERVED1, IANA_CBLK_RESERVED1. + /// + /// true if the ipnetwork is a IANA reserverd IP Netowkr ; otherwise, false. + public bool IsIANAReserved() + { + return IPNetwork2.IANA_ABLK_RESERVED1.Contains(this) + || IPNetwork2.IANA_BBLK_RESERVED1.Contains(this) + || IPNetwork2.IANA_CBLK_RESERVED1.Contains(this); + } + /// /// Determines whether the specified IP network is reserved according to the IANA Reserved ranges. /// @@ -76,7 +85,7 @@ public static bool IsIANAReserved(IPAddress ipaddress) /// /// /// - /// This method is obsolete and should not be used. Please use the instance method, see IsIANAReserved" instead. + /// This method is obsolete and should not be used. Please use the instance method instead. /// /// /// Throws an if is null. @@ -92,16 +101,4 @@ public static bool IsIANAReserved(IPNetwork2 ipnetwork) return ipnetwork.IsIANAReserved(); } - - /// - /// return true if ipnetwork is contained in - /// IANA_ABLK_RESERVED1, IANA_BBLK_RESERVED1, IANA_CBLK_RESERVED1. - /// - /// true if the ipnetwork is a IANA reserverd IP Netowkr ; otherwise, false. - public bool IsIANAReserved() - { - return IPNetwork2.IANA_ABLK_RESERVED1.Contains(this) - || IPNetwork2.IANA_BBLK_RESERVED1.Contains(this) - || IPNetwork2.IANA_CBLK_RESERVED1.Contains(this); - } } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2IComparableIPNetworkMembers.cs b/src/System.Net.IPNetwork/IPNetwork2IComparableIPNetworkMembers.cs index 03ec00d2..46a0153f 100644 --- a/src/System.Net.IPNetwork/IPNetwork2IComparableIPNetworkMembers.cs +++ b/src/System.Net.IPNetwork/IPNetwork2IComparableIPNetworkMembers.cs @@ -4,9 +4,6 @@ namespace System.Net; -/// -/// IComparable. -/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2IEquatableIPNetworkMembers.cs b/src/System.Net.IPNetwork/IPNetwork2IEquatableIPNetworkMembers.cs index 48e4156d..61eb64cd 100644 --- a/src/System.Net.IPNetwork/IPNetwork2IEquatableIPNetworkMembers.cs +++ b/src/System.Net.IPNetwork/IPNetwork2IEquatableIPNetworkMembers.cs @@ -4,9 +4,6 @@ namespace System.Net; -/// -/// IEquatable. -/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2ISerializable.cs b/src/System.Net.IPNetwork/IPNetwork2ISerializable.cs index 945c8bfe..ee0bc788 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ISerializable.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ISerializable.cs @@ -8,9 +8,6 @@ namespace System.Net; using System.Numerics; using System.Runtime.Serialization; -/// -/// ISerializable. -/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2ListIPAddress.cs b/src/System.Net.IPNetwork/IPNetwork2ListIPAddress.cs index 9fe89873..f62fd0f7 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ListIPAddress.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ListIPAddress.cs @@ -4,11 +4,8 @@ namespace System.Net; -/// -/// ListIPAddress. -/// public sealed partial class IPNetwork2 -{ +{ /// /// List all ip addresses in a subnet. /// diff --git a/src/System.Net.IPNetwork/IPNetwork2Operators.cs b/src/System.Net.IPNetwork/IPNetwork2Operators.cs index 1c3d85c6..05996957 100644 --- a/src/System.Net.IPNetwork/IPNetwork2Operators.cs +++ b/src/System.Net.IPNetwork/IPNetwork2Operators.cs @@ -4,9 +4,6 @@ namespace System.Net; -/// -/// Opertors. -/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2Print.cs b/src/System.Net.IPNetwork/IPNetwork2Print.cs index 56f53764..01caa386 100644 --- a/src/System.Net.IPNetwork/IPNetwork2Print.cs +++ b/src/System.Net.IPNetwork/IPNetwork2Print.cs @@ -5,29 +5,8 @@ namespace System.Net; using System.IO; - -/// -/// Print. -/// public sealed partial class IPNetwork2 { - /// - /// Print an ipnetwork in a clear representation string. - /// - /// The ipnetwork. - /// Dump an IPNetwork representation as string. - /// When arg is null. - [Obsolete("static Print is deprecated, please use instance Print.")] - public static string Print(IPNetwork2 ipnetwork) - { - if (ipnetwork == null) - { - throw new ArgumentNullException("ipnetwork"); - } - - return ipnetwork.Print(); - } - /// /// Print an ipnetwork in a clear representation string. /// @@ -48,4 +27,21 @@ public string Print() return sw.ToString(); } } + + /// + /// Print an ipnetwork in a clear representation string. + /// + /// The ipnetwork. + /// Dump an IPNetwork representation as string. + /// When arg is null. + [Obsolete("static Print is deprecated, please use instance Print.")] + public static string Print(IPNetwork2 ipnetwork) + { + if (ipnetwork == null) + { + throw new ArgumentNullException("ipnetwork"); + } + + return ipnetwork.Print(); + } } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2Subnet.cs b/src/System.Net.IPNetwork/IPNetwork2Subnet.cs index 94173fdd..2f51d442 100644 --- a/src/System.Net.IPNetwork/IPNetwork2Subnet.cs +++ b/src/System.Net.IPNetwork/IPNetwork2Subnet.cs @@ -4,11 +4,22 @@ namespace System.Net; -/// -/// Subnet. -/// public sealed partial class IPNetwork2 { + /// + /// Subnet a network into multiple nets of cidr mask + /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 + /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. + /// + /// A byte representing the CIDR to be used to subnet the current IPNetwork. + /// A IPNetworkCollection splitted by CIDR. + public IPNetworkCollection Subnet(byte cidr) + { + IPNetwork2.InternalSubnet(false, this, cidr, out IPNetworkCollection ipnetworkCollection); + + return ipnetworkCollection; + } + /// /// Subnet method is used to divide the given IP network into subnets with the specified CIDR. /// @@ -28,26 +39,6 @@ public static IPNetworkCollection Subnet(IPNetwork2 network, byte cidr) return network.Subnet(cidr); } - /// - /// Subnet a network into multiple nets of cidr mask - /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 - /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. - /// - /// The network. - /// A byte representing the CIDR to be used to subnet the current IPNetwork. - /// The resulting subnetted IPNetwork. - /// true if network was split successfully; otherwise, false. - [Obsolete("static TrySubnet is deprecated, please use instance TrySubnet.")] - public static bool TrySubnet(IPNetwork2 network, byte cidr, out IPNetworkCollection ipnetworkCollection) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.TrySubnet(cidr, out ipnetworkCollection); - } - /// /// Subnet a network into multiple nets of cidr mask /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 @@ -74,13 +65,19 @@ public bool TrySubnet(byte cidr, out IPNetworkCollection ipnetworkCollection) /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. /// + /// The network. /// A byte representing the CIDR to be used to subnet the current IPNetwork. - /// A IPNetworkCollection splitted by CIDR. - public IPNetworkCollection Subnet(byte cidr) + /// The resulting subnetted IPNetwork. + /// true if network was split successfully; otherwise, false. + [Obsolete("static TrySubnet is deprecated, please use instance TrySubnet.")] + public static bool TrySubnet(IPNetwork2 network, byte cidr, out IPNetworkCollection ipnetworkCollection) { - IPNetwork2.InternalSubnet(false, this, cidr, out IPNetworkCollection ipnetworkCollection); + if (network == null) + { + throw new ArgumentNullException("network"); + } - return ipnetworkCollection; + return network.TrySubnet(cidr, out ipnetworkCollection); } /// diff --git a/src/System.Net.IPNetwork/IPNetwork2Supernet.cs b/src/System.Net.IPNetwork/IPNetwork2Supernet.cs index 6b47baeb..c2e8dd08 100644 --- a/src/System.Net.IPNetwork/IPNetwork2Supernet.cs +++ b/src/System.Net.IPNetwork/IPNetwork2Supernet.cs @@ -6,9 +6,6 @@ namespace System.Net; using System.Numerics; -/// -/// supernet. -/// public sealed partial class IPNetwork2 { /// @@ -17,48 +14,44 @@ public sealed partial class IPNetwork2 /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. /// - /// the network. /// The network to supernet with. /// A supernetted IP Network. - [Obsolete("static Supernet is deprecated, please use instance Supernet.")] - public static IPNetwork2 Supernet(IPNetwork2 network, IPNetwork2 network2) + public IPNetwork2 Supernet(IPNetwork2 network2) { - return network.Supernet(network2); + IPNetwork2.InternalSupernet(false, this, network2, out IPNetwork2 supernet); + return supernet; } /// - /// Try to supernet two consecutive cidr equal subnet into a single one + /// Supernet two consecutive cidr equal subnet into a single one /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. /// /// the network. /// The network to supernet with. - /// The resulting IPNetwork. - /// true if network2 was supernetted successfully; otherwise, false. - [Obsolete("static TrySupernet is deprecated, please use instance TrySupernet.")] - public static bool TrySupernet(IPNetwork2 network, IPNetwork2 network2, out IPNetwork2 supernet) + /// A supernetted IP Network. + [Obsolete("static Supernet is deprecated, please use instance Supernet.")] + public static IPNetwork2 Supernet(IPNetwork2 network, IPNetwork2 network2) { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.TrySupernet(network2, out supernet); + return network.Supernet(network2); } /// - /// Supernet two consecutive cidr equal subnet into a single one + /// Try to supernet two consecutive cidr equal subnet into a single one /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. /// /// The network to supernet with. - /// A supernetted IP Network. - public IPNetwork2 Supernet(IPNetwork2 network2) + /// The resulting IPNetwork. + /// true if network2 was supernetted successfully; otherwise, false. + public bool TrySupernet(IPNetwork2 network2, out IPNetwork2 supernet) { - IPNetwork2.InternalSupernet(false, this, network2, out IPNetwork2 supernet); - return supernet; + IPNetwork2.InternalSupernet(true, this, network2, out IPNetwork2 outSupernet); + bool parsed = outSupernet != null; + supernet = outSupernet; + return parsed; } /// @@ -67,15 +60,19 @@ public IPNetwork2 Supernet(IPNetwork2 network2) /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. /// + /// the network. /// The network to supernet with. /// The resulting IPNetwork. /// true if network2 was supernetted successfully; otherwise, false. - public bool TrySupernet(IPNetwork2 network2, out IPNetwork2 supernet) + [Obsolete("static TrySupernet is deprecated, please use instance TrySupernet.")] + public static bool TrySupernet(IPNetwork2 network, IPNetwork2 network2, out IPNetwork2 supernet) { - IPNetwork2.InternalSupernet(true, this, network2, out IPNetwork2 outSupernet); - bool parsed = outSupernet != null; - supernet = outSupernet; - return parsed; + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.TrySupernet(network2, out supernet); } /// diff --git a/src/System.Net.IPNetwork/IPNetwork2SupernetArray.cs b/src/System.Net.IPNetwork/IPNetwork2SupernetArray.cs index 95700a20..9c8bdfea 100644 --- a/src/System.Net.IPNetwork/IPNetwork2SupernetArray.cs +++ b/src/System.Net.IPNetwork/IPNetwork2SupernetArray.cs @@ -6,9 +6,6 @@ namespace System.Net; using System.Collections.Generic; -/// -/// SupernetArray. -/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs b/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs index 7f7cae74..94074340 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs @@ -7,11 +7,37 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; -/// -/// ToCidr. -/// public sealed partial class IPNetwork2 { + /// + /// Convert netmask to CIDR + /// 255.255.255.0 -> 24 + /// 255.255.0.0 -> 16 + /// 255.0.0.0 -> 8. + /// + /// Whether to throw exception or not during conversion. + /// A number representing the netmask to convert. + /// Either IPv4 or IPv6. + /// A byte representing the netmask in cidr format (/24). + private static void InternalToCidr(bool tryParse, BigInteger netmask, AddressFamily family, out byte? cidr) + { + if (!IPNetwork2.InternalValidNetmask(netmask, family)) + { + if (tryParse == false) + { + throw new ArgumentException("netmask"); + } + + cidr = null; + return; + } + + byte cidr2 = IPNetwork2.BitsSet(netmask, family); + cidr = cidr2; + + return; + } + /// /// Convert netmask to CIDR /// 255.255.255.0 -> 24 @@ -74,33 +100,4 @@ private static void InternalToCidr(bool tryParse, IPAddress netmask, out byte? c return; } - - /// - /// Convert netmask to CIDR - /// 255.255.255.0 -> 24 - /// 255.255.0.0 -> 16 - /// 255.0.0.0 -> 8. - /// - /// Whether to throw exception or not during conversion. - /// A number representing the netmask to convert. - /// Either IPv4 or IPv6. - /// A byte representing the netmask in cidr format (/24). - private static void InternalToCidr(bool tryParse, BigInteger netmask, AddressFamily family, out byte? cidr) - { - if (!IPNetwork2.InternalValidNetmask(netmask, family)) - { - if (tryParse == false) - { - throw new ArgumentException("netmask"); - } - - cidr = null; - return; - } - - byte cidr2 = IPNetwork2.BitsSet(netmask, family); - cidr = cidr2; - - return; - } } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2ToIPAddress.cs b/src/System.Net.IPNetwork/IPNetwork2ToIPAddress.cs index 5cfa5e24..9a3be032 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ToIPAddress.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ToIPAddress.cs @@ -7,9 +7,6 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; -/// -/// ToIPAddress. -/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2ToNetmask.cs b/src/System.Net.IPNetwork/IPNetwork2ToNetmask.cs index 6675b61e..f483be24 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ToNetmask.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ToNetmask.cs @@ -7,9 +7,6 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; -/// -/// ToNetmask. -/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2ToString.cs b/src/System.Net.IPNetwork/IPNetwork2ToString.cs new file mode 100644 index 00000000..c9dab960 --- /dev/null +++ b/src/System.Net.IPNetwork/IPNetwork2ToString.cs @@ -0,0 +1,19 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace System.Net; + +public sealed partial class IPNetwork2 +{ + /// + /// Returns a string representation of the object. + /// + /// + /// A string representation of the object which includes the Network and Cidr values separated by a "/". + /// + public override string ToString() + { + return string.Format("{0}/{1}", this.Network, this.Cidr); + } +} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2ToUint.cs b/src/System.Net.IPNetwork/IPNetwork2ToUint.cs index fc704a2e..c24edadb 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ToUint.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ToUint.cs @@ -7,9 +7,6 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; -/// -/// ToUint. -/// public sealed partial class IPNetwork2 { /// @@ -43,6 +40,59 @@ public static bool TryToBigInteger(IPAddress ipaddress, out BigInteger? uintIpAd return parsed; } + /// + /// Converts an IPAddress to a nullable BigInteger representation. + /// + /// Indicates whether the method should handle errors silently (true) or throw exceptions (false). + /// The IPAddress to convert. + /// The resulting BigInteger representation of the IP address, or null if conversion fails and tryParse is true. + internal static void InternalToBigInteger(bool tryParse, IPAddress ipaddress, out BigInteger? uintIpAddress) + { + if (ipaddress == null) + { + if (tryParse == false) + { + throw new ArgumentNullException("ipaddress"); + } + + uintIpAddress = null; + return; + } + +#if NETSTANDARD2_1 + byte[] bytes = ipaddress.AddressFamily == AddressFamily.InterNetwork ? new byte[4] : new byte[16]; + Span span = bytes.AsSpan(); + if (!ipaddress.TryWriteBytes(span, out _)) + { + if (tryParse == false) + { + throw new ArgumentException("ipaddress"); + } + + uintIpAddress = null; + return; + } + + uintIpAddress = new BigInteger(span, isUnsigned: true, isBigEndian: true); +#elif NETSTANDARD20 + byte[] bytes = ipaddress.GetAddressBytes(); + bytes.AsSpan().Reverse(); + + // add trailing 0 to make unsigned + byte[] unsigned = new byte[bytes.Length + 1]; + Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); + uintIpAddress = new BigInteger(unsigned); +#else + byte[] bytes = ipaddress.GetAddressBytes(); + Array.Reverse(bytes); + + // add trailing 0 to make unsigned + byte[] unsigned = new byte[bytes.Length + 1]; + Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); + uintIpAddress = new BigInteger(unsigned); +#endif + } + /// /// Convert a cidr to BigInteger netmask. /// @@ -137,57 +187,4 @@ internal static void InternalToBigInteger(bool tryParse, byte cidr, AddressFamil Array.Copy(m, 0, bmask, 0, copy); uintNetmask = new BigInteger(bmask); } - - /// - /// Converts an IPAddress to a nullable BigInteger representation. - /// - /// Indicates whether the method should handle errors silently (true) or throw exceptions (false). - /// The IPAddress to convert. - /// The resulting BigInteger representation of the IP address, or null if conversion fails and tryParse is true. - internal static void InternalToBigInteger(bool tryParse, IPAddress ipaddress, out BigInteger? uintIpAddress) - { - if (ipaddress == null) - { - if (tryParse == false) - { - throw new ArgumentNullException("ipaddress"); - } - - uintIpAddress = null; - return; - } - -#if NETSTANDARD2_1 - byte[] bytes = ipaddress.AddressFamily == AddressFamily.InterNetwork ? new byte[4] : new byte[16]; - Span span = bytes.AsSpan(); - if (!ipaddress.TryWriteBytes(span, out _)) - { - if (tryParse == false) - { - throw new ArgumentException("ipaddress"); - } - - uintIpAddress = null; - return; - } - - uintIpAddress = new BigInteger(span, isUnsigned: true, isBigEndian: true); -#elif NETSTANDARD20 - byte[] bytes = ipaddress.GetAddressBytes(); - bytes.AsSpan().Reverse(); - - // add trailing 0 to make unsigned - byte[] unsigned = new byte[bytes.Length + 1]; - Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); - uintIpAddress = new BigInteger(unsigned); -#else - byte[] bytes = ipaddress.GetAddressBytes(); - Array.Reverse(bytes); - - // add trailing 0 to make unsigned - byte[] unsigned = new byte[bytes.Length + 1]; - Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); - uintIpAddress = new BigInteger(unsigned); -#endif - } } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs b/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs index 2aa1ccd8..3c48c57c 100644 --- a/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs +++ b/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs @@ -6,9 +6,6 @@ namespace System.Net; using System.Net.Sockets; -/// -/// TryGuessCidr. -/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2ValidNetmask.cs b/src/System.Net.IPNetwork/IPNetwork2ValidNetmask.cs index e67fc76b..69a253d6 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ValidNetmask.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ValidNetmask.cs @@ -7,9 +7,6 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; -/// -/// ValidNetmask. -/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs b/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs index 05d7ff39..bb632364 100644 --- a/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs +++ b/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs @@ -7,9 +7,6 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; -/// -/// WideSubnet. -/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2WildcardMask.cs b/src/System.Net.IPNetwork/IPNetwork2WildcardMask.cs index 069f3b14..918b3602 100644 --- a/src/System.Net.IPNetwork/IPNetwork2WildcardMask.cs +++ b/src/System.Net.IPNetwork/IPNetwork2WildcardMask.cs @@ -7,9 +7,6 @@ namespace System.Net; using System.Numerics; using System.Net.Sockets; -/// -/// WildcardNetmask. -/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2XmlSerialization.cs b/src/System.Net.IPNetwork/IPNetwork2XmlSerialization.cs index c0eccd30..343661c5 100644 --- a/src/System.Net.IPNetwork/IPNetwork2XmlSerialization.cs +++ b/src/System.Net.IPNetwork/IPNetwork2XmlSerialization.cs @@ -6,9 +6,6 @@ namespace System.Net; using System.Net.Sockets; -/// -/// Serialization. -/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2contains.cs b/src/System.Net.IPNetwork/IPNetwork2contains.cs index 5529f40c..b8cfb223 100644 --- a/src/System.Net.IPNetwork/IPNetwork2contains.cs +++ b/src/System.Net.IPNetwork/IPNetwork2contains.cs @@ -7,55 +7,13 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; -/// -/// Contains. -/// public sealed partial class IPNetwork2 { - /// - /// Determines whether the given IP address is part of the given IP network. - /// - /// The IP network. - /// The IP address. - /// - /// true if the IP address is part of the IP network; otherwise, false. - /// - [Obsolete("static Contains is deprecated, please use instance Contains.")] - public static bool Contains(IPNetwork2 network, IPAddress ipaddress) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.Contains(ipaddress); - } - - /// - /// Determines if the given contains the specified . - /// - /// The network to check for containment. - /// The network to check if it is contained. - /// - /// true if the contains the ; otherwise, false. - /// - [Obsolete("static Contains is deprecated, please use instance Contains.")] - public static bool Contains(IPNetwork2 network, IPNetwork2 network2) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.Contains(network2); - } - /// /// return true if ipaddress is contained in network. /// /// A string containing an ip address to convert. /// true if ipaddress is contained into the IP Network; otherwise, false. - [System.CLSCompliant(false)] public bool Contains(IPAddress contains) { if (contains == null) @@ -69,8 +27,7 @@ public bool Contains(IPAddress contains) } BigInteger uintNetwork = this.InternalNetwork; - BigInteger - uintBroadcast = this.InternalBroadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); + BigInteger uintBroadcast = this.InternalBroadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); var uintAddress = IPNetwork2.ToBigInteger(contains); bool result = uintAddress >= uintNetwork @@ -79,6 +36,25 @@ public bool Contains(IPAddress contains) return result; } + /// + /// Determines whether the given IP address is part of the given IP network. + /// + /// The IP network. + /// The IP address. + /// + /// true if the IP address is part of the IP network; otherwise, false. + /// + [Obsolete("static Contains is deprecated, please use instance Contains.")] + public static bool Contains(IPNetwork2 network, IPAddress ipaddress) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.Contains(ipaddress); + } + /// /// return true is network2 is fully contained in network. /// @@ -92,13 +68,11 @@ public bool Contains(IPNetwork2 contains) } BigInteger uintNetwork = this.InternalNetwork; - BigInteger - uintBroadcast = this.InternalBroadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); + BigInteger uintBroadcast = this.InternalBroadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); BigInteger uintFirst = contains.InternalNetwork; BigInteger - uintLast = contains - .InternalBroadcast; // CreateBroadcast(ref uintFirst, network2._netmask, network2._family); + uintLast = contains.InternalBroadcast; // CreateBroadcast(ref uintFirst, network2._netmask, network2._family); bool result = uintFirst >= uintNetwork && uintLast <= uintBroadcast; @@ -106,6 +80,25 @@ public bool Contains(IPNetwork2 contains) return result; } + /// + /// Determines if the given contains the specified . + /// + /// The network to check for containment. + /// The network to check if it is contained. + /// + /// true if the contains the ; otherwise, false. + /// + [Obsolete("static Contains is deprecated, please use instance Contains.")] + public static bool Contains(IPNetwork2 network, IPNetwork2 network2) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.Contains(network2); + } + private static BigInteger CreateBroadcast(ref BigInteger network, BigInteger netmask, AddressFamily family) { int width = family == AddressFamily.InterNetwork ? 4 : 16; diff --git a/src/System.Net.IPNetwork/IPNetwork2overlap.cs b/src/System.Net.IPNetwork/IPNetwork2overlap.cs index e1303423..0f10300a 100644 --- a/src/System.Net.IPNetwork/IPNetwork2overlap.cs +++ b/src/System.Net.IPNetwork/IPNetwork2overlap.cs @@ -6,28 +6,8 @@ namespace System.Net; using System.Numerics; -/// -/// Overlap. -/// public sealed partial class IPNetwork2 { - /// - /// Determines if two IPNetwork2 objects overlap each other. - /// - /// The first IPNetwork2 object. - /// The second IPNetwork2 object. - /// Returns true if the two IPNetwork2 objects overlap, otherwise false. - [Obsolete("static Overlap is deprecated, please use instance Overlap.")] - public static bool Overlap(IPNetwork2 network, IPNetwork2 network2) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.Overlap(network2); - } - /// /// return true is network2 overlap network. /// @@ -54,4 +34,21 @@ public bool Overlap(IPNetwork2 network2) return overlap; } + + /// + /// Determines if two IPNetwork2 objects overlap each other. + /// + /// The first IPNetwork2 object. + /// The second IPNetwork2 object. + /// Returns true if the two IPNetwork2 objects overlap, otherwise false. + [Obsolete("static Overlap is deprecated, please use instance Overlap.")] + public static bool Overlap(IPNetwork2 network, IPNetwork2 network2) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.Overlap(network2); + } } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/split.py b/src/System.Net.IPNetwork/split.py new file mode 100644 index 00000000..09e03572 --- /dev/null +++ b/src/System.Net.IPNetwork/split.py @@ -0,0 +1,83 @@ +import re +import os + +def split_ipnetwork2_into_partials(input_file, output_dir=None): + # Set output directory to current directory if not specified + if output_dir is None: + output_dir = os.path.dirname(input_file) or '.' + + # Create output directory if it doesn't exist + if not os.path.exists(output_dir): + os.makedirs(output_dir) + + # Read the input file + with open(input_file, 'r', encoding='utf-8') as f: + content = f.read() + + # Extract namespace declaration and class declaration + namespace_match = re.search(r'namespace\s+([^\s{]+)', content) + if not namespace_match: + raise ValueError("Could not find namespace declaration") + namespace = namespace_match.group(1) + + class_match = re.search(r'(public\s+(?:sealed\s+)?(?:partial\s+)?class\s+IPNetwork2[^{]*)', content) + if not class_match: + raise ValueError("Could not find IPNetwork2 class declaration") + class_declaration = class_match.group(1) + + # Make sure class declaration includes 'partial' keyword + if 'partial' not in class_declaration: + class_declaration = class_declaration.replace('class', 'partial class') + if 'partial' not in class_declaration: + class_declaration = class_declaration.replace('public', 'public partial') + + # Find using directives + using_directives = re.findall(r'using\s+[^;]+;', content) + using_section = '\n'.join(using_directives) + + # Find all regions + region_pattern = r'#region\s+([^\r\n]+)(.+?)#endregion' + regions = re.findall(region_pattern, content, re.DOTALL) + + if not regions: + print("No regions found in the file.") + return + + # Create a file for each region + for region_name, region_content in regions: + # Clean region name for file name + region_name = region_name.strip() + sanitized_region_name = re.sub(r'[^\w]', '', region_name) + file_name = f"IPNetwork2{sanitized_region_name}.cs" + file_path = os.path.join(output_dir, file_name) + + # Create file content + file_content = f"""// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace {namespace}; + +{class_declaration} +{{ + {region_content} +}} +""" + + # Write to file + with open(file_path, 'w', encoding='utf-8') as f: + f.write(file_content) + + print(f"Created {file_path}") + + print(f"Successfully split {len(regions)} regions into separate files.") + +if __name__ == "__main__": + import sys + + if len(sys.argv) > 1: + input_file = sys.argv[1] + output_dir = sys.argv[2] if len(sys.argv) > 2 else None + split_ipnetwork2_into_partials(input_file, output_dir) + else: + print("Usage: python split_ipnetwork2.py [output_directory]") From 6a57e8a6b108575fa05b9130dae5dcd4e020e45d Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sat, 29 Mar 2025 23:02:46 +0100 Subject: [PATCH 18/25] Chore: document partial classes --- src/System.Net.IPNetwork/IPNetwork2.cs | 10 ++++++++++ .../IPNetwork2IANAblock.cs | 3 +++ .../IPNetwork2ListIPAddress.cs | 5 ++++- .../IPNetwork2Operators.cs | 3 +++ src/System.Net.IPNetwork/IPNetwork2Print.cs | 4 ++++ src/System.Net.IPNetwork/IPNetwork2Subnet.cs | 3 +++ .../IPNetwork2Supernet.cs | 3 +++ .../IPNetwork2SupernetArray.cs | 3 +++ src/System.Net.IPNetwork/IPNetwork2ToCidr.cs | 3 +++ .../IPNetwork2ToIPAddress.cs | 3 +++ .../IPNetwork2ToNetmask.cs | 3 +++ .../IPNetwork2ToString.cs | 19 ------------------- src/System.Net.IPNetwork/IPNetwork2ToUint.cs | 3 +++ .../IPNetwork2TryGuessCidr.cs | 3 +++ .../IPNetwork2ValidNetmask.cs | 3 +++ .../IPNetwork2WideSubnet.cs | 3 +++ .../IPNetwork2XmlSerialization.cs | 3 +++ .../IPNetwork2contains.cs | 4 ++++ src/System.Net.IPNetwork/IPNetwork2overlap.cs | 3 +++ 19 files changed, 64 insertions(+), 20 deletions(-) delete mode 100644 src/System.Net.IPNetwork/IPNetwork2ToString.cs diff --git a/src/System.Net.IPNetwork/IPNetwork2.cs b/src/System.Net.IPNetwork/IPNetwork2.cs index be6fd833..61ba5349 100644 --- a/src/System.Net.IPNetwork/IPNetwork2.cs +++ b/src/System.Net.IPNetwork/IPNetwork2.cs @@ -14,4 +14,14 @@ namespace System.Net; [CLSCompliant(true)] public sealed partial class IPNetwork2 : IComparable, ISerializable { + /// + /// Returns a string representation of the object. + /// + /// + /// A string representation of the object which includes the Network and Cidr values separated by a "/". + /// + public override string ToString() + { + return string.Format("{0}/{1}", this.Network, this.Cidr); + } } diff --git a/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs b/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs index 943a65fc..dd912e56 100644 --- a/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs +++ b/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs @@ -4,6 +4,9 @@ namespace System.Net; +/// +/// IANA Blocks. +/// public sealed partial class IPNetwork2 { private static readonly Lazy IanaAblockReserved = new (() => IPNetwork2.Parse("10.0.0.0/8")); diff --git a/src/System.Net.IPNetwork/IPNetwork2ListIPAddress.cs b/src/System.Net.IPNetwork/IPNetwork2ListIPAddress.cs index f62fd0f7..9fe89873 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ListIPAddress.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ListIPAddress.cs @@ -4,8 +4,11 @@ namespace System.Net; +/// +/// ListIPAddress. +/// public sealed partial class IPNetwork2 -{ +{ /// /// List all ip addresses in a subnet. /// diff --git a/src/System.Net.IPNetwork/IPNetwork2Operators.cs b/src/System.Net.IPNetwork/IPNetwork2Operators.cs index 05996957..1c3d85c6 100644 --- a/src/System.Net.IPNetwork/IPNetwork2Operators.cs +++ b/src/System.Net.IPNetwork/IPNetwork2Operators.cs @@ -4,6 +4,9 @@ namespace System.Net; +/// +/// Opertors. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2Print.cs b/src/System.Net.IPNetwork/IPNetwork2Print.cs index 01caa386..387f63d5 100644 --- a/src/System.Net.IPNetwork/IPNetwork2Print.cs +++ b/src/System.Net.IPNetwork/IPNetwork2Print.cs @@ -5,6 +5,10 @@ namespace System.Net; using System.IO; + +/// +/// Print. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2Subnet.cs b/src/System.Net.IPNetwork/IPNetwork2Subnet.cs index 2f51d442..8b5e8701 100644 --- a/src/System.Net.IPNetwork/IPNetwork2Subnet.cs +++ b/src/System.Net.IPNetwork/IPNetwork2Subnet.cs @@ -4,6 +4,9 @@ namespace System.Net; +/// +/// Subnet. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2Supernet.cs b/src/System.Net.IPNetwork/IPNetwork2Supernet.cs index c2e8dd08..f18a4d9d 100644 --- a/src/System.Net.IPNetwork/IPNetwork2Supernet.cs +++ b/src/System.Net.IPNetwork/IPNetwork2Supernet.cs @@ -6,6 +6,9 @@ namespace System.Net; using System.Numerics; +/// +/// supernet. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2SupernetArray.cs b/src/System.Net.IPNetwork/IPNetwork2SupernetArray.cs index 9c8bdfea..95700a20 100644 --- a/src/System.Net.IPNetwork/IPNetwork2SupernetArray.cs +++ b/src/System.Net.IPNetwork/IPNetwork2SupernetArray.cs @@ -6,6 +6,9 @@ namespace System.Net; using System.Collections.Generic; +/// +/// SupernetArray. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs b/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs index 94074340..3d3347d1 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs @@ -7,6 +7,9 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; +/// +/// ToCidr. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2ToIPAddress.cs b/src/System.Net.IPNetwork/IPNetwork2ToIPAddress.cs index 9a3be032..5cfa5e24 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ToIPAddress.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ToIPAddress.cs @@ -7,6 +7,9 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; +/// +/// ToIPAddress. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2ToNetmask.cs b/src/System.Net.IPNetwork/IPNetwork2ToNetmask.cs index f483be24..6675b61e 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ToNetmask.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ToNetmask.cs @@ -7,6 +7,9 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; +/// +/// ToNetmask. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2ToString.cs b/src/System.Net.IPNetwork/IPNetwork2ToString.cs deleted file mode 100644 index c9dab960..00000000 --- a/src/System.Net.IPNetwork/IPNetwork2ToString.cs +++ /dev/null @@ -1,19 +0,0 @@ -// -// Copyright (c) IPNetwork. All rights reserved. -// - -namespace System.Net; - -public sealed partial class IPNetwork2 -{ - /// - /// Returns a string representation of the object. - /// - /// - /// A string representation of the object which includes the Network and Cidr values separated by a "/". - /// - public override string ToString() - { - return string.Format("{0}/{1}", this.Network, this.Cidr); - } -} \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2ToUint.cs b/src/System.Net.IPNetwork/IPNetwork2ToUint.cs index c24edadb..b40c595b 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ToUint.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ToUint.cs @@ -7,6 +7,9 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; +/// +/// ToUint. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs b/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs index 3c48c57c..2aa1ccd8 100644 --- a/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs +++ b/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs @@ -6,6 +6,9 @@ namespace System.Net; using System.Net.Sockets; +/// +/// TryGuessCidr. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2ValidNetmask.cs b/src/System.Net.IPNetwork/IPNetwork2ValidNetmask.cs index 69a253d6..e67fc76b 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ValidNetmask.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ValidNetmask.cs @@ -7,6 +7,9 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; +/// +/// ValidNetmask. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs b/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs index bb632364..05d7ff39 100644 --- a/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs +++ b/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs @@ -7,6 +7,9 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; +/// +/// WideSubnet. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2XmlSerialization.cs b/src/System.Net.IPNetwork/IPNetwork2XmlSerialization.cs index 343661c5..c0eccd30 100644 --- a/src/System.Net.IPNetwork/IPNetwork2XmlSerialization.cs +++ b/src/System.Net.IPNetwork/IPNetwork2XmlSerialization.cs @@ -6,6 +6,9 @@ namespace System.Net; using System.Net.Sockets; +/// +/// Serialization. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2contains.cs b/src/System.Net.IPNetwork/IPNetwork2contains.cs index b8cfb223..f1108193 100644 --- a/src/System.Net.IPNetwork/IPNetwork2contains.cs +++ b/src/System.Net.IPNetwork/IPNetwork2contains.cs @@ -7,6 +7,9 @@ namespace System.Net; using System.Net.Sockets; using System.Numerics; +/// +/// Contains. +/// public sealed partial class IPNetwork2 { /// @@ -14,6 +17,7 @@ public sealed partial class IPNetwork2 /// /// A string containing an ip address to convert. /// true if ipaddress is contained into the IP Network; otherwise, false. + [System.CLSCompliant(false)] public bool Contains(IPAddress contains) { if (contains == null) diff --git a/src/System.Net.IPNetwork/IPNetwork2overlap.cs b/src/System.Net.IPNetwork/IPNetwork2overlap.cs index 0f10300a..7f8c8d80 100644 --- a/src/System.Net.IPNetwork/IPNetwork2overlap.cs +++ b/src/System.Net.IPNetwork/IPNetwork2overlap.cs @@ -6,6 +6,9 @@ namespace System.Net; using System.Numerics; +/// +/// Overlap. +/// public sealed partial class IPNetwork2 { /// From ddcfdc4452fefe65d2501250dff27cf7243dd068 Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sat, 29 Mar 2025 23:15:11 +0100 Subject: [PATCH 19/25] Fix: order methodes --- .../IPNetwork2GetHashCode.cs | 3 + .../IPNetwork2IANAblock.cs | 26 ++--- .../IPNetwork2IComparableIPNetworkMembers.cs | 3 + .../IPNetwork2IEquatableIPNetworkMembers.cs | 3 + .../IPNetwork2ISerializable.cs | 3 + src/System.Net.IPNetwork/IPNetwork2Print.cs | 34 +++--- src/System.Net.IPNetwork/IPNetwork2Subnet.cs | 48 ++++---- .../IPNetwork2Supernet.cs | 50 ++++----- src/System.Net.IPNetwork/IPNetwork2ToCidr.cs | 58 +++++----- src/System.Net.IPNetwork/IPNetwork2ToUint.cs | 106 +++++++++--------- .../IPNetwork2WildcardMask.cs | 3 + .../IPNetwork2contains.cs | 85 +++++++------- src/System.Net.IPNetwork/IPNetwork2overlap.cs | 34 +++--- 13 files changed, 237 insertions(+), 219 deletions(-) diff --git a/src/System.Net.IPNetwork/IPNetwork2GetHashCode.cs b/src/System.Net.IPNetwork/IPNetwork2GetHashCode.cs index 28327c3c..fb7df497 100644 --- a/src/System.Net.IPNetwork/IPNetwork2GetHashCode.cs +++ b/src/System.Net.IPNetwork/IPNetwork2GetHashCode.cs @@ -4,6 +4,9 @@ namespace System.Net; +/// +/// GetHashcode. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs b/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs index dd912e56..037cba59 100644 --- a/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs +++ b/src/System.Net.IPNetwork/IPNetwork2IANAblock.cs @@ -67,18 +67,6 @@ public static bool IsIANAReserved(IPAddress ipaddress) || IPNetwork2.IANA_CBLK_RESERVED1.Contains(ipaddress); } - /// - /// return true if ipnetwork is contained in - /// IANA_ABLK_RESERVED1, IANA_BBLK_RESERVED1, IANA_CBLK_RESERVED1. - /// - /// true if the ipnetwork is a IANA reserverd IP Netowkr ; otherwise, false. - public bool IsIANAReserved() - { - return IPNetwork2.IANA_ABLK_RESERVED1.Contains(this) - || IPNetwork2.IANA_BBLK_RESERVED1.Contains(this) - || IPNetwork2.IANA_CBLK_RESERVED1.Contains(this); - } - /// /// Determines whether the specified IP network is reserved according to the IANA Reserved ranges. /// @@ -88,7 +76,7 @@ public bool IsIANAReserved() /// /// /// - /// This method is obsolete and should not be used. Please use the instance method instead. + /// This method is obsolete and should not be used. Please use the instance method, see IsIANAReserved" instead. /// /// /// Throws an if is null. @@ -104,4 +92,16 @@ public static bool IsIANAReserved(IPNetwork2 ipnetwork) return ipnetwork.IsIANAReserved(); } + + /// + /// return true if ipnetwork is contained in + /// IANA_ABLK_RESERVED1, IANA_BBLK_RESERVED1, IANA_CBLK_RESERVED1. + /// + /// true if the ipnetwork is a IANA reserverd IP Netowkr ; otherwise, false. + public bool IsIANAReserved() + { + return IPNetwork2.IANA_ABLK_RESERVED1.Contains(this) + || IPNetwork2.IANA_BBLK_RESERVED1.Contains(this) + || IPNetwork2.IANA_CBLK_RESERVED1.Contains(this); + } } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2IComparableIPNetworkMembers.cs b/src/System.Net.IPNetwork/IPNetwork2IComparableIPNetworkMembers.cs index 46a0153f..03ec00d2 100644 --- a/src/System.Net.IPNetwork/IPNetwork2IComparableIPNetworkMembers.cs +++ b/src/System.Net.IPNetwork/IPNetwork2IComparableIPNetworkMembers.cs @@ -4,6 +4,9 @@ namespace System.Net; +/// +/// IComparable. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2IEquatableIPNetworkMembers.cs b/src/System.Net.IPNetwork/IPNetwork2IEquatableIPNetworkMembers.cs index 61eb64cd..48e4156d 100644 --- a/src/System.Net.IPNetwork/IPNetwork2IEquatableIPNetworkMembers.cs +++ b/src/System.Net.IPNetwork/IPNetwork2IEquatableIPNetworkMembers.cs @@ -4,6 +4,9 @@ namespace System.Net; +/// +/// IEquatable. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2ISerializable.cs b/src/System.Net.IPNetwork/IPNetwork2ISerializable.cs index ee0bc788..945c8bfe 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ISerializable.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ISerializable.cs @@ -8,6 +8,9 @@ namespace System.Net; using System.Numerics; using System.Runtime.Serialization; +/// +/// ISerializable. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2Print.cs b/src/System.Net.IPNetwork/IPNetwork2Print.cs index 387f63d5..56f53764 100644 --- a/src/System.Net.IPNetwork/IPNetwork2Print.cs +++ b/src/System.Net.IPNetwork/IPNetwork2Print.cs @@ -11,6 +11,23 @@ namespace System.Net; /// public sealed partial class IPNetwork2 { + /// + /// Print an ipnetwork in a clear representation string. + /// + /// The ipnetwork. + /// Dump an IPNetwork representation as string. + /// When arg is null. + [Obsolete("static Print is deprecated, please use instance Print.")] + public static string Print(IPNetwork2 ipnetwork) + { + if (ipnetwork == null) + { + throw new ArgumentNullException("ipnetwork"); + } + + return ipnetwork.Print(); + } + /// /// Print an ipnetwork in a clear representation string. /// @@ -31,21 +48,4 @@ public string Print() return sw.ToString(); } } - - /// - /// Print an ipnetwork in a clear representation string. - /// - /// The ipnetwork. - /// Dump an IPNetwork representation as string. - /// When arg is null. - [Obsolete("static Print is deprecated, please use instance Print.")] - public static string Print(IPNetwork2 ipnetwork) - { - if (ipnetwork == null) - { - throw new ArgumentNullException("ipnetwork"); - } - - return ipnetwork.Print(); - } } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2Subnet.cs b/src/System.Net.IPNetwork/IPNetwork2Subnet.cs index 8b5e8701..94173fdd 100644 --- a/src/System.Net.IPNetwork/IPNetwork2Subnet.cs +++ b/src/System.Net.IPNetwork/IPNetwork2Subnet.cs @@ -9,20 +9,6 @@ namespace System.Net; /// public sealed partial class IPNetwork2 { - /// - /// Subnet a network into multiple nets of cidr mask - /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 - /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. - /// - /// A byte representing the CIDR to be used to subnet the current IPNetwork. - /// A IPNetworkCollection splitted by CIDR. - public IPNetworkCollection Subnet(byte cidr) - { - IPNetwork2.InternalSubnet(false, this, cidr, out IPNetworkCollection ipnetworkCollection); - - return ipnetworkCollection; - } - /// /// Subnet method is used to divide the given IP network into subnets with the specified CIDR. /// @@ -42,6 +28,26 @@ public static IPNetworkCollection Subnet(IPNetwork2 network, byte cidr) return network.Subnet(cidr); } + /// + /// Subnet a network into multiple nets of cidr mask + /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 + /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. + /// + /// The network. + /// A byte representing the CIDR to be used to subnet the current IPNetwork. + /// The resulting subnetted IPNetwork. + /// true if network was split successfully; otherwise, false. + [Obsolete("static TrySubnet is deprecated, please use instance TrySubnet.")] + public static bool TrySubnet(IPNetwork2 network, byte cidr, out IPNetworkCollection ipnetworkCollection) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.TrySubnet(cidr, out ipnetworkCollection); + } + /// /// Subnet a network into multiple nets of cidr mask /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 @@ -68,19 +74,13 @@ public bool TrySubnet(byte cidr, out IPNetworkCollection ipnetworkCollection) /// Subnet 192.168.0.0/24 into cidr 25 gives 192.168.0.0/25, 192.168.0.128/25 /// Subnet 10.0.0.0/8 into cidr 9 gives 10.0.0.0/9, 10.128.0.0/9. /// - /// The network. /// A byte representing the CIDR to be used to subnet the current IPNetwork. - /// The resulting subnetted IPNetwork. - /// true if network was split successfully; otherwise, false. - [Obsolete("static TrySubnet is deprecated, please use instance TrySubnet.")] - public static bool TrySubnet(IPNetwork2 network, byte cidr, out IPNetworkCollection ipnetworkCollection) + /// A IPNetworkCollection splitted by CIDR. + public IPNetworkCollection Subnet(byte cidr) { - if (network == null) - { - throw new ArgumentNullException("network"); - } + IPNetwork2.InternalSubnet(false, this, cidr, out IPNetworkCollection ipnetworkCollection); - return network.TrySubnet(cidr, out ipnetworkCollection); + return ipnetworkCollection; } /// diff --git a/src/System.Net.IPNetwork/IPNetwork2Supernet.cs b/src/System.Net.IPNetwork/IPNetwork2Supernet.cs index f18a4d9d..6b47baeb 100644 --- a/src/System.Net.IPNetwork/IPNetwork2Supernet.cs +++ b/src/System.Net.IPNetwork/IPNetwork2Supernet.cs @@ -17,44 +17,48 @@ public sealed partial class IPNetwork2 /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. /// + /// the network. /// The network to supernet with. /// A supernetted IP Network. - public IPNetwork2 Supernet(IPNetwork2 network2) + [Obsolete("static Supernet is deprecated, please use instance Supernet.")] + public static IPNetwork2 Supernet(IPNetwork2 network, IPNetwork2 network2) { - IPNetwork2.InternalSupernet(false, this, network2, out IPNetwork2 supernet); - return supernet; + return network.Supernet(network2); } /// - /// Supernet two consecutive cidr equal subnet into a single one + /// Try to supernet two consecutive cidr equal subnet into a single one /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. /// /// the network. /// The network to supernet with. - /// A supernetted IP Network. - [Obsolete("static Supernet is deprecated, please use instance Supernet.")] - public static IPNetwork2 Supernet(IPNetwork2 network, IPNetwork2 network2) + /// The resulting IPNetwork. + /// true if network2 was supernetted successfully; otherwise, false. + [Obsolete("static TrySupernet is deprecated, please use instance TrySupernet.")] + public static bool TrySupernet(IPNetwork2 network, IPNetwork2 network2, out IPNetwork2 supernet) { - return network.Supernet(network2); + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.TrySupernet(network2, out supernet); } /// - /// Try to supernet two consecutive cidr equal subnet into a single one + /// Supernet two consecutive cidr equal subnet into a single one /// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23 /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. /// /// The network to supernet with. - /// The resulting IPNetwork. - /// true if network2 was supernetted successfully; otherwise, false. - public bool TrySupernet(IPNetwork2 network2, out IPNetwork2 supernet) + /// A supernetted IP Network. + public IPNetwork2 Supernet(IPNetwork2 network2) { - IPNetwork2.InternalSupernet(true, this, network2, out IPNetwork2 outSupernet); - bool parsed = outSupernet != null; - supernet = outSupernet; - return parsed; + IPNetwork2.InternalSupernet(false, this, network2, out IPNetwork2 supernet); + return supernet; } /// @@ -63,19 +67,15 @@ public bool TrySupernet(IPNetwork2 network2, out IPNetwork2 supernet) /// 10.1.0.0/16 + 10.0.0.0/16 = 10.0.0.0/15 /// 192.168.0.0/24 + 192.168.0.0/25 = 192.168.0.0/24. /// - /// the network. /// The network to supernet with. /// The resulting IPNetwork. /// true if network2 was supernetted successfully; otherwise, false. - [Obsolete("static TrySupernet is deprecated, please use instance TrySupernet.")] - public static bool TrySupernet(IPNetwork2 network, IPNetwork2 network2, out IPNetwork2 supernet) + public bool TrySupernet(IPNetwork2 network2, out IPNetwork2 supernet) { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.TrySupernet(network2, out supernet); + IPNetwork2.InternalSupernet(true, this, network2, out IPNetwork2 outSupernet); + bool parsed = outSupernet != null; + supernet = outSupernet; + return parsed; } /// diff --git a/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs b/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs index 3d3347d1..7f7cae74 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs @@ -12,35 +12,6 @@ namespace System.Net; /// public sealed partial class IPNetwork2 { - /// - /// Convert netmask to CIDR - /// 255.255.255.0 -> 24 - /// 255.255.0.0 -> 16 - /// 255.0.0.0 -> 8. - /// - /// Whether to throw exception or not during conversion. - /// A number representing the netmask to convert. - /// Either IPv4 or IPv6. - /// A byte representing the netmask in cidr format (/24). - private static void InternalToCidr(bool tryParse, BigInteger netmask, AddressFamily family, out byte? cidr) - { - if (!IPNetwork2.InternalValidNetmask(netmask, family)) - { - if (tryParse == false) - { - throw new ArgumentException("netmask"); - } - - cidr = null; - return; - } - - byte cidr2 = IPNetwork2.BitsSet(netmask, family); - cidr = cidr2; - - return; - } - /// /// Convert netmask to CIDR /// 255.255.255.0 -> 24 @@ -103,4 +74,33 @@ private static void InternalToCidr(bool tryParse, IPAddress netmask, out byte? c return; } + + /// + /// Convert netmask to CIDR + /// 255.255.255.0 -> 24 + /// 255.255.0.0 -> 16 + /// 255.0.0.0 -> 8. + /// + /// Whether to throw exception or not during conversion. + /// A number representing the netmask to convert. + /// Either IPv4 or IPv6. + /// A byte representing the netmask in cidr format (/24). + private static void InternalToCidr(bool tryParse, BigInteger netmask, AddressFamily family, out byte? cidr) + { + if (!IPNetwork2.InternalValidNetmask(netmask, family)) + { + if (tryParse == false) + { + throw new ArgumentException("netmask"); + } + + cidr = null; + return; + } + + byte cidr2 = IPNetwork2.BitsSet(netmask, family); + cidr = cidr2; + + return; + } } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2ToUint.cs b/src/System.Net.IPNetwork/IPNetwork2ToUint.cs index b40c595b..fc704a2e 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ToUint.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ToUint.cs @@ -43,59 +43,6 @@ public static bool TryToBigInteger(IPAddress ipaddress, out BigInteger? uintIpAd return parsed; } - /// - /// Converts an IPAddress to a nullable BigInteger representation. - /// - /// Indicates whether the method should handle errors silently (true) or throw exceptions (false). - /// The IPAddress to convert. - /// The resulting BigInteger representation of the IP address, or null if conversion fails and tryParse is true. - internal static void InternalToBigInteger(bool tryParse, IPAddress ipaddress, out BigInteger? uintIpAddress) - { - if (ipaddress == null) - { - if (tryParse == false) - { - throw new ArgumentNullException("ipaddress"); - } - - uintIpAddress = null; - return; - } - -#if NETSTANDARD2_1 - byte[] bytes = ipaddress.AddressFamily == AddressFamily.InterNetwork ? new byte[4] : new byte[16]; - Span span = bytes.AsSpan(); - if (!ipaddress.TryWriteBytes(span, out _)) - { - if (tryParse == false) - { - throw new ArgumentException("ipaddress"); - } - - uintIpAddress = null; - return; - } - - uintIpAddress = new BigInteger(span, isUnsigned: true, isBigEndian: true); -#elif NETSTANDARD20 - byte[] bytes = ipaddress.GetAddressBytes(); - bytes.AsSpan().Reverse(); - - // add trailing 0 to make unsigned - byte[] unsigned = new byte[bytes.Length + 1]; - Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); - uintIpAddress = new BigInteger(unsigned); -#else - byte[] bytes = ipaddress.GetAddressBytes(); - Array.Reverse(bytes); - - // add trailing 0 to make unsigned - byte[] unsigned = new byte[bytes.Length + 1]; - Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); - uintIpAddress = new BigInteger(unsigned); -#endif - } - /// /// Convert a cidr to BigInteger netmask. /// @@ -190,4 +137,57 @@ internal static void InternalToBigInteger(bool tryParse, byte cidr, AddressFamil Array.Copy(m, 0, bmask, 0, copy); uintNetmask = new BigInteger(bmask); } + + /// + /// Converts an IPAddress to a nullable BigInteger representation. + /// + /// Indicates whether the method should handle errors silently (true) or throw exceptions (false). + /// The IPAddress to convert. + /// The resulting BigInteger representation of the IP address, or null if conversion fails and tryParse is true. + internal static void InternalToBigInteger(bool tryParse, IPAddress ipaddress, out BigInteger? uintIpAddress) + { + if (ipaddress == null) + { + if (tryParse == false) + { + throw new ArgumentNullException("ipaddress"); + } + + uintIpAddress = null; + return; + } + +#if NETSTANDARD2_1 + byte[] bytes = ipaddress.AddressFamily == AddressFamily.InterNetwork ? new byte[4] : new byte[16]; + Span span = bytes.AsSpan(); + if (!ipaddress.TryWriteBytes(span, out _)) + { + if (tryParse == false) + { + throw new ArgumentException("ipaddress"); + } + + uintIpAddress = null; + return; + } + + uintIpAddress = new BigInteger(span, isUnsigned: true, isBigEndian: true); +#elif NETSTANDARD20 + byte[] bytes = ipaddress.GetAddressBytes(); + bytes.AsSpan().Reverse(); + + // add trailing 0 to make unsigned + byte[] unsigned = new byte[bytes.Length + 1]; + Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); + uintIpAddress = new BigInteger(unsigned); +#else + byte[] bytes = ipaddress.GetAddressBytes(); + Array.Reverse(bytes); + + // add trailing 0 to make unsigned + byte[] unsigned = new byte[bytes.Length + 1]; + Buffer.BlockCopy(bytes, 0, unsigned, 0, bytes.Length); + uintIpAddress = new BigInteger(unsigned); +#endif + } } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2WildcardMask.cs b/src/System.Net.IPNetwork/IPNetwork2WildcardMask.cs index 918b3602..069f3b14 100644 --- a/src/System.Net.IPNetwork/IPNetwork2WildcardMask.cs +++ b/src/System.Net.IPNetwork/IPNetwork2WildcardMask.cs @@ -7,6 +7,9 @@ namespace System.Net; using System.Numerics; using System.Net.Sockets; +/// +/// WildcardNetmask. +/// public sealed partial class IPNetwork2 { /// diff --git a/src/System.Net.IPNetwork/IPNetwork2contains.cs b/src/System.Net.IPNetwork/IPNetwork2contains.cs index f1108193..5529f40c 100644 --- a/src/System.Net.IPNetwork/IPNetwork2contains.cs +++ b/src/System.Net.IPNetwork/IPNetwork2contains.cs @@ -12,6 +12,44 @@ namespace System.Net; /// public sealed partial class IPNetwork2 { + /// + /// Determines whether the given IP address is part of the given IP network. + /// + /// The IP network. + /// The IP address. + /// + /// true if the IP address is part of the IP network; otherwise, false. + /// + [Obsolete("static Contains is deprecated, please use instance Contains.")] + public static bool Contains(IPNetwork2 network, IPAddress ipaddress) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.Contains(ipaddress); + } + + /// + /// Determines if the given contains the specified . + /// + /// The network to check for containment. + /// The network to check if it is contained. + /// + /// true if the contains the ; otherwise, false. + /// + [Obsolete("static Contains is deprecated, please use instance Contains.")] + public static bool Contains(IPNetwork2 network, IPNetwork2 network2) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.Contains(network2); + } + /// /// return true if ipaddress is contained in network. /// @@ -31,7 +69,8 @@ public bool Contains(IPAddress contains) } BigInteger uintNetwork = this.InternalNetwork; - BigInteger uintBroadcast = this.InternalBroadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); + BigInteger + uintBroadcast = this.InternalBroadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); var uintAddress = IPNetwork2.ToBigInteger(contains); bool result = uintAddress >= uintNetwork @@ -40,25 +79,6 @@ public bool Contains(IPAddress contains) return result; } - /// - /// Determines whether the given IP address is part of the given IP network. - /// - /// The IP network. - /// The IP address. - /// - /// true if the IP address is part of the IP network; otherwise, false. - /// - [Obsolete("static Contains is deprecated, please use instance Contains.")] - public static bool Contains(IPNetwork2 network, IPAddress ipaddress) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.Contains(ipaddress); - } - /// /// return true is network2 is fully contained in network. /// @@ -72,11 +92,13 @@ public bool Contains(IPNetwork2 contains) } BigInteger uintNetwork = this.InternalNetwork; - BigInteger uintBroadcast = this.InternalBroadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); + BigInteger + uintBroadcast = this.InternalBroadcast; // CreateBroadcast(ref uintNetwork, this._netmask, this._family); BigInteger uintFirst = contains.InternalNetwork; BigInteger - uintLast = contains.InternalBroadcast; // CreateBroadcast(ref uintFirst, network2._netmask, network2._family); + uintLast = contains + .InternalBroadcast; // CreateBroadcast(ref uintFirst, network2._netmask, network2._family); bool result = uintFirst >= uintNetwork && uintLast <= uintBroadcast; @@ -84,25 +106,6 @@ public bool Contains(IPNetwork2 contains) return result; } - /// - /// Determines if the given contains the specified . - /// - /// The network to check for containment. - /// The network to check if it is contained. - /// - /// true if the contains the ; otherwise, false. - /// - [Obsolete("static Contains is deprecated, please use instance Contains.")] - public static bool Contains(IPNetwork2 network, IPNetwork2 network2) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.Contains(network2); - } - private static BigInteger CreateBroadcast(ref BigInteger network, BigInteger netmask, AddressFamily family) { int width = family == AddressFamily.InterNetwork ? 4 : 16; diff --git a/src/System.Net.IPNetwork/IPNetwork2overlap.cs b/src/System.Net.IPNetwork/IPNetwork2overlap.cs index 7f8c8d80..e1303423 100644 --- a/src/System.Net.IPNetwork/IPNetwork2overlap.cs +++ b/src/System.Net.IPNetwork/IPNetwork2overlap.cs @@ -11,6 +11,23 @@ namespace System.Net; /// public sealed partial class IPNetwork2 { + /// + /// Determines if two IPNetwork2 objects overlap each other. + /// + /// The first IPNetwork2 object. + /// The second IPNetwork2 object. + /// Returns true if the two IPNetwork2 objects overlap, otherwise false. + [Obsolete("static Overlap is deprecated, please use instance Overlap.")] + public static bool Overlap(IPNetwork2 network, IPNetwork2 network2) + { + if (network == null) + { + throw new ArgumentNullException("network"); + } + + return network.Overlap(network2); + } + /// /// return true is network2 overlap network. /// @@ -37,21 +54,4 @@ public bool Overlap(IPNetwork2 network2) return overlap; } - - /// - /// Determines if two IPNetwork2 objects overlap each other. - /// - /// The first IPNetwork2 object. - /// The second IPNetwork2 object. - /// Returns true if the two IPNetwork2 objects overlap, otherwise false. - [Obsolete("static Overlap is deprecated, please use instance Overlap.")] - public static bool Overlap(IPNetwork2 network, IPNetwork2 network2) - { - if (network == null) - { - throw new ArgumentNullException("network"); - } - - return network.Overlap(network2); - } } \ No newline at end of file From 85ce1006c0fe98fb4d78af13cbb5c2a4951be8ff Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sat, 29 Mar 2025 23:29:34 +0100 Subject: [PATCH 20/25] Chore: cleanup --- src/System.Net.IPNetwork/split.py | 83 ------------------------------- 1 file changed, 83 deletions(-) delete mode 100644 src/System.Net.IPNetwork/split.py diff --git a/src/System.Net.IPNetwork/split.py b/src/System.Net.IPNetwork/split.py deleted file mode 100644 index 09e03572..00000000 --- a/src/System.Net.IPNetwork/split.py +++ /dev/null @@ -1,83 +0,0 @@ -import re -import os - -def split_ipnetwork2_into_partials(input_file, output_dir=None): - # Set output directory to current directory if not specified - if output_dir is None: - output_dir = os.path.dirname(input_file) or '.' - - # Create output directory if it doesn't exist - if not os.path.exists(output_dir): - os.makedirs(output_dir) - - # Read the input file - with open(input_file, 'r', encoding='utf-8') as f: - content = f.read() - - # Extract namespace declaration and class declaration - namespace_match = re.search(r'namespace\s+([^\s{]+)', content) - if not namespace_match: - raise ValueError("Could not find namespace declaration") - namespace = namespace_match.group(1) - - class_match = re.search(r'(public\s+(?:sealed\s+)?(?:partial\s+)?class\s+IPNetwork2[^{]*)', content) - if not class_match: - raise ValueError("Could not find IPNetwork2 class declaration") - class_declaration = class_match.group(1) - - # Make sure class declaration includes 'partial' keyword - if 'partial' not in class_declaration: - class_declaration = class_declaration.replace('class', 'partial class') - if 'partial' not in class_declaration: - class_declaration = class_declaration.replace('public', 'public partial') - - # Find using directives - using_directives = re.findall(r'using\s+[^;]+;', content) - using_section = '\n'.join(using_directives) - - # Find all regions - region_pattern = r'#region\s+([^\r\n]+)(.+?)#endregion' - regions = re.findall(region_pattern, content, re.DOTALL) - - if not regions: - print("No regions found in the file.") - return - - # Create a file for each region - for region_name, region_content in regions: - # Clean region name for file name - region_name = region_name.strip() - sanitized_region_name = re.sub(r'[^\w]', '', region_name) - file_name = f"IPNetwork2{sanitized_region_name}.cs" - file_path = os.path.join(output_dir, file_name) - - # Create file content - file_content = f"""// -// Copyright (c) IPNetwork. All rights reserved. -// - -namespace {namespace}; - -{class_declaration} -{{ - {region_content} -}} -""" - - # Write to file - with open(file_path, 'w', encoding='utf-8') as f: - f.write(file_content) - - print(f"Created {file_path}") - - print(f"Successfully split {len(regions)} regions into separate files.") - -if __name__ == "__main__": - import sys - - if len(sys.argv) > 1: - input_file = sys.argv[1] - output_dir = sys.argv[2] if len(sys.argv) > 2 else None - split_ipnetwork2_into_partials(input_file, output_dir) - else: - print("Usage: python split_ipnetwork2.py [output_directory]") From cc41998a8b9c0beabdea0d6c5bdfcd332f58705b Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sat, 29 Mar 2025 23:53:32 +0100 Subject: [PATCH 21/25] Feat: document and code cleanup --- src/ConsoleApplication/ActionEnum.cs | 2 +- .../BigIntegerExtensions.cs | 3 +- src/System.Net.IPNetwork/CidrClassLess.cs | 27 +- src/System.Net.IPNetwork/IPNetwork2ToCidr.cs | 2 +- .../IPNetwork2TryGuessCidr.cs | 5 +- .../IPNetwork2WideSubnet.cs | 4 +- src/TestProject/CidrClassFullIpv4UnitTest.cs | 18 +- src/TestProject/CidrClassFullIpv6UnitTest.cs | 9 +- src/TestProject/CidrClassLessUnitTest.cs | 27 +- src/TestProject/ContainsUnitTest.cs | 8 +- src/TestProject/EqualsUnitTest.cs | 33 +- src/TestProject/IPAddressExtensionTests.cs | 138 +++---- .../IPNetworkCollectionCtorTests.cs | 4 +- .../IPNetworkCollectionCurrentTests.cs | 2 +- .../IPNetworkTest/IPNetworkCompareTests.cs | 2 +- .../IPNetworkCtorWithIpAndCidrTests.cs | 3 - .../IPNetworkTest/IPNetworkExamplesTests.cs | 2 +- .../IPNetworkTest/IPNetworkIanaBlocksTests.cs | 2 +- .../IPNetworkTest/IPNetworkOverlapTests.cs | 2 +- .../IPNetworkTest/IPNetworkParseIpIpTests.cs | 6 +- .../IPNetworkParseStringStringTests.cs | 8 +- .../IPNetworkTest/IPNetworkParseTests.cs | 37 +- .../IPNetworkTest/IPNetworkPrintTests.cs | 12 +- .../IPNetworkTest/IPNetworkResizeTests.cs | 4 +- .../IPNetworkTest/IPNetworkSortTests.cs | 6 +- .../IPNetworkTest/IPNetworkSubnetTests.cs | 11 +- .../IPNetworkSupernetArrayTests.cs | 6 +- .../IPNetworkTest/IPNetworkSupernetTests.cs | 13 +- .../IPNetworkToBigIntegerTests.cs | 119 +++--- .../IPNetworkToIPAddressTests.cs | 12 +- .../IPNetworkTest/IPNetworkToNetmaskTests.cs | 11 +- .../IPNetworkTryGuessCidrTests.cs | 54 ++- .../IPNetworkTryParseCidrTests.cs | 9 +- .../IPNetworkTest/IPNetworkTryParseTests.cs | 365 +++++++++--------- .../IPNetworkTest/IPNetworkTrySubnetTests.cs | 118 +++--- .../IPNetworkTrySupernetTests.cs | 36 +- .../IPNetworkTryToBigIntegerTests.cs | 93 ++--- .../IPNetworkTest/IPNetworkTryToCidrTests.cs | 88 ++--- .../IPNetworkTryToNetmaskTests.cs | 6 +- .../IPNetworkTest/IPNetworkTryToUintTests.cs | 3 +- .../IPNetworkTryWideSubnetTests.cs | 27 +- .../IPNetworkValidNetmaskTests.cs | 2 +- .../IPNetworkTest/IPNetworkWideSubnetTests.cs | 21 +- src/TestProject/IPNetworkV6UnitTest.cs | 254 +++++------- src/TestProject/SerializeJsonTest.cs | 6 +- src/TestProject/SerializeXmlTest.cs | 4 +- src/TestProject/TryParseUnitTest.cs | 12 +- 47 files changed, 718 insertions(+), 918 deletions(-) diff --git a/src/ConsoleApplication/ActionEnum.cs b/src/ConsoleApplication/ActionEnum.cs index 0fc5db5a..844927f7 100644 --- a/src/ConsoleApplication/ActionEnum.cs +++ b/src/ConsoleApplication/ActionEnum.cs @@ -5,7 +5,7 @@ namespace System.Net; /// -/// Switch and actions +/// Switch and actions. /// public enum ActionEnum { diff --git a/src/System.Net.IPNetwork/BigIntegerExtensions.cs b/src/System.Net.IPNetwork/BigIntegerExtensions.cs index 9736bba4..688130cc 100644 --- a/src/System.Net.IPNetwork/BigIntegerExtensions.cs +++ b/src/System.Net.IPNetwork/BigIntegerExtensions.cs @@ -149,8 +149,7 @@ public static string ToOctalString(this BigInteger bigint) /// /// /// The positive number to bitwise reverse. - /// The width of the parameter. - /// + /// The width of the parameter. /// A number representing the input bitwise reversed. public static BigInteger PositiveReverse(this BigInteger input, int width) { diff --git a/src/System.Net.IPNetwork/CidrClassLess.cs b/src/System.Net.IPNetwork/CidrClassLess.cs index f815f295..5dfe2b2b 100644 --- a/src/System.Net.IPNetwork/CidrClassLess.cs +++ b/src/System.Net.IPNetwork/CidrClassLess.cs @@ -22,21 +22,20 @@ public sealed class CidrClassLess : ICidrGuess /// true if ip was converted successfully; otherwise, false. public bool TryGuessCidr(string ip, out byte cidr) { - IPAddress ipaddress = null; - bool parsed = IPAddress.TryParse(string.Format("{0}", ip), out ipaddress); - if (parsed == false) - { - cidr = 0; - return false; - } - - if (ipaddress.AddressFamily == AddressFamily.InterNetworkV6) - { - cidr = 128; - return true; - } + bool parsed = IPAddress.TryParse(string.Format("{0}", ip), out IPAddress ipaddress); + if (parsed == false) + { + cidr = 0; + return false; + } - cidr = 32; + if (ipaddress.AddressFamily == AddressFamily.InterNetworkV6) + { + cidr = 128; return true; } + + cidr = 32; + return true; + } } \ No newline at end of file diff --git a/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs b/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs index 7f7cae74..6dcf1fb2 100644 --- a/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs +++ b/src/System.Net.IPNetwork/IPNetwork2ToCidr.cs @@ -56,7 +56,7 @@ private static void InternalToCidr(bool tryParse, IPAddress netmask, out byte? c return; } - bool parsed = IPNetwork2.TryToBigInteger(netmask, out BigInteger? uintNetmask2); + IPNetwork2.TryToBigInteger(netmask, out BigInteger? uintNetmask2); // 20180217 lduchosal // impossible to reach code. diff --git a/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs b/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs index 2aa1ccd8..bb635739 100644 --- a/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs +++ b/src/System.Net.IPNetwork/IPNetwork2TryGuessCidr.cs @@ -31,14 +31,13 @@ public static bool TryGuessCidr(string ip, out byte cidr) /// true if cidr was converted successfully; otherwise, false. public static bool TryParseCidr(string sidr, AddressFamily family, out byte? cidr) { - byte b = 0; - if (!byte.TryParse(sidr, out b)) + if (!byte.TryParse(sidr, out byte b)) { cidr = null; return false; } - if (!IPNetwork2.TryToNetmask(b, family, out IPAddress netmask)) + if (!IPNetwork2.TryToNetmask(b, family, out IPAddress _)) { cidr = null; return false; diff --git a/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs b/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs index 05d7ff39..d424eb74 100644 --- a/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs +++ b/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs @@ -49,7 +49,7 @@ public static IPNetwork2 WideSubnet(string start, string end) } var ipnetwork = new IPNetwork2(0, startIP.AddressFamily, 0); - for (byte cidr = 32; cidr >= 0; cidr--) + for (byte cidr = 32; true; cidr--) { var wideSubnet = IPNetwork2.Parse(start, cidr); if (wideSubnet.Contains(endIP)) @@ -151,7 +151,7 @@ internal static void InternalWideSubnet(bool tryWide, IPNetwork2[] ipnetworks, o } var ipn = new IPNetwork2(0, family, 0); - for (byte cidr = nnin0.cidr; cidr >= 0; cidr--) + for (byte cidr = nnin0.cidr; true; cidr--) { var wideSubnet = new IPNetwork2(uintNnin0, family, cidr); if (wideSubnet.Contains(ipaddressX)) diff --git a/src/TestProject/CidrClassFullIpv4UnitTest.cs b/src/TestProject/CidrClassFullIpv4UnitTest.cs index e5e3cac5..44bc5e15 100644 --- a/src/TestProject/CidrClassFullIpv4UnitTest.cs +++ b/src/TestProject/CidrClassFullIpv4UnitTest.cs @@ -18,8 +18,7 @@ public void TestTryGuessCidrNull() { var cidrguess = new CidrClassFull(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr(null, out cidr); + bool parsed = cidrguess.TryGuessCidr(null, out byte cidr); Assert.AreEqual(false, parsed, "parsed"); Assert.AreEqual(0, cidr, "cidr"); @@ -33,8 +32,7 @@ public void TestTryGuessCidrA() { var cidrguess = new CidrClassFull(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("10.0.0.0", out cidr); + bool parsed = cidrguess.TryGuessCidr("10.0.0.0", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(8, cidr, "cidr"); @@ -48,8 +46,7 @@ public void TestTryGuessCidrB() { var cidrguess = new CidrClassFull(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("172.0.0.0", out cidr); + bool parsed = cidrguess.TryGuessCidr("172.0.0.0", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(16, cidr, "cidr"); @@ -63,8 +60,7 @@ public void TestTryGuessCidrC() { var cidrguess = new CidrClassFull(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("192.0.0.0", out cidr); + bool parsed = cidrguess.TryGuessCidr("192.0.0.0", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(24, cidr, "cidr"); @@ -78,8 +74,7 @@ public void TestTryGuessCidrD() { var cidrguess = new CidrClassFull(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("224.0.0.0", out cidr); + bool parsed = cidrguess.TryGuessCidr("224.0.0.0", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(24, cidr, "cidr"); @@ -93,8 +88,7 @@ public void TestTryGuessCidrE() { var cidrguess = new CidrClassFull(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("240.0.0.0", out cidr); + bool parsed = cidrguess.TryGuessCidr("240.0.0.0", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(24, cidr, "cidr"); diff --git a/src/TestProject/CidrClassFullIpv6UnitTest.cs b/src/TestProject/CidrClassFullIpv6UnitTest.cs index 9b1b726f..4a576b14 100644 --- a/src/TestProject/CidrClassFullIpv6UnitTest.cs +++ b/src/TestProject/CidrClassFullIpv6UnitTest.cs @@ -18,8 +18,7 @@ public void TestIpV6TryGuessCidrNull() { var cidrguess = new CidrClassFull(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr(null, out cidr); + bool parsed = cidrguess.TryGuessCidr(null, out byte cidr); Assert.AreEqual(false, parsed, "parsed"); Assert.AreEqual(0, cidr, "cidr"); @@ -33,8 +32,7 @@ public void TestIpV6TryGuessCidr1() { var cidrguess = new CidrClassFull(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("::", out cidr); + bool parsed = cidrguess.TryGuessCidr("::", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(64, cidr, "cidr"); @@ -48,8 +46,7 @@ public void TestIpV6TryGuessCidr2() { var cidrguess = new CidrClassFull(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("2001:0db8::", out cidr); + bool parsed = cidrguess.TryGuessCidr("2001:0db8::", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(64, cidr, "cidr"); diff --git a/src/TestProject/CidrClassLessUnitTest.cs b/src/TestProject/CidrClassLessUnitTest.cs index 4e0e8ae9..98c9c934 100644 --- a/src/TestProject/CidrClassLessUnitTest.cs +++ b/src/TestProject/CidrClassLessUnitTest.cs @@ -20,8 +20,7 @@ public void TestTryGuessCidrNull() { var cidrguess = new CidrClassLess(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr(null, out cidr); + bool parsed = cidrguess.TryGuessCidr(null, out byte cidr); Assert.AreEqual(false, parsed, "parsed"); Assert.AreEqual(0, cidr, "cidr"); @@ -35,8 +34,7 @@ public void TestTryGuessCidrA() { var cidrguess = new CidrClassLess(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("10.0.0.0", out cidr); + bool parsed = cidrguess.TryGuessCidr("10.0.0.0", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(32, cidr, "cidr"); @@ -50,8 +48,7 @@ public void TestTryGuessCidrB() { var cidrguess = new CidrClassLess(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("172.0.0.0", out cidr); + bool parsed = cidrguess.TryGuessCidr("172.0.0.0", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(32, cidr, "cidr"); @@ -65,8 +62,7 @@ public void TestTryGuessCidrC() { var cidrguess = new CidrClassLess(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("192.0.0.0", out cidr); + bool parsed = cidrguess.TryGuessCidr("192.0.0.0", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(32, cidr, "cidr"); @@ -80,8 +76,7 @@ public void TestTryGuessCidrD() { var cidrguess = new CidrClassLess(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("224.0.0.0", out cidr); + bool parsed = cidrguess.TryGuessCidr("224.0.0.0", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(32, cidr, "cidr"); @@ -95,8 +90,7 @@ public void TestTryGuessCidrE() { var cidrguess = new CidrClassLess(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("240.0.0.0", out cidr); + bool parsed = cidrguess.TryGuessCidr("240.0.0.0", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(32, cidr, "cidr"); @@ -114,8 +108,7 @@ public void TestIpV6TryGuessCidrNull() { var cidrguess = new CidrClassLess(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr(null, out cidr); + bool parsed = cidrguess.TryGuessCidr(null, out byte cidr); Assert.AreEqual(false, parsed, "parsed"); Assert.AreEqual(0, cidr, "cidr"); @@ -129,8 +122,7 @@ public void TestIpV6TryGuessCidr1() { var cidrguess = new CidrClassLess(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("::", out cidr); + bool parsed = cidrguess.TryGuessCidr("::", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(128, cidr, "cidr"); @@ -144,8 +136,7 @@ public void TestIpV6TryGuessCidr2() { var cidrguess = new CidrClassLess(); - byte cidr; - bool parsed = cidrguess.TryGuessCidr("2001:0db8::", out cidr); + bool parsed = cidrguess.TryGuessCidr("2001:0db8::", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(128, cidr, "cidr"); diff --git a/src/TestProject/ContainsUnitTest.cs b/src/TestProject/ContainsUnitTest.cs index b66762f7..a6e78db8 100644 --- a/src/TestProject/ContainsUnitTest.cs +++ b/src/TestProject/ContainsUnitTest.cs @@ -61,7 +61,7 @@ public void TestContainsStatic3() IPNetwork2 ipnetwork2 = null; #pragma warning disable 0618 - bool result = IPNetwork2.Contains(ipnetwork, ipnetwork2); + IPNetwork2.Contains(ipnetwork, ipnetwork2); #pragma warning restore 0618 } @@ -91,7 +91,7 @@ public void TestContains8() var ipnetwork = IPNetwork2.Parse("0.0.0.0/0"); IPNetwork2 ipnetwork2 = null; - bool result = ipnetwork.Contains(ipnetwork2); + ipnetwork.Contains(ipnetwork2); } /// @@ -105,7 +105,7 @@ public void TestContainsStatic1() IPAddress ipaddress = null; #pragma warning disable 0618 - bool result = IPNetwork2.Contains(ipnetwork, ipaddress); + IPNetwork2.Contains(ipnetwork, ipaddress); #pragma warning restore 0618 } @@ -134,7 +134,7 @@ public void TestContains10() var ipnetwork = IPNetwork2.Parse("0.0.0.0/0"); IPAddress ipaddress = null; - bool result = ipnetwork.Contains(ipaddress); + ipnetwork.Contains(ipaddress); } /// diff --git a/src/TestProject/EqualsUnitTest.cs b/src/TestProject/EqualsUnitTest.cs index 602c80ab..d0fa15f4 100644 --- a/src/TestProject/EqualsUnitTest.cs +++ b/src/TestProject/EqualsUnitTest.cs @@ -21,9 +21,8 @@ public void TestEquals_ipv6_ipv4_0() var network1 = IPNetwork2.Parse("::/32"); var network2 = IPNetwork2.Parse("0.0.0.0/32"); bool result = network1.Equals(network2); - bool expected = false; - Assert.AreEqual(expected, result, "equals"); + Assert.AreEqual(false, result, "equals"); } #endregion @@ -39,9 +38,8 @@ public void TestEquals_ipv4_1() var network1 = IPNetwork2.Parse("192.168.0.1/24"); var network2 = IPNetwork2.Parse("192.168.0.1/24"); bool result = network1.Equals(network2); - bool expected = true; - Assert.AreEqual(expected, result, "equals"); + Assert.AreEqual(true, result, "equals"); } /// @@ -53,9 +51,8 @@ public void TestEquals_ipv4_2() var network1 = IPNetwork2.Parse("192.168.0.1/24"); IPNetwork2 network2 = null; bool result = network1.Equals(network2); - bool expected = false; - Assert.AreEqual(expected, result, "equals"); + Assert.AreEqual(false, result, "equals"); } /// @@ -67,9 +64,8 @@ public void TestEquals_ipv4_3() var network1 = IPNetwork2.Parse("192.168.0.1/24"); object network2 = string.Empty; bool result = network1.Equals(network2); - bool expected = false; - Assert.AreEqual(expected, result, "equals"); + Assert.AreEqual(false, result, "equals"); } /// @@ -81,9 +77,8 @@ public void TestEquals_ipv4_4() var network1 = IPNetwork2.Parse("192.168.0.1/24"); var network2 = IPNetwork2.Parse("192.168.0.1/25"); bool result = network1.Equals(network2); - bool expected = false; - Assert.AreEqual(expected, result, "equals"); + Assert.AreEqual(false, result, "equals"); } /// @@ -95,9 +90,8 @@ public void TestEquals_ipv4_5() var network1 = IPNetwork2.Parse("192.168.0.1/24"); var network2 = IPNetwork2.Parse("192.168.1.1/24"); bool result = network1.Equals(network2); - bool expected = false; - Assert.AreEqual(expected, result, "equals"); + Assert.AreEqual(false, result, "equals"); } #endregion @@ -113,9 +107,8 @@ public void TestEquals_ipv6_1() var network1 = IPNetwork2.Parse("::1/128"); var network2 = IPNetwork2.Parse("::1/128"); bool result = network1.Equals(network2); - bool expected = true; - Assert.AreEqual(expected, result, "equals"); + Assert.AreEqual(true, result, "equals"); } /// @@ -127,9 +120,8 @@ public void TestEquals_ipv6_2() var network1 = IPNetwork2.Parse("::1/128"); IPNetwork2 network2 = null; bool result = network1.Equals(network2); - bool expected = false; - Assert.AreEqual(expected, result, "equals"); + Assert.AreEqual(false, result, "equals"); } /// @@ -141,9 +133,8 @@ public void TestEquals_ipv6_3() var network1 = IPNetwork2.Parse("::1/128"); object network2 = string.Empty; bool result = network1.Equals(network2); - bool expected = false; - Assert.AreEqual(expected, result, "equals"); + Assert.AreEqual(false, result, "equals"); } /// @@ -155,9 +146,8 @@ public void TestEquals_ipv6_4() var network1 = IPNetwork2.Parse("::1/128"); var network2 = IPNetwork2.Parse("::1/127"); bool result = network1.Equals(network2); - bool expected = false; - Assert.AreEqual(expected, result, "equals"); + Assert.AreEqual(false, result, "equals"); } /// @@ -169,9 +159,8 @@ public void TestEquals_ipv6_5() var network1 = IPNetwork2.Parse("::1/128"); var network2 = IPNetwork2.Parse("::10/128"); bool result = network1.Equals(network2); - bool expected = false; - Assert.AreEqual(expected, result, "equals"); + Assert.AreEqual(false, result, "equals"); } #endregion diff --git a/src/TestProject/IPAddressExtensionTests.cs b/src/TestProject/IPAddressExtensionTests.cs index d621963c..ec084766 100644 --- a/src/TestProject/IPAddressExtensionTests.cs +++ b/src/TestProject/IPAddressExtensionTests.cs @@ -19,30 +19,30 @@ public class IPAddressExtensionTests [TestMethod] public void IPAddressToIPNetwork_SingleAddress_IPv4() { - IPAddressToIPNetwork_SingleAddress_Internal( - 4, - "0.0.0.0", - "0.0.0.1", - "0.255.255.254", - "0.255.255.255", - "1.0.0.0", - "1.1.1.1", - "123.45.67.89", - "126.255.255.254", - "126.255.255.255", - "127.0.0.0", - "127.0.0.1", - "127.255.255.254", - "127.255.255.255", - "192.168.0.0", - "192.168.0.1", - "192.168.0.254", - "192.168.0.255", - "192.168.255.255", - "239.255.255.255", - "240.0.0.0", - "255.255.255.255"); - } + IPAddressToIPNetwork_SingleAddress_Internal( + 4, + "0.0.0.0", + "0.0.0.1", + "0.255.255.254", + "0.255.255.255", + "1.0.0.0", + "1.1.1.1", + "123.45.67.89", + "126.255.255.254", + "126.255.255.255", + "127.0.0.0", + "127.0.0.1", + "127.255.255.254", + "127.255.255.255", + "192.168.0.0", + "192.168.0.1", + "192.168.0.254", + "192.168.0.255", + "192.168.255.255", + "239.255.255.255", + "240.0.0.0", + "255.255.255.255"); + } /// /// Test converting a variety of IPv6 addreses into single-address networks. @@ -50,16 +50,16 @@ public void IPAddressToIPNetwork_SingleAddress_IPv4() [TestMethod] public void IPAddressToIPNetwork_SingleAddress_IPv6() { - IPAddressToIPNetwork_SingleAddress_Internal( - 16, - "::1", - "::", - "::1234:ABCD", - "1234::ABCD", - "1234:ABCD::", - "1:2:3:4:5:6:7:8", - "FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"); - } + IPAddressToIPNetwork_SingleAddress_Internal( + 16, + "::1", + "::", + "::1234:ABCD", + "1234::ABCD", + "1234:ABCD::", + "1:2:3:4:5:6:7:8", + "FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"); + } /// /// Shared test case, called upon by the above two test cases. @@ -70,22 +70,22 @@ private static void IPAddressToIPNetwork_SingleAddress_Internal( int byteCount, params string[] interestingAddrs) { - /* Start the collection of test cases with the addresses from the caller. */ - var addrs = interestingAddrs.ToList(); + /* Start the collection of test cases with the addresses from the caller. */ + var addrs = interestingAddrs.ToList(); - /* Populate with random but deterministic addresses. */ - addrs.AddRange(RandomIPs(byteCount)); + /* Populate with random but deterministic addresses. */ + addrs.AddRange(RandomIPs(byteCount)); - /* Loop through all of the test cases. */ - foreach (IPAddress ipAddr in addrs.Select(IPAddress.Parse)) - { - /* Convert to network, then pass the network object to a checker. */ - TestForSingleAddressNetwork( - ipAddr, - ipAddr.AsIPNetwork(), - byteCount * 8); - } + /* Loop through all of the test cases. */ + foreach (IPAddress ipAddr in addrs.Select(IPAddress.Parse)) + { + /* Convert to network, then pass the network object to a checker. */ + TestForSingleAddressNetwork( + ipAddr, + ipAddr.AsIPNetwork(), + byteCount * 8); } + } /// /// Generate random but deterministic IPs. @@ -94,38 +94,38 @@ private static void IPAddressToIPNetwork_SingleAddress_Internal( /// Collection of random IP addresses. private static IEnumerable RandomIPs(int byteCount) { - /* Start from a fixed starting byte array. - ng a GUID's bytes so the sequence will be unique, with the first - e XOR'd with the byte count so the two sequences will be different. */ - byte[] hashInput = Guid.Parse("12f2c3ba-7bd1-4ec3-922c-a5625b8f5dd5").ToByteArray(); - hashInput[0] ^= (byte)byteCount; + /* Start from a fixed starting byte array. + ng a GUID's bytes so the sequence will be unique, with the first + e XOR'd with the byte count so the two sequences will be different. */ + byte[] hashInput = Guid.Parse("12f2c3ba-7bd1-4ec3-922c-a5625b8f5dd5").ToByteArray(); + hashInput[0] ^= (byte)byteCount; - /* Loop many times. */ - foreach (int i in Enumerable.Range(1, 1000)) + /* Loop many times. */ + foreach (int i in Enumerable.Range(1, 1000)) + { + /* Hash the current interation to get a new block of deterministic bytes. */ + using (var hash = SHA256.Create()) { - /* Hash the current interation to get a new block of deterministic bytes. */ - using (var hash = SHA256.Create()) - { - hashInput = hash.ComputeHash(hashInput); - } - - /* Convert the first n bytes for an address. 4 will have an IPv4. 16 will make an IPv6. */ - yield return new IPAddress(hashInput.Take(byteCount).ToArray()).ToString(); + hashInput = hash.ComputeHash(hashInput); } + + /* Convert the first n bytes for an address. 4 will have an IPv4. 16 will make an IPv6. */ + yield return new IPAddress(hashInput.Take(byteCount).ToArray()).ToString(); } + } /// /// Test if a single address network is valid. /// /// Expected addresss. /// Actual network. - /// Expected CIDRsize. (32 or 128.) + /// Expected CIDRsize. (32 or 128). private static void TestForSingleAddressNetwork(IPAddress ipAddr, IPNetwork2 net, int expectedSize) { - Assert.AreEqual($"{ipAddr}/{expectedSize}", $"{net}"); - Assert.AreEqual(ipAddr, net.FirstUsable); - Assert.AreEqual(ipAddr, net.LastUsable); - Assert.AreEqual(1, net.Total); - Assert.AreEqual(expectedSize, net.Cidr); - } + Assert.AreEqual($"{ipAddr}/{expectedSize}", $"{net}"); + Assert.AreEqual(ipAddr, net.FirstUsable); + Assert.AreEqual(ipAddr, net.LastUsable); + Assert.AreEqual(1, net.Total); + Assert.AreEqual(expectedSize, net.Cidr); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkCollectionCtorTests.cs b/src/TestProject/IPNetworkCollectionCtorTests.cs index 58fdbea6..5487097c 100644 --- a/src/TestProject/IPNetworkCollectionCtorTests.cs +++ b/src/TestProject/IPNetworkCollectionCtorTests.cs @@ -5,7 +5,7 @@ namespace TestProject; /// -/// Test constructor af IPNetworkCollection +/// Test constructor af IPNetworkCollection. /// [TestClass] public class IPNetworkCollectionCtorTests @@ -17,7 +17,6 @@ public class IPNetworkCollectionCtorTests [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestCtor1() { - var ipn = new IPNetworkCollection(IPNetwork2.IANA_ABLK_RESERVED1, 33); } /// @@ -27,6 +26,5 @@ public void TestCtor1() [ExpectedException(typeof(ArgumentException))] public void TestCtor2() { - var ipn = new IPNetworkCollection(IPNetwork2.IANA_ABLK_RESERVED1, 2); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkCollectionCurrentTests.cs b/src/TestProject/IPNetworkCollectionCurrentTests.cs index 79ce1022..f76aeb73 100644 --- a/src/TestProject/IPNetworkCollectionCurrentTests.cs +++ b/src/TestProject/IPNetworkCollectionCurrentTests.cs @@ -5,7 +5,7 @@ namespace TestProject; /// -/// Test IPNetworkCollection Current +/// Test IPNetworkCollection Current. /// [TestClass] public class IPNetworkCollectionCurrentTests diff --git a/src/TestProject/IPNetworkTest/IPNetworkCompareTests.cs b/src/TestProject/IPNetworkTest/IPNetworkCompareTests.cs index 23761d6c..44c69748 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkCompareTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkCompareTests.cs @@ -76,7 +76,7 @@ public void TestCompareTo5() var ipn1 = IPNetwork2.Parse("10.0.0.1/16"); string ipn2 = string.Empty; - int comparison = ipn1.CompareTo(ipn2); + ipn1.CompareTo(ipn2); } /// diff --git a/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs index 402b1c1b..0d44fded 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs @@ -29,8 +29,6 @@ public void CtorWithIpAndCidr1() [ExpectedException(typeof(ArgumentNullException))] public void CtorWithIpAndCidr2() { - IPAddress ip = null; - var ipnetwork = new IPNetwork2(ip, 24); } /// @@ -42,6 +40,5 @@ public void CtorWithIpAndCidr3() { string ipaddress = "192.168.168.100"; var ip = IPAddress.Parse(ipaddress); - var ipnetwork = new IPNetwork2(ip, 33); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkExamplesTests.cs b/src/TestProject/IPNetworkTest/IPNetworkExamplesTests.cs index f9d80401..31e773ed 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkExamplesTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkExamplesTests.cs @@ -178,7 +178,7 @@ public void When_TrySupernet_192_168_0_0_cidr24_add_192_168_10_0_cidr24_Then_Sho var network = IPNetwork2.Parse("192.168.0.0/24"); var network2 = IPNetwork2.Parse("192.168.10.0/24"); - bool supernetted = network.TrySupernet(network2, out IPNetwork2 ipnetwork); + bool supernetted = network.TrySupernet(network2, out IPNetwork2 _); Assert.AreEqual(false, supernetted); } diff --git a/src/TestProject/IPNetworkTest/IPNetworkIanaBlocksTests.cs b/src/TestProject/IPNetworkTest/IPNetworkIanaBlocksTests.cs index 748010c7..022ff7e3 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkIanaBlocksTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkIanaBlocksTests.cs @@ -108,7 +108,7 @@ public void TestIana8() { IPNetwork2 ipnetwork = null; #pragma warning disable 0618 - bool result = IPNetwork2.IsIANAReserved(ipnetwork); + IPNetwork2.IsIANAReserved(ipnetwork); #pragma warning restore 0618 } diff --git a/src/TestProject/IPNetworkTest/IPNetworkOverlapTests.cs b/src/TestProject/IPNetworkTest/IPNetworkOverlapTests.cs index d5318f25..06734fde 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkOverlapTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkOverlapTests.cs @@ -21,7 +21,7 @@ public void TestOverlap1() IPNetwork2 network2 = null; #pragma warning disable 0618 - bool result = IPNetwork2.Overlap(network1, network2); + IPNetwork2.Overlap(network1, network2); #pragma warning restore 0618 } diff --git a/src/TestProject/IPNetworkTest/IPNetworkParseIpIpTests.cs b/src/TestProject/IPNetworkTest/IPNetworkParseIpIpTests.cs index 494bd0a5..f37fd280 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkParseIpIpTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkParseIpIpTests.cs @@ -5,7 +5,7 @@ namespace TestProject.IPNetworkTest; /// -/// Test parse ip +/// Test parse ip. /// [TestClass] public class IPNetworkParseIpIpTests @@ -33,7 +33,7 @@ public void ParseIpIp2() { IPAddress ip = null; IPAddress netm = null; - var ipnetwork = IPNetwork2.Parse(ip, netm); + IPNetwork2.Parse(ip, netm); } /// @@ -46,6 +46,6 @@ public void ParseIpIp3() string ipaddress = "192.168.168.100"; var ip = IPAddress.Parse(ipaddress); IPAddress netm = null; - var ipnetwork = IPNetwork2.Parse(ip, netm); + IPNetwork2.Parse(ip, netm); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkParseStringStringTests.cs b/src/TestProject/IPNetworkTest/IPNetworkParseStringStringTests.cs index 2d8e3ee0..eec473fc 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkParseStringStringTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkParseStringStringTests.cs @@ -33,7 +33,7 @@ public void TestParseStringString2() string ipaddress = null; string netmask = null; - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + IPNetwork2.Parse(ipaddress, netmask); } /// @@ -46,7 +46,7 @@ public void TestParseStringString3() string ipaddress = "192.168.168.100"; string netmask = null; - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + IPNetwork2.Parse(ipaddress, netmask); } /// @@ -59,7 +59,7 @@ public void TestParseStringString4() string ipaddress = string.Empty; string netmask = string.Empty; - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + IPNetwork2.Parse(ipaddress, netmask); } /// @@ -72,6 +72,6 @@ public void TestParseStringString5() string ipaddress = "192.168.168.100"; string netmask = string.Empty; - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + IPNetwork2.Parse(ipaddress, netmask); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkParseTests.cs b/src/TestProject/IPNetworkTest/IPNetworkParseTests.cs index a5b65cd3..97b32220 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkParseTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkParseTests.cs @@ -64,8 +64,8 @@ public void TestParseIPAddressNetmaskAne5() [ExpectedException(typeof(ArgumentException))] public void TestParseIPAddressNetmaskAne8() { - var ipnet = IPNetwork2.Parse("x.x.x.x", "x.x.x.x"); - } + IPNetwork2.Parse("x.x.x.x", "x.x.x.x"); + } /// /// Test. @@ -75,8 +75,8 @@ public void TestParseIPAddressNetmaskAne8() [ExpectedException(typeof(ArgumentException))] public void TestParseIPAddressNetmaskAne9() { - var ipnet = IPNetwork2.Parse("0.0.0.0", "x.x.x.x"); - } + IPNetwork2.Parse("0.0.0.0", "x.x.x.x"); + } /// /// Test. @@ -86,8 +86,8 @@ public void TestParseIPAddressNetmaskAne9() [ExpectedException(typeof(ArgumentException))] public void TestParseIPAddressNetmaskAne10() { - var ipnet = IPNetwork2.Parse("x.x.x.x", 0); - } + IPNetwork2.Parse("x.x.x.x", 0); + } /// /// Test. @@ -97,8 +97,8 @@ public void TestParseIPAddressNetmaskAne10() [ExpectedException(typeof(ArgumentException))] public void TestParseIPAddressNetmaskAne11() { - var ipnet = IPNetwork2.Parse("0.0.0.0", 33); - } + IPNetwork2.Parse("0.0.0.0", 33); + } /// /// Tests Parse functionality with Parse IPAddress Netmask. @@ -565,8 +565,7 @@ public void TestParseIPAddressNoNetmask5() public void TestParseIPAddressNoNetmask127001() { string ipaddress = "127.0.0.1"; - IPNetwork2 result = null; - IPNetwork2.TryParse(ipaddress, out result); + IPNetwork2.TryParse(ipaddress, out IPNetwork2 result); Assert.AreEqual(result.Cidr, 8); } @@ -577,9 +576,9 @@ public void TestParseIPAddressNoNetmask127001() [ExpectedException(typeof(ArgumentException))] public void TestParseStringAe1() { - string ipaddress = "garbage"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - } + string ipaddress = "garbage"; + IPNetwork2.Parse(ipaddress); + } /// /// Test. @@ -588,9 +587,9 @@ public void TestParseStringAe1() [ExpectedException(typeof(ArgumentException))] public void TestParseStringAe2() { - string ipaddress = "0.0.0.0 0.0.1.0"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - } + string ipaddress = "0.0.0.0 0.0.1.0"; + IPNetwork2.Parse(ipaddress); + } /// /// Test. @@ -599,7 +598,7 @@ public void TestParseStringAe2() [ExpectedException(typeof(ArgumentNullException))] public void TestParseStringAne1() { - string ipaddress = null; - var ipnetwork = IPNetwork2.Parse(ipaddress); - } + string ipaddress = null; + IPNetwork2.Parse(ipaddress); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkPrintTests.cs b/src/TestProject/IPNetworkTest/IPNetworkPrintTests.cs index 017552fc..517ee119 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkPrintTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkPrintTests.cs @@ -38,11 +38,11 @@ public void Print() [ExpectedException(typeof(ArgumentNullException))] public void PrintNull() { - IPNetwork2 ipn = null; + IPNetwork2 ipn = null; #pragma warning disable 0618 - string print = IPNetwork2.Print(ipn); + IPNetwork2.Print(ipn); #pragma warning restore 0618 - } + } /// /// Tests Print functionality. @@ -50,9 +50,9 @@ public void PrintNull() [TestMethod] public void PrintStatic() { - IPNetwork2 ipn = IPNetwork2.IANA_ABLK_RESERVED1; + IPNetwork2 ipn = IPNetwork2.IANA_ABLK_RESERVED1; #pragma warning disable 0618 - string print = IPNetwork2.Print(ipn); + IPNetwork2.Print(ipn); #pragma warning restore 0618 - } + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs b/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs index 0e7fadd2..9b15ddca 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs @@ -17,6 +17,6 @@ public class IPNetworkResizeTests [ExpectedException(typeof(ArgumentException))] public void TestResize1() { - byte[] resut = IPNetwork2.Resize(new byte[33], AddressFamily.InterNetwork); - } + IPNetwork2.Resize(new byte[33], AddressFamily.InterNetwork); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkSortTests.cs b/src/TestProject/IPNetworkTest/IPNetworkSortTests.cs index c1de933d..1ef4bf9b 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkSortTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkSortTests.cs @@ -20,8 +20,7 @@ public void TestSort1() var ipns = new List(); foreach (string ip in ips) { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) + if (IPNetwork2.TryParse(ip, 32, out IPNetwork2 ipn)) { ipns.Add(ipn); } @@ -44,8 +43,7 @@ public void TestSort2() var ipns = new List(); foreach (string ip in ips) { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, out ipn)) + if (IPNetwork2.TryParse(ip, out IPNetwork2 ipn)) { ipns.Add(ipn); } diff --git a/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs index 7b0fc6cc..70203881 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs @@ -21,7 +21,7 @@ public void TestSubnet1() byte cidr = 9; #pragma warning disable 0618 - IPNetworkCollection result = IPNetwork2.Subnet(ipnetwork, cidr); + IPNetwork2.Subnet(ipnetwork, cidr); #pragma warning restore 0618 } @@ -35,7 +35,7 @@ public void TestSubnetStatic1() byte cidr = 9; #pragma warning disable 0618 - IPNetworkCollection result = IPNetwork2.Subnet(ipnetwork, cidr); + IPNetwork2.Subnet(ipnetwork, cidr); #pragma warning restore 0618 } @@ -49,7 +49,7 @@ public void TestSubnet3() IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; byte cidr = 55; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + ipnetwork.Subnet(cidr); } /// @@ -62,7 +62,7 @@ public void TestSubnet4() IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; byte cidr = 1; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + ipnetwork.Subnet(cidr); } /// @@ -218,6 +218,5 @@ public void TestSubnet13() IPNetwork2 ipnetwork = IPNetwork2.IANA_CBLK_RESERVED1; byte cidr = 20; IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - IPNetwork2 error = subnets[1000]; - } + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkSupernetArrayTests.cs b/src/TestProject/IPNetworkTest/IPNetworkSupernetArrayTests.cs index 089410a0..53db8b5c 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkSupernetArrayTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkSupernetArrayTests.cs @@ -51,9 +51,9 @@ public void TestTrySupernetArray1() [ExpectedException(typeof(ArgumentNullException))] public void TestTrySupernetArray2() { - IPNetwork2[] ipnetworks = null; - IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); - } + IPNetwork2[] ipnetworks = null; + IPNetwork2.Supernet(ipnetworks); + } /// /// Tests Supernet Array functionality with Try Supernet Array3. diff --git a/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs index b35b19b4..4266043a 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs @@ -16,8 +16,7 @@ public class IPNetworkSupernetTests [TestMethod] public void TestSupernetInternal1() { - IPNetwork2 result; - IPNetwork2.InternalSupernet(true, null, null, out result); + IPNetwork2.InternalSupernet(true, null, null, out IPNetwork2 result); Assert.AreEqual(null, result, "supernet"); } @@ -101,7 +100,7 @@ public void TestSupernet2() { IPNetwork2 network1 = null; var network2 = IPNetwork2.Parse("192.168.1.1/24"); - IPNetwork2 supernet = network1.Supernet(network2); + network1.Supernet(network2); } /// @@ -113,7 +112,7 @@ public void TestSupernet3() { var network1 = IPNetwork2.Parse("192.168.1.1/24"); IPNetwork2 network2 = null; - IPNetwork2 supernet = network1.Supernet(network2); + network1.Supernet(network2); } /// @@ -125,7 +124,7 @@ public void TestSupernet4() { var network1 = IPNetwork2.Parse("192.168.0.1/24"); var network2 = IPNetwork2.Parse("192.168.1.1/25"); - IPNetwork2 supernet = network1.Supernet(network2); + network1.Supernet(network2); } /// @@ -137,7 +136,7 @@ public void TestSupernet5() { var network1 = IPNetwork2.Parse("192.168.0.1/24"); var network2 = IPNetwork2.Parse("192.168.5.1/24"); - IPNetwork2 supernet = network1.Supernet(network2); + network1.Supernet(network2); } /// @@ -193,7 +192,7 @@ public void TestSupernet8() { var network1 = IPNetwork2.Parse("192.168.1.1/24"); var network2 = IPNetwork2.Parse("192.168.2.1/24"); - IPNetwork2 supernet = network1.Supernet(network2); + network1.Supernet(network2); } /// diff --git a/src/TestProject/IPNetworkTest/IPNetworkToBigIntegerTests.cs b/src/TestProject/IPNetworkTest/IPNetworkToBigIntegerTests.cs index 2be7bc55..c25783a4 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkToBigIntegerTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkToBigIntegerTests.cs @@ -16,12 +16,12 @@ public class IPNetworkToBigIntegerTests [TestMethod] public void TestToBigInteger32() { - var mask = IPAddress.Parse("255.255.255.255"); - uint uintMask = 0xffffffff; - var result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("255.255.255.255"); + uint uintMask = 0xffffffff; + var result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } /// /// Tests To Big Integer functionality with To Big Integer24. @@ -29,12 +29,12 @@ public void TestToBigInteger32() [TestMethod] public void TestToBigInteger24() { - var mask = IPAddress.Parse("255.255.255.0"); - uint uintMask = 0xffffff00; - BigInteger? result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("255.255.255.0"); + uint uintMask = 0xffffff00; + BigInteger? result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } /// /// Tests To Big Integer functionality with To Big Integer16. @@ -42,12 +42,12 @@ public void TestToBigInteger24() [TestMethod] public void TestToBigInteger16() { - var mask = IPAddress.Parse("255.255.0.0"); - uint uintMask = 0xffff0000; - BigInteger? result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("255.255.0.0"); + uint uintMask = 0xffff0000; + BigInteger? result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } /// /// Tests To Big Integer functionality with To Big Integer8. @@ -55,12 +55,12 @@ public void TestToBigInteger16() [TestMethod] public void TestToBigInteger8() { - var mask = IPAddress.Parse("255.0.0.0"); - uint uintMask = 0xff000000; - BigInteger? result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("255.0.0.0"); + uint uintMask = 0xff000000; + BigInteger? result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } /// /// Tests To Big Integer functionality with To Big Integer0. @@ -68,12 +68,12 @@ public void TestToBigInteger8() [TestMethod] public void TestToBigInteger0() { - var mask = IPAddress.Parse("0.0.0.0"); - uint uintMask = 0x00000000; - BigInteger? result = IPNetwork2.ToBigInteger(mask); + var mask = IPAddress.Parse("0.0.0.0"); + uint uintMask = 0x00000000; + BigInteger? result = IPNetwork2.ToBigInteger(mask); - Assert.AreEqual(uintMask, result, "uint"); - } + Assert.AreEqual(uintMask, result, "uint"); + } /// /// Try to convert from null. @@ -82,8 +82,8 @@ public void TestToBigInteger0() [ExpectedException(typeof(ArgumentNullException))] public void TestToBigIntegerAne() { - BigInteger? result = IPNetwork2.ToBigInteger(null); - } + IPNetwork2.ToBigInteger(null); + } /// /// Try to convert from null IPAddress. @@ -92,9 +92,9 @@ public void TestToBigIntegerAne() [ExpectedException(typeof(ArgumentNullException))] public void TestToBigIntegerAne3() { - IPAddress ip = null; - BigInteger? result = IPNetwork2.ToBigInteger(ip); - } + IPAddress ip = null; + IPNetwork2.ToBigInteger(ip); + } /// /// Tests To Big Integer functionality with To Big Integer ANE2. @@ -102,10 +102,10 @@ public void TestToBigIntegerAne3() [TestMethod] public void TestToBigIntegerAne2() { - BigInteger? result = IPNetwork2.ToBigInteger(IPAddress.IPv6Any); - uint expected = 0; - Assert.AreEqual(expected, result, "result"); - } + BigInteger? result = IPNetwork2.ToBigInteger(IPAddress.IPv6Any); + uint expected = 0; + Assert.AreEqual(expected, result, "result"); + } /// /// Try to convert from invalid cidr. @@ -114,8 +114,8 @@ public void TestToBigIntegerAne2() [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestToBigIntegerByte() { - BigInteger result = IPNetwork2.ToUint(33, AddressFamily.InterNetwork); - } + IPNetwork2.ToUint(33, AddressFamily.InterNetwork); + } /// /// Tests To Big Integer functionality with To Big Integer Byte2. @@ -123,10 +123,10 @@ public void TestToBigIntegerByte() [TestMethod] public void TestToBigIntegerByte2() { - BigInteger result = IPNetwork2.ToUint(32, AddressFamily.InterNetwork); - uint expected = 4294967295; - Assert.AreEqual(expected, result, "result"); - } + BigInteger result = IPNetwork2.ToUint(32, AddressFamily.InterNetwork); + uint expected = 4294967295; + Assert.AreEqual(expected, result, "result"); + } /// /// Tests To Big Integer functionality with To Big Integer Byte3. @@ -134,10 +134,10 @@ public void TestToBigIntegerByte2() [TestMethod] public void TestToBigIntegerByte3() { - BigInteger result = IPNetwork2.ToUint(0, AddressFamily.InterNetwork); - uint expected = 0; - Assert.AreEqual(expected, result, "result"); - } + BigInteger result = IPNetwork2.ToUint(0, AddressFamily.InterNetwork); + uint expected = 0; + Assert.AreEqual(expected, result, "result"); + } /// /// Tests To Big Integer functionality with To Big Integer Internal1. @@ -145,10 +145,9 @@ public void TestToBigIntegerByte3() [TestMethod] public void TestToBigIntegerInternal1() { - BigInteger? result = null; - IPNetwork2.InternalToBigInteger(true, 33, AddressFamily.InterNetwork, out result); - Assert.AreEqual(null, result, "result"); - } + IPNetwork2.InternalToBigInteger(true, 33, AddressFamily.InterNetwork, out BigInteger? result); + Assert.AreEqual(null, result, "result"); + } /// /// Tests To Big Integer functionality with To Big Integer Internal2. @@ -156,10 +155,9 @@ public void TestToBigIntegerInternal1() [TestMethod] public void TestToBigIntegerInternal2() { - BigInteger? result = null; - IPNetwork2.InternalToBigInteger(true, 129, AddressFamily.InterNetworkV6, out result); - Assert.AreEqual(null, result, "result"); - } + IPNetwork2.InternalToBigInteger(true, 129, AddressFamily.InterNetworkV6, out BigInteger? result); + Assert.AreEqual(null, result, "result"); + } /// /// Try to convert from invalid IPV6 cidr. @@ -168,9 +166,8 @@ public void TestToBigIntegerInternal2() [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestToBigIntegerInternal3() { - BigInteger? result = null; - IPNetwork2.InternalToBigInteger(false, 129, AddressFamily.InterNetworkV6, out result); - } + IPNetwork2.InternalToBigInteger(false, 129, AddressFamily.InterNetworkV6, out BigInteger? _); + } /// /// Try to convert from invalid AddressFamily. @@ -179,9 +176,8 @@ public void TestToBigIntegerInternal3() [ExpectedException(typeof(NotSupportedException))] public void TestToBigIntegerInternal4() { - BigInteger? result = null; - IPNetwork2.InternalToBigInteger(false, 32, AddressFamily.AppleTalk, out result); - } + IPNetwork2.InternalToBigInteger(false, 32, AddressFamily.AppleTalk, out BigInteger? _); + } /// /// Tests To Big Integer functionality with To Big Integer Internal5. @@ -189,8 +185,7 @@ public void TestToBigIntegerInternal4() [TestMethod] public void TestToBigIntegerInternal5() { - BigInteger? result = null; - IPNetwork2.InternalToBigInteger(true, 32, AddressFamily.AppleTalk, out result); - Assert.AreEqual(null, result, "result"); - } + IPNetwork2.InternalToBigInteger(true, 32, AddressFamily.AppleTalk, out BigInteger? result); + Assert.AreEqual(null, result, "result"); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkToIPAddressTests.cs b/src/TestProject/IPNetworkTest/IPNetworkToIPAddressTests.cs index e6a0534e..2f5613bb 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkToIPAddressTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkToIPAddressTests.cs @@ -28,9 +28,9 @@ public void TestToIPAddress() [ExpectedException(typeof(ArgumentException))] public void TestToIPAddress2() { - var ip = new BigInteger(0); - var result = IPNetwork2.ToIPAddress(ip, AddressFamily.AppleTalk); - } + var ip = new BigInteger(0); + IPNetwork2.ToIPAddress(ip, AddressFamily.AppleTalk); + } /// /// Test. @@ -39,7 +39,7 @@ public void TestToIPAddress2() [ExpectedException(typeof(ArgumentException))] public void TestToIPAddress3() { - var ip = new BigInteger(new byte[] + var ip = new BigInteger(new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -51,6 +51,6 @@ public void TestToIPAddress3() 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }); - var result = IPNetwork2.ToIPAddress(ip, AddressFamily.AppleTalk); - } + IPNetwork2.ToIPAddress(ip, AddressFamily.AppleTalk); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkToNetmaskTests.cs b/src/TestProject/IPNetworkTest/IPNetworkToNetmaskTests.cs index 62201ca9..5f9465f1 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkToNetmaskTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkToNetmaskTests.cs @@ -31,7 +31,7 @@ public void ToNetmask32() public void ToNetmaskNonInet() { byte cidr = 0; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.AppleTalk).ToString(); + IPNetwork2.ToNetmask(cidr, AddressFamily.AppleTalk); } /// @@ -43,18 +43,18 @@ public void ToNetmaskNegative() { byte cidr = 0; cidr--; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); + IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork); } /// - /// Test with too big of a cidr + /// Test with too big of a cidr. /// [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void ToNetmaskOore1() { byte cidr = 33; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); + IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork); } /// @@ -63,8 +63,7 @@ public void ToNetmaskOore1() [TestMethod] public void ToNetmaskInternal1() { - IPAddress result; - IPNetwork2.InternalToNetmask(true, 0, AddressFamily.AppleTalk, out result); + IPNetwork2.InternalToNetmask(true, 0, AddressFamily.AppleTalk, out IPAddress result); Assert.AreEqual(null, result); } diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryGuessCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryGuessCidrTests.cs index 4590f319..ee3fe6bd 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryGuessCidrTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryGuessCidrTests.cs @@ -16,12 +16,11 @@ public class IPNetworkTryGuessCidrTests [TestMethod] public void TestTryGuessCidrNull() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr(null, out cidr); + bool parsed = IPNetwork2.TryGuessCidr(null, out byte cidr); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(0, cidr, "cidr"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(0, cidr, "cidr"); + } /// /// Tests Try Guess Cidr functionality with Try Guess Cidr A. @@ -29,12 +28,11 @@ public void TestTryGuessCidrNull() [TestMethod] public void TestTryGuessCidrA() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("10.0.0.0", out cidr); + bool parsed = IPNetwork2.TryGuessCidr("10.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(8, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(8, cidr, "cidr"); + } /// /// Tests Try Guess Cidr functionality with Try Guess Cidr B. @@ -42,12 +40,11 @@ public void TestTryGuessCidrA() [TestMethod] public void TestTryGuessCidrB() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("172.0.0.0", out cidr); + bool parsed = IPNetwork2.TryGuessCidr("172.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(16, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(16, cidr, "cidr"); + } /// /// Tests Try Guess Cidr functionality with Try Guess Cidr C. @@ -55,12 +52,11 @@ public void TestTryGuessCidrB() [TestMethod] public void TestTryGuessCidrC() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("192.0.0.0", out cidr); + bool parsed = IPNetwork2.TryGuessCidr("192.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(24, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(24, cidr, "cidr"); + } /// /// Tests Try Guess Cidr functionality with Try Guess Cidr D. @@ -68,12 +64,11 @@ public void TestTryGuessCidrC() [TestMethod] public void TestTryGuessCidrD() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("224.0.0.0", out cidr); + bool parsed = IPNetwork2.TryGuessCidr("224.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(24, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(24, cidr, "cidr"); + } /// /// Tests Try Guess Cidr functionality with Try Guess Cidr E. @@ -81,10 +76,9 @@ public void TestTryGuessCidrD() [TestMethod] public void TestTryGuessCidrE() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("240.0.0.0", out cidr); + bool parsed = IPNetwork2.TryGuessCidr("240.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(24, cidr, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(24, cidr, "cidr"); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryParseCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryParseCidrTests.cs index d2b2003a..a14291ee 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryParseCidrTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryParseCidrTests.cs @@ -17,9 +17,8 @@ public class IPNetworkTryParseCidrTests public void TryParseCidr1() { string sidr = "0"; - byte? cidr; byte? result = 0; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetwork, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetwork, out byte? cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); @@ -32,10 +31,9 @@ public void TryParseCidr1() public void TryParseCidr2() { string sidr = "sadsd"; - byte? cidr; byte? result = null; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetwork, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetwork, out byte? cidr); Assert.AreEqual(false, parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); @@ -48,10 +46,9 @@ public void TryParseCidr2() public void TryParseCidr3() { string sidr = "33"; - byte? cidr; byte? result = null; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetwork, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetwork, out byte? cidr); Assert.AreEqual(false, parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs index 6ed27924..fee8caf7 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs @@ -16,13 +16,12 @@ public class IPNetworkTryParseTests [TestMethod] public void TestTryParseIPAddressNetmaskAne2() { - IPNetwork2 ipnet = null; - IPAddress ip = null; - bool parsed = IPNetwork2.TryParse(ip, ip, out ipnet); + IPAddress ip = null; + bool parsed = IPNetwork2.TryParse(ip, ip, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE3. @@ -30,12 +29,11 @@ public void TestTryParseIPAddressNetmaskAne2() [TestMethod] public void TestTryParseIPAddressNetmaskAne3() { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse(string.Empty, 0, out ipnet); + bool parsed = IPNetwork2.TryParse(string.Empty, 0, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE4. @@ -43,12 +41,11 @@ public void TestTryParseIPAddressNetmaskAne3() [TestMethod] public void TestTryParseIPAddressNetmaskAne4() { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse(null, 0, out ipnet); + bool parsed = IPNetwork2.TryParse(null, 0, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE5. @@ -56,13 +53,12 @@ public void TestTryParseIPAddressNetmaskAne4() [TestMethod] public void TestTryParseIPAddressNetmaskAne5() { - string n = null; - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse(n, n, out ipnet); + string n = null; + bool parsed = IPNetwork2.TryParse(n, n, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE6. @@ -70,11 +66,10 @@ public void TestTryParseIPAddressNetmaskAne5() [TestMethod] public void TestTryParseIPAddressNetmaskAne6() { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse(IPAddress.Parse("10.10.10.10"), null, out ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + bool parsed = IPNetwork2.TryParse(IPAddress.Parse("10.10.10.10"), null, out IPNetwork2 ipnet); + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE7. @@ -82,12 +77,11 @@ public void TestTryParseIPAddressNetmaskAne6() [TestMethod] public void TestTryParseIPAddressNetmaskAne7() { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse("0.0.0.0", netmask: null, out ipnet); + bool parsed = IPNetwork2.TryParse("0.0.0.0", netmask: null, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE8. @@ -95,12 +89,11 @@ public void TestTryParseIPAddressNetmaskAne7() [TestMethod] public void TestTryParseIPAddressNetmaskAne8() { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse("x.x.x.x", "x.x.x.x", out ipnet); + bool parsed = IPNetwork2.TryParse("x.x.x.x", "x.x.x.x", out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE9. @@ -108,12 +101,11 @@ public void TestTryParseIPAddressNetmaskAne8() [TestMethod] public void TestTryParseIPAddressNetmaskAne9() { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse("0.0.0.0", "x.x.x.x", out ipnet); + bool parsed = IPNetwork2.TryParse("0.0.0.0", "x.x.x.x", out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE10. @@ -121,12 +113,11 @@ public void TestTryParseIPAddressNetmaskAne9() [TestMethod] public void TestTryParseIPAddressNetmaskAne10() { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse("x.x.x.x", 0, out ipnet); + bool parsed = IPNetwork2.TryParse("x.x.x.x", 0, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE11. @@ -134,12 +125,11 @@ public void TestTryParseIPAddressNetmaskAne10() [TestMethod] public void TestTryParseIPAddressNetmaskAne11() { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse("0.0.0.0", 33, out ipnet); + bool parsed = IPNetwork2.TryParse("0.0.0.0", 33, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } /// /// Tests Try Parse functionality with Try Parse IPAddress Netmask. @@ -147,27 +137,26 @@ public void TestTryParseIPAddressNetmaskAne11() [TestMethod] public void TestTryParseIPAddressNetmask() { - IPNetwork2 ipnetwork = null; - string ipaddress = "192.168.168.100"; - string netmask = "255.255.255.0"; - - string network = "192.168.168.0"; - string broadcast = "192.168.168.255"; - string firstUsable = "192.168.168.1"; - string lastUsable = "192.168.168.254"; - byte cidr = 24; - uint usable = 254; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "192.168.168.100"; + string netmask = "255.255.255.0"; + + string network = "192.168.168.0"; + string broadcast = "192.168.168.255"; + string firstUsable = "192.168.168.1"; + string lastUsable = "192.168.168.254"; + byte cidr = 24; + uint usable = 254; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Tests Try Parse functionality with Try Parse String1. @@ -175,27 +164,26 @@ public void TestTryParseIPAddressNetmask() [TestMethod] public void TestTryParseString1() { - IPNetwork2 ipnetwork = null; - string ipaddress = "192.168.168.100 255.255.255.0"; - - string network = "192.168.168.0"; - string netmask = "255.255.255.0"; - string broadcast = "192.168.168.255"; - string firstUsable = "192.168.168.1"; - string lastUsable = "192.168.168.254"; - byte cidr = 24; - uint usable = 254; - - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "192.168.168.100 255.255.255.0"; + + string network = "192.168.168.0"; + string netmask = "255.255.255.0"; + string broadcast = "192.168.168.255"; + string firstUsable = "192.168.168.1"; + string lastUsable = "192.168.168.254"; + byte cidr = 24; + uint usable = 254; + + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Tests Try Parse functionality with Try Parse String2. @@ -203,27 +191,26 @@ public void TestTryParseString1() [TestMethod] public void TestTryParseString2() { - IPNetwork2 ipnetwork = null; - string ipaddress = "192.168.168.100/24"; - - string network = "192.168.168.0"; - string netmask = "255.255.255.0"; - string broadcast = "192.168.168.255"; - string firstUsable = "192.168.168.1"; - string lastUsable = "192.168.168.254"; - byte cidr = 24; - uint usable = 254; - - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "192.168.168.100/24"; + + string network = "192.168.168.0"; + string netmask = "255.255.255.0"; + string broadcast = "192.168.168.255"; + string firstUsable = "192.168.168.1"; + string lastUsable = "192.168.168.254"; + byte cidr = 24; + uint usable = 254; + + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Tests Try Parse functionality with Try Parse String3. @@ -231,27 +218,26 @@ public void TestTryParseString2() [TestMethod] public void TestTryParseString3() { - IPNetwork2 ipnetwork = null; - string ipaddress = "0.0.0.0/0"; - - string network = "0.0.0.0"; - string netmask = "0.0.0.0"; - string broadcast = "255.255.255.255"; - string firstUsable = "0.0.0.1"; - string lastUsable = "255.255.255.254"; - byte cidr = 0; - uint usable = 4294967294; - - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "0.0.0.0/0"; + + string network = "0.0.0.0"; + string netmask = "0.0.0.0"; + string broadcast = "255.255.255.255"; + string firstUsable = "0.0.0.1"; + string lastUsable = "255.255.255.254"; + byte cidr = 0; + uint usable = 4294967294; + + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Tests Try Parse functionality with Try Parse String4. @@ -259,27 +245,26 @@ public void TestTryParseString3() [TestMethod] public void TestTryParseString4() { - IPNetwork2 ipnetwork = null; - string ipaddress = "0.0.0.0/32"; - - string network = "0.0.0.0"; - string netmask = "255.255.255.255"; - string broadcast = "0.0.0.0"; - string firstUsable = "0.0.0.0"; - string lastUsable = "0.0.0.0"; - byte cidr = 32; - uint usable = 0; - - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "0.0.0.0/32"; + + string network = "0.0.0.0"; + string netmask = "255.255.255.255"; + string broadcast = "0.0.0.0"; + string firstUsable = "0.0.0.0"; + string lastUsable = "0.0.0.0"; + byte cidr = 32; + uint usable = 0; + + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Tests Try Parse functionality with Try Parse String5. @@ -287,27 +272,26 @@ public void TestTryParseString4() [TestMethod] public void TestTryParseString5() { - IPNetwork2 ipnetwork = null; - string ipaddress = "255.255.255.255/32"; - - string network = "255.255.255.255"; - string netmask = "255.255.255.255"; - string broadcast = "255.255.255.255"; - string firstUsable = "255.255.255.255"; - string lastUsable = "255.255.255.255"; - byte cidr = 32; - uint usable = 0; - - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } + string ipaddress = "255.255.255.255/32"; + + string network = "255.255.255.255"; + string netmask = "255.255.255.255"; + string broadcast = "255.255.255.255"; + string firstUsable = "255.255.255.255"; + string lastUsable = "255.255.255.255"; + byte cidr = 32; + uint usable = 0; + + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } /// /// Tests Try Parse functionality with Try Parse String AE1. @@ -315,11 +299,10 @@ public void TestTryParseString5() [TestMethod] public void TestTryParseStringAe1() { - string ipaddress = "garbage"; - IPNetwork2 ipnetwork = null; - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(false, parsed, "parsed"); - } + string ipaddress = "garbage"; + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 _); + Assert.AreEqual(false, parsed, "parsed"); + } /// /// Tests Try Parse functionality with Try Parse String AE2. @@ -327,11 +310,9 @@ public void TestTryParseStringAe1() [TestMethod] public void TestTryParseStringAe2() { - string ipaddress = "0.0.0.0 0.0.1.0"; - IPNetwork2 ipnetwork = null; - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(false, parsed, "parsed"); - } + bool parsed = IPNetwork2.TryParse("0.0.0.0 0.0.1.0", out IPNetwork2 _); + Assert.AreEqual(false, parsed, "parsed"); + } /// /// Tests Try Parse functionality with Try Parse String ANE1. @@ -339,9 +320,7 @@ public void TestTryParseStringAe2() [TestMethod] public void TestTryParseStringAne1() { - string ipaddress = null; - IPNetwork2 ipnetwork = null; - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(false, parsed, "parsed"); - } + bool parsed = IPNetwork2.TryParse(null, out IPNetwork2 _); + Assert.AreEqual(false, parsed, "parsed"); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTrySubnetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTrySubnetTests.cs index 5df0f416..44d1d298 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTrySubnetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTrySubnetTests.cs @@ -16,10 +16,9 @@ public class IPNetworkTrySubnetTests [TestMethod] public void TestInternalSubnet1() { - IPNetworkCollection subnets = null; - IPNetwork2.InternalSubnet(true, null, 0, out subnets); - Assert.AreEqual(null, subnets, "subnets"); - } + IPNetwork2.InternalSubnet(true, null, 0, out IPNetworkCollection subnets); + Assert.AreEqual(null, subnets, "subnets"); + } /// /// Test a null collection. @@ -28,24 +27,20 @@ public void TestInternalSubnet1() [ExpectedException(typeof(ArgumentNullException))] public void TestInternalSubnet2() { - IPNetworkCollection subnets = null; - IPNetwork2.InternalSubnet(false, null, 0, out subnets); - } + IPNetwork2.InternalSubnet(false, null, 0, out IPNetworkCollection _); + } /// - /// Test a null network + /// Test a null network. /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void TestTrySubnet1() { - IPNetwork2 ipnetwork = null; - byte cidr = 9; - #pragma warning disable 0618 - bool subnetted = IPNetwork2.TrySubnet(ipnetwork, cidr, out var _); + IPNetwork2.TrySubnet(null, 9, out var _); #pragma warning restore 0618 - } + } /// /// Tests Try Subnet functionality with Try Subnet Static1. @@ -53,14 +48,13 @@ public void TestTrySubnet1() [TestMethod] public void TestTrySubnetStatic1() { - IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; - byte cidr = 9; + IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; + byte cidr = 9; - IPNetworkCollection subnets = null; #pragma warning disable 0618 - bool subnetted = IPNetwork2.TrySubnet(ipnetwork, cidr, out subnets); + IPNetwork2.TrySubnet(ipnetwork, cidr, out IPNetworkCollection _); #pragma warning restore 0618 - } + } /// /// Tests Try Subnet functionality with Try Subnet3. @@ -68,14 +62,13 @@ public void TestTrySubnetStatic1() [TestMethod] public void TestTrySubnet3() { - IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; - byte cidr = 55; + IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; + byte cidr = 55; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection _); - Assert.AreEqual(false, subnetted, "subnetted"); - } + Assert.AreEqual(false, subnetted, "subnetted"); + } /// /// Tests Try Subnet functionality with Try Subnet4. @@ -83,14 +76,13 @@ public void TestTrySubnet3() [TestMethod] public void TestTrySubnet4() { - IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; - byte cidr = 1; + IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; + byte cidr = 1; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection _); - Assert.AreEqual(false, subnetted, "subnetted"); - } + Assert.AreEqual(false, subnetted, "subnetted"); + } /// /// Tests Try Subnet functionality with Try Subnet5. @@ -98,17 +90,16 @@ public void TestTrySubnet4() [TestMethod] public void TestTrySubnet5() { - IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; - byte cidr = 9; + IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; + byte cidr = 9; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection subnets); - Assert.AreEqual(true, subnetted, "subnetted"); - Assert.AreEqual(2, subnets.Count, "count"); - Assert.AreEqual("10.0.0.0/9", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("10.128.0.0/9", subnets[1].ToString(), "subnet2"); - } + Assert.AreEqual(true, subnetted, "subnetted"); + Assert.AreEqual(2, subnets.Count, "count"); + Assert.AreEqual("10.0.0.0/9", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("10.128.0.0/9", subnets[1].ToString(), "subnet2"); + } /// /// Tests Try Subnet functionality with Try Subnet6. @@ -116,29 +107,28 @@ public void TestTrySubnet5() [TestMethod] public void TestTrySubnet6() { - IPNetwork2 ipnetwork = IPNetwork2.IANA_CBLK_RESERVED1; - byte cidr = 20; - - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); - - Assert.AreEqual(true, subnetted, "subnetted"); - Assert.AreEqual(16, subnets.Count, "count"); - Assert.AreEqual("192.168.0.0/20", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("192.168.16.0/20", subnets[1].ToString(), "subnet2"); - Assert.AreEqual("192.168.32.0/20", subnets[2].ToString(), "subnet3"); - Assert.AreEqual("192.168.48.0/20", subnets[3].ToString(), "subnet4"); - Assert.AreEqual("192.168.64.0/20", subnets[4].ToString(), "subnet5"); - Assert.AreEqual("192.168.80.0/20", subnets[5].ToString(), "subnet6"); - Assert.AreEqual("192.168.96.0/20", subnets[6].ToString(), "subnet7"); - Assert.AreEqual("192.168.112.0/20", subnets[7].ToString(), "subnet8"); - Assert.AreEqual("192.168.128.0/20", subnets[8].ToString(), "subnet9"); - Assert.AreEqual("192.168.144.0/20", subnets[9].ToString(), "subnet10"); - Assert.AreEqual("192.168.160.0/20", subnets[10].ToString(), "subnet11"); - Assert.AreEqual("192.168.176.0/20", subnets[11].ToString(), "subnet12"); - Assert.AreEqual("192.168.192.0/20", subnets[12].ToString(), "subnet13"); - Assert.AreEqual("192.168.208.0/20", subnets[13].ToString(), "subnet14"); - Assert.AreEqual("192.168.224.0/20", subnets[14].ToString(), "subnet15"); - Assert.AreEqual("192.168.240.0/20", subnets[15].ToString(), "subnet16"); - } + IPNetwork2 ipnetwork = IPNetwork2.IANA_CBLK_RESERVED1; + byte cidr = 20; + + bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection subnets); + + Assert.AreEqual(true, subnetted, "subnetted"); + Assert.AreEqual(16, subnets.Count, "count"); + Assert.AreEqual("192.168.0.0/20", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("192.168.16.0/20", subnets[1].ToString(), "subnet2"); + Assert.AreEqual("192.168.32.0/20", subnets[2].ToString(), "subnet3"); + Assert.AreEqual("192.168.48.0/20", subnets[3].ToString(), "subnet4"); + Assert.AreEqual("192.168.64.0/20", subnets[4].ToString(), "subnet5"); + Assert.AreEqual("192.168.80.0/20", subnets[5].ToString(), "subnet6"); + Assert.AreEqual("192.168.96.0/20", subnets[6].ToString(), "subnet7"); + Assert.AreEqual("192.168.112.0/20", subnets[7].ToString(), "subnet8"); + Assert.AreEqual("192.168.128.0/20", subnets[8].ToString(), "subnet9"); + Assert.AreEqual("192.168.144.0/20", subnets[9].ToString(), "subnet10"); + Assert.AreEqual("192.168.160.0/20", subnets[10].ToString(), "subnet11"); + Assert.AreEqual("192.168.176.0/20", subnets[11].ToString(), "subnet12"); + Assert.AreEqual("192.168.192.0/20", subnets[12].ToString(), "subnet13"); + Assert.AreEqual("192.168.208.0/20", subnets[13].ToString(), "subnet14"); + Assert.AreEqual("192.168.224.0/20", subnets[14].ToString(), "subnet15"); + Assert.AreEqual("192.168.240.0/20", subnets[15].ToString(), "subnet16"); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTrySupernetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTrySupernetTests.cs index fb56166f..ca209f14 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTrySupernetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTrySupernetTests.cs @@ -19,9 +19,8 @@ public void TestTrySupernet1() var network1 = IPNetwork2.Parse("192.168.0.1/24"); var network2 = IPNetwork2.Parse("192.168.1.1/24"); var supernetExpected = IPNetwork2.Parse("192.168.0.0/23"); - IPNetwork2 supernet; bool parsed = true; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -39,7 +38,7 @@ public void TestTrySupernet2() IPNetwork2 supernet; #pragma warning disable 0618 - bool result = IPNetwork2.TrySupernet(network1, network2, out supernet); + IPNetwork2.TrySupernet(network1, network2, out supernet); #pragma warning restore 0618 } @@ -54,7 +53,7 @@ public void TestTrySupernetStatic2() IPNetwork2 supernet; #pragma warning disable 0618 - bool result = IPNetwork2.TrySupernet(network1, network2, out supernet); + IPNetwork2.TrySupernet(network1, network2, out supernet); #pragma warning restore 0618 } @@ -67,9 +66,8 @@ public void TestTrySupernet3() var network1 = IPNetwork2.Parse("192.168.1.1/24"); IPNetwork2 network2 = null; IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -84,9 +82,8 @@ public void TestTrySupernet4() var network1 = IPNetwork2.Parse("192.168.0.1/24"); var network2 = IPNetwork2.Parse("192.168.1.1/25"); IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -101,9 +98,8 @@ public void TestTrySupernet5() var network1 = IPNetwork2.Parse("192.168.0.1/24"); var network2 = IPNetwork2.Parse("192.168.5.1/24"); IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -118,9 +114,8 @@ public void TestTrySupernet6() var network1 = IPNetwork2.Parse("192.168.0.1/24"); var network2 = IPNetwork2.Parse("192.168.0.1/25"); var supernetExpected = IPNetwork2.Parse("192.168.0.0/24"); - IPNetwork2 supernet; bool parsed = true; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -135,9 +130,8 @@ public void TestTrySupernet7() var network1 = IPNetwork2.Parse("192.168.0.1/25"); var network2 = IPNetwork2.Parse("192.168.0.1/24"); var supernetExpected = IPNetwork2.Parse("192.168.0.0/24"); - IPNetwork2 supernet; bool parsed = true; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -152,9 +146,8 @@ public void TestTrySupernet8() var network1 = IPNetwork2.Parse("192.168.1.1/24"); var network2 = IPNetwork2.Parse("192.168.2.1/24"); IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -170,9 +163,8 @@ public void TestTrySupernet9() var network2 = IPNetwork2.Parse("192.168.2.1/24"); IPNetwork2[] network3 = { network1, network2 }; IPNetwork2[] supernetExpected = { network1, network2 }; - IPNetwork2[] supernet; bool parsed = true; - bool result = IPNetwork2.TrySupernet(network3, out supernet); + bool result = IPNetwork2.TrySupernet(network3, out IPNetwork2[] supernet); Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); Assert.AreEqual(supernetExpected[1], supernet[1], "supernet"); @@ -189,9 +181,8 @@ public void TestTrySupernet10() var network2 = IPNetwork2.Parse("192.168.1.1/24"); IPNetwork2[] network3 = { network1, network2 }; IPNetwork2[] supernetExpected = { IPNetwork2.Parse("192.168.0.0/23") }; - IPNetwork2[] supernet; bool parsed = true; - bool result = IPNetwork2.TrySupernet(network3, out supernet); + bool result = IPNetwork2.TrySupernet(network3, out IPNetwork2[] supernet); Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -204,10 +195,9 @@ public void TestTrySupernet10() public void TestTrySupernet11() { IPNetwork2[] network3 = null; - IPNetwork2[] supernetExpected = { IPNetwork2.Parse("192.168.0.0/23") }; - IPNetwork2[] supernet; + _ = new[] { IPNetwork2.Parse("192.168.0.0/23") }; bool parsed = false; - bool result = IPNetwork2.TrySupernet(network3, out supernet); + bool result = IPNetwork2.TrySupernet(network3, out IPNetwork2[] supernet); Assert.AreEqual(null, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryToBigIntegerTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryToBigIntegerTests.cs index 6ea33970..5bc2c0db 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryToBigIntegerTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryToBigIntegerTests.cs @@ -16,14 +16,13 @@ public class IPNetworkTryToBigIntegerTests [TestMethod] public void TestTryToBigInteger32() { - var mask = IPAddress.Parse("255.255.255.255"); - uint uintMask = 0xffffffff; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + var mask = IPAddress.Parse("255.255.255.255"); + uint uintMask = 0xffffffff; + bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Tests Try To Big Integer functionality with Try To Big Integer24. @@ -31,14 +30,13 @@ public void TestTryToBigInteger32() [TestMethod] public void TestTryToBigInteger24() { - var mask = IPAddress.Parse("255.255.255.0"); - uint uintMask = 0xffffff00; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + var mask = IPAddress.Parse("255.255.255.0"); + uint uintMask = 0xffffff00; + bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Tests Try To Big Integer functionality with Try To Big Integer16. @@ -46,14 +44,13 @@ public void TestTryToBigInteger24() [TestMethod] public void TestTryToBigInteger16() { - var mask = IPAddress.Parse("255.255.0.0"); - uint uintMask = 0xffff0000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + var mask = IPAddress.Parse("255.255.0.0"); + uint uintMask = 0xffff0000; + bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Tests Try To Big Integer functionality with Try To Big Integer8. @@ -61,15 +58,14 @@ public void TestTryToBigInteger16() [TestMethod] public void TestTryToBigInteger8() { - var mask = IPAddress.Parse("255.0.0.0"); - uint uintMask = 0xff000000; + var mask = IPAddress.Parse("255.0.0.0"); + uint uintMask = 0xff000000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Tests Try To Big Integer functionality with Try To Big Integer0. @@ -77,14 +73,13 @@ public void TestTryToBigInteger8() [TestMethod] public void TestTryToBigInteger0() { - var mask = IPAddress.Parse("0.0.0.0"); - uint uintMask = 0x00000000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + var mask = IPAddress.Parse("0.0.0.0"); + uint uintMask = 0x00000000; + bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } /// /// Tests Try To Big Integer functionality with Try To Big Integer ANE. @@ -92,12 +87,11 @@ public void TestTryToBigInteger0() [TestMethod] public void TestTryToBigIntegerAne() { - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(null, out result); + bool parsed = IPNetwork2.TryToBigInteger(null, out BigInteger? result); - Assert.AreEqual(null, result, "uint"); - Assert.AreEqual(false, parsed, "parsed"); - } + Assert.AreEqual(null, result, "uint"); + Assert.AreEqual(false, parsed, "parsed"); + } /// /// Tests Try To Big Integer functionality with Try To Big Integer ANE3. @@ -105,13 +99,11 @@ public void TestTryToBigIntegerAne() [TestMethod] public void TestTryToBigIntegerAne3() { - IPAddress ip = null; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(ip, out result); + bool parsed = IPNetwork2.TryToBigInteger(null, out BigInteger? result); - Assert.AreEqual(null, result, "uint"); - Assert.AreEqual(false, parsed, "parsed"); - } + Assert.AreEqual(null, result, "uint"); + Assert.AreEqual(false, parsed, "parsed"); + } /// /// Tests Try To Big Integer functionality with Try To Big Integer ANE2. @@ -119,10 +111,9 @@ public void TestTryToBigIntegerAne3() [TestMethod] public void TestTryToBigIntegerAne2() { - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(IPAddress.IPv6Any, out result); + bool parsed = IPNetwork2.TryToBigInteger(IPAddress.IPv6Any, out BigInteger? result); - Assert.AreEqual(0, result, "result"); - Assert.AreEqual(true, parsed, "parsed"); - } + Assert.AreEqual(0, result, "result"); + Assert.AreEqual(true, parsed, "parsed"); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryToCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryToCidrTests.cs index 68c18676..f6126c7c 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryToCidrTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryToCidrTests.cs @@ -16,10 +16,9 @@ public class IPNetworkTryToCidrTests [TestMethod] public void TestTryToCidrAne() { - byte? cidr = null; - bool parsed = IPNetwork2.TryToCidr(null, out cidr); - Assert.AreEqual(false, parsed, "parsed"); - } + bool parsed = IPNetwork2.TryToCidr(null, out byte? _); + Assert.AreEqual(false, parsed, "parsed"); + } /// /// Tests Try To Cidr functionality with Try To Cidr AE. @@ -27,11 +26,10 @@ public void TestTryToCidrAne() [TestMethod] public void TestTryToCidrAe() { - byte? cidr = null; - bool parsed = IPNetwork2.TryToCidr(IPAddress.IPv6Any, out cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual((byte)0, cidr, "cidr"); - } + bool parsed = IPNetwork2.TryToCidr(IPAddress.IPv6Any, out byte? cidr); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual((byte)0, cidr, "cidr"); + } /// /// Tests Try To Cidr functionality with Try To Cidr AE2. @@ -39,10 +37,9 @@ public void TestTryToCidrAe() [TestMethod] public void TestTryToCidrAe2() { - byte? cidr = null; - bool parsed = IPNetwork2.TryToCidr(IPAddress.Parse("6.6.6.6"), out cidr); - Assert.AreEqual(false, parsed, "parsed"); - } + bool parsed = IPNetwork2.TryToCidr(IPAddress.Parse("6.6.6.6"), out byte? _); + Assert.AreEqual(false, parsed, "parsed"); + } /// /// Tests Try To Cidr functionality with Try To Cidr32. @@ -50,14 +47,13 @@ public void TestTryToCidrAe2() [TestMethod] public void TestTryToCidr32() { - byte? cidr = null; - var mask = IPAddress.Parse("255.255.255.255"); - byte result = 32; - bool parsed = IPNetwork2.TryToCidr(mask, out cidr); + var mask = IPAddress.Parse("255.255.255.255"); + byte result = 32; + bool parsed = IPNetwork2.TryToCidr(mask, out byte? cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Tests Try To Cidr functionality with Try To Cidr24. @@ -65,14 +61,13 @@ public void TestTryToCidr32() [TestMethod] public void TestTryToCidr24() { - byte? cidr = null; - var mask = IPAddress.Parse("255.255.255.0"); - byte result = 24; - bool parsed = IPNetwork2.TryToCidr(mask, out cidr); + var mask = IPAddress.Parse("255.255.255.0"); + byte result = 24; + bool parsed = IPNetwork2.TryToCidr(mask, out byte? cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Tests Try To Cidr functionality with Try To Cidr16. @@ -80,14 +75,13 @@ public void TestTryToCidr24() [TestMethod] public void TestTryToCidr16() { - byte? cidr = null; - var mask = IPAddress.Parse("255.255.0.0"); - byte result = 16; - bool parsed = IPNetwork2.TryToCidr(mask, out cidr); + var mask = IPAddress.Parse("255.255.0.0"); + byte result = 16; + bool parsed = IPNetwork2.TryToCidr(mask, out byte? cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Tests Try To Cidr functionality with Try To Cidr8. @@ -95,14 +89,13 @@ public void TestTryToCidr16() [TestMethod] public void TestTryToCidr8() { - byte? cidr = null; - var mask = IPAddress.Parse("255.0.0.0"); - byte result = 8; - bool parsed = IPNetwork2.TryToCidr(mask, out cidr); + var mask = IPAddress.Parse("255.0.0.0"); + byte result = 8; + bool parsed = IPNetwork2.TryToCidr(mask, out byte? cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } /// /// Tests Try To Cidr functionality with Try To Cidr0. @@ -110,12 +103,11 @@ public void TestTryToCidr8() [TestMethod] public void TestTryToCidr0() { - byte? cidr = null; - var mask = IPAddress.Parse("0.0.0.0"); - byte result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out cidr); + var mask = IPAddress.Parse("0.0.0.0"); + byte result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out byte? cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryToNetmaskTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryToNetmaskTests.cs index 94ed7e51..08d9936e 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryToNetmaskTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryToNetmaskTests.cs @@ -16,8 +16,7 @@ public class IPNetworkTryToNetmaskTests [TestMethod] public void TryToNetmask1() { - IPAddress result = null; - bool parsed = IPNetwork2.TryToNetmask(0, AddressFamily.InterNetwork, out result); + bool parsed = IPNetwork2.TryToNetmask(0, AddressFamily.InterNetwork, out IPAddress result); var expected = IPAddress.Parse("0.0.0.0"); Assert.AreEqual(expected, result, "Netmask"); @@ -30,8 +29,7 @@ public void TryToNetmask1() [TestMethod] public void TryToNetmask2() { - IPAddress result = null; - bool parsed = IPNetwork2.TryToNetmask(33, AddressFamily.InterNetwork, out result); + bool parsed = IPNetwork2.TryToNetmask(33, AddressFamily.InterNetwork, out IPAddress result); IPAddress expected = null; Assert.AreEqual(expected, result, "Netmask"); diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryToUintTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryToUintTests.cs index 54ba71ab..d40ebab0 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryToUintTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryToUintTests.cs @@ -16,8 +16,7 @@ public class IPNetworkTryToUintTests [TestMethod] public void TestTryToUint1() { - BigInteger? result = null; - bool parsed = IPNetwork2.TryToUint(32, AddressFamily.InterNetwork, out result); + bool parsed = IPNetwork2.TryToUint(32, AddressFamily.InterNetwork, out BigInteger? result); Assert.IsNotNull(result, "uint"); Assert.AreEqual(true, parsed, "parsed"); diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryWideSubnetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryWideSubnetTests.cs index 275149e2..eb5342ee 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryWideSubnetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryWideSubnetTests.cs @@ -20,15 +20,13 @@ public void TryWideSubnet1() var ipns = new List(); foreach (string ip in ips) { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) + if (IPNetwork2.TryParse(ip, 32, out IPNetwork2 ipn)) { ipns.Add(ipn); } } - IPNetwork2 ipnetwork = null; - bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out ipnetwork); + bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out IPNetwork2 ipnetwork); Assert.AreEqual(true, wide, "wide"); Assert.AreEqual("0.0.0.0/0", ipnetwork.ToString(), "ipnetwork"); } @@ -43,15 +41,13 @@ public void TryWideSubnet2() var ipns = new List(); foreach (string ip in ips) { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) + if (IPNetwork2.TryParse(ip, 32, out IPNetwork2 ipn)) { ipns.Add(ipn); } } - IPNetwork2 ipnetwork = null; - bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out ipnetwork); + bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out IPNetwork2 ipnetwork); Assert.AreEqual(true, wide, "wide"); Assert.AreEqual("0.0.0.0/4", ipnetwork.ToString(), "ipnetwork"); } @@ -66,15 +62,13 @@ public void TryWideSubnet3() var ipns = new List(); foreach (string ip in ips) { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) + if (IPNetwork2.TryParse(ip, 32, out IPNetwork2 ipn)) { ipns.Add(ipn); } } - IPNetwork2 ipnetwork = null; - bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out ipnetwork); + bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out IPNetwork2 _); Assert.AreEqual(false, wide, "wide"); } @@ -88,15 +82,13 @@ public void TryWideSubnet4() var ipns = new List(); foreach (string ip in ips) { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) + if (IPNetwork2.TryParse(ip, 32, out IPNetwork2 ipn)) { ipns.Add(ipn); } } - IPNetwork2 ipnetwork = null; - bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out ipnetwork); + bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out IPNetwork2 ipnetwork); Assert.AreEqual(true, wide, "wide"); Assert.AreEqual("1.1.1.1/32", ipnetwork.ToString(), "ipnetwork"); } @@ -107,8 +99,7 @@ public void TryWideSubnet4() [TestMethod] public void TryWideSubnetNull() { - IPNetwork2 ipnetwork = null; - bool wide = IPNetwork2.TryWideSubnet(null, out ipnetwork); + bool wide = IPNetwork2.TryWideSubnet(null, out IPNetwork2 _); Assert.AreEqual(false, wide, "wide"); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkValidNetmaskTests.cs b/src/TestProject/IPNetworkTest/IPNetworkValidNetmaskTests.cs index 79786976..55ea95d0 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkValidNetmaskTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkValidNetmaskTests.cs @@ -17,7 +17,7 @@ public class IPNetworkValidNetmaskTests [ExpectedException(typeof(ArgumentException))] public void TestValidNetmaskInvalid1() { - bool resut = IPNetwork2.InternalValidNetmask(BigInteger.Zero, AddressFamily.AppleTalk); + IPNetwork2.InternalValidNetmask(BigInteger.Zero, AddressFamily.AppleTalk); } /// diff --git a/src/TestProject/IPNetworkTest/IPNetworkWideSubnetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkWideSubnetTests.cs index 2c7a79b4..45d2c9a3 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkWideSubnetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkWideSubnetTests.cs @@ -20,8 +20,7 @@ public void WideSubnet1() var ipns = new List(); foreach (string ip in ips) { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) + if (IPNetwork2.TryParse(ip, 32, out IPNetwork2 ipn)) { ipns.Add(ipn); } @@ -41,8 +40,7 @@ public void WideSubnet2() var ipns = new List(); foreach (string ip in ips) { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) + if (IPNetwork2.TryParse(ip, 32, out IPNetwork2 ipn)) { ipns.Add(ipn); } @@ -59,8 +57,8 @@ public void WideSubnet2() [ExpectedException(typeof(ArgumentNullException))] public void WideSubnetNull() { - var ipnetwork = IPNetwork2.WideSubnet(null); - } + IPNetwork2.WideSubnet(null); + } /// /// Tests WideSubnet with invalid IP addresses to ensure it throws ArgumentException. @@ -73,14 +71,13 @@ public void WideSubnetNull2() var ipns = new List(); foreach (string ip in ips) { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) + if (IPNetwork2.TryParse(ip, 32, out IPNetwork2 ipn)) { ipns.Add(ipn); } } - var ipnetwork = IPNetwork2.WideSubnet(ipns.ToArray()); + IPNetwork2.WideSubnet(ipns.ToArray()); } /// @@ -90,11 +87,11 @@ public void WideSubnetNull2() [ExpectedException(typeof(ArgumentException))] public void WideSubnetMixed() { - var ipns = new List + var ipns = new List { IPNetwork2.IANA_ABLK_RESERVED1, IPNetwork2.Parse("2001:0db8::/64"), }; - var ipnetwork = IPNetwork2.WideSubnet(ipns.ToArray()); - } + IPNetwork2.WideSubnet(ipns.ToArray()); + } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkV6UnitTest.cs b/src/TestProject/IPNetworkV6UnitTest.cs index db13ebbf..1a6f6a57 100644 --- a/src/TestProject/IPNetworkV6UnitTest.cs +++ b/src/TestProject/IPNetworkV6UnitTest.cs @@ -5,7 +5,7 @@ namespace TestProject; /// -/// Test parsing of IPV6 IPNetworks +/// Test parsing of IPV6 IPNetworks. /// [TestClass] public class IPNetworkV6UnitTest @@ -15,29 +15,29 @@ public class IPNetworkV6UnitTest /// /// Test parse of IPv6 networks. /// - /// First parameter - /// Second parameter + /// First parameter. + /// Second parameter. [DataTestMethod] [DataRow("xxxx::", "xxxx::")] [DataRow("::", "xxxx::")] [ExpectedException(typeof(ArgumentException))] public void TestParseIPAddressNetmaskAne8(string withFirst, string andSecond) { - var ipnet = IPNetwork2.Parse(withFirst, andSecond); + IPNetwork2.Parse(withFirst, andSecond); } /// /// Test parse of IPv6 networks. /// - /// First parameter - /// Second parameter + /// First parameter. + /// Second parameter. [DataTestMethod] [DataRow("xxxx::", 0)] [DataRow("::", 129)] [ExpectedException(typeof(ArgumentException))] public void TestParseIPAddressNetmaskAne10(string withFirst, string andSecond) { - var ipnet = IPNetwork2.Parse(withFirst, andSecond); + IPNetwork2.Parse(withFirst, andSecond); } /// @@ -46,7 +46,6 @@ public void TestParseIPAddressNetmaskAne10(string withFirst, string andSecond) [TestMethod] public void TestParsev6_128() { - IPNetwork2 ipnetwork = null; string ipaddress = "2001:db8::"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; @@ -59,7 +58,7 @@ public void TestParsev6_128() byte cidr = 128; BigInteger usable = 1; - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); @@ -76,7 +75,6 @@ public void TestParsev6_128() [TestMethod] public void TestParsev6_127() { - IPNetwork2 ipnetwork = null; string ipaddress = "2001:db8::"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; @@ -89,7 +87,7 @@ public void TestParsev6_127() byte cidr = 127; BigInteger usable = 2; - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); @@ -106,7 +104,6 @@ public void TestParsev6_127() [TestMethod] public void TestParsev6_126() { - IPNetwork2 ipnetwork = null; string ipaddress = "2001:db8::"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; @@ -119,7 +116,7 @@ public void TestParsev6_126() byte cidr = 126; BigInteger usable = 4; - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); @@ -136,7 +133,6 @@ public void TestParsev6_126() [TestMethod] public void TestParsev6_125() { - IPNetwork2 ipnetwork = null; string ipaddress = "2001:db8::"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"; @@ -149,7 +145,7 @@ public void TestParsev6_125() byte cidr = 125; BigInteger usable = 8; - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); @@ -166,7 +162,6 @@ public void TestParsev6_125() [TestMethod] public void TestParsev6_124() { - IPNetwork2 ipnetwork = null; string ipaddress = "2001:db8::"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; @@ -179,7 +174,7 @@ public void TestParsev6_124() byte cidr = 124; BigInteger usable = 16; - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); @@ -196,7 +191,6 @@ public void TestParsev6_124() [TestMethod] public void TestParsev6_123() { - IPNetwork2 ipnetwork = null; string ipaddress = "2001:0db8::"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"; @@ -209,7 +203,7 @@ public void TestParsev6_123() byte cidr = 123; BigInteger usable = 32; - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); @@ -226,7 +220,6 @@ public void TestParsev6_123() [TestMethod] public void TestParsev6_112() { - IPNetwork2 ipnetwork = null; string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"; @@ -239,7 +232,7 @@ public void TestParsev6_112() byte cidr = 112; uint usable = 65536; - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); @@ -256,7 +249,6 @@ public void TestParsev6_112() [TestMethod] public void TestParsev6_64() { - IPNetwork2 ipnetwork = null; string ipaddress = "ffff:ffff:ffff:ffff:1234:1234:1234:1234"; string netmask = "ffff:ffff:ffff:ffff:0000:0000:0000:0000"; @@ -269,7 +261,7 @@ public void TestParsev6_64() byte cidr = 64; var usable = BigInteger.Pow(2, 128 - cidr); - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); @@ -286,7 +278,6 @@ public void TestParsev6_64() [TestMethod] public void TestParsev6_16() { - IPNetwork2 ipnetwork = null; string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; string netmask = "ffff:0000:0000:0000:0000:0000:0000:0000"; @@ -299,7 +290,7 @@ public void TestParsev6_16() byte cidr = 16; var usable = BigInteger.Pow(2, 128 - cidr); - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); @@ -316,7 +307,6 @@ public void TestParsev6_16() [TestMethod] public void TestParsev6_EDGE() { - IPNetwork2 ipnetwork = null; string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; @@ -326,7 +316,7 @@ public void TestParsev6_EDGE() byte cidr = 128; uint usable = 1; - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); @@ -379,14 +369,13 @@ public void TestParseString3() string netmask = "::"; string firstUsable = "::"; string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 0; - var usable = BigInteger.Pow(2, 128 - cidr); + var usable = BigInteger.Pow(2, 128); var ipnetwork = IPNetwork2.Parse(ipaddress); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(0, ipnetwork.Cidr, "Cidr"); Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); @@ -404,14 +393,13 @@ public void TestParseString4() string netmask = "::"; string firstUsable = "::"; string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - byte cidr = 0; - var usable = BigInteger.Pow(2, 128 - cidr); + var usable = BigInteger.Pow(2, 128); var ipnetwork = IPNetwork2.Parse(ipaddress); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(0, ipnetwork.Cidr, "Cidr"); Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); @@ -842,7 +830,7 @@ public void TestParseIPAddressNoNetmask5_ClassLess() public void TestParseStringAe1() { string ipaddress = "garbage"; - var ipnetwork = IPNetwork2.Parse(ipaddress); + IPNetwork2.Parse(ipaddress); } /// @@ -853,7 +841,7 @@ public void TestParseStringAe1() public void TestParseStringAe2() { string ipaddress = "0:0:0:0:0:0:1:0:0 0:1:2:3:4:5:6:7:8"; - var ipnetwork = IPNetwork2.Parse(ipaddress); + IPNetwork2.Parse(ipaddress); } /// @@ -863,8 +851,7 @@ public void TestParseStringAe2() [ExpectedException(typeof(ArgumentNullException))] public void TestParseStringAne1() { - string ipaddress = null; - var ipnetwork = IPNetwork2.Parse(ipaddress); + IPNetwork2.Parse(null); } #endregion @@ -894,11 +881,11 @@ public void TestParseStringString3() string ipaddress = "2001:0db8::"; string netmask = null; - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + IPNetwork2.Parse(ipaddress, netmask); } /// - /// Test ParseString with string string + /// Test ParseString with string string. /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] @@ -907,7 +894,7 @@ public void TestParseStringString5() string ipaddress = "2001:0db8::"; string netmask = string.Empty; - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + IPNetwork2.Parse(ipaddress, netmask); } #endregion @@ -915,7 +902,7 @@ public void TestParseStringString5() #region ParseIpIp /// - /// Test ParseString with IP + /// Test ParseString with IP. /// [TestMethod] public void ParseIpIp1() @@ -929,7 +916,7 @@ public void ParseIpIp1() } /// - /// Test ParseString with IP + /// Test ParseString with IP. /// [TestMethod] [ExpectedException(typeof(ArgumentNullException))] @@ -938,7 +925,7 @@ public void ParseIpIp3() string ipaddress = "2001:0db8::"; var ip = IPAddress.Parse(ipaddress); IPAddress netm = null; - var ipnetwork = IPNetwork2.Parse(ip, netm); + IPNetwork2.Parse(ip, netm); } #endregion @@ -966,7 +953,6 @@ public void CtorWithIpAndCidr2() { string ipaddress = "2001:db8::"; var ip = IPAddress.Parse(ipaddress); - var ipnetwork = new IPNetwork2(ip, 129); } #endregion @@ -1304,8 +1290,7 @@ public void TestTryToCidr128() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); byte cidr = 128; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1319,8 +1304,7 @@ public void TestTryToCidr127() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"); byte cidr = 127; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1334,8 +1318,7 @@ public void TestTryToCidr126() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"); byte cidr = 126; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1349,8 +1332,7 @@ public void TestTryToCidr125() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"); byte cidr = 125; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1364,8 +1346,7 @@ public void TestTryToCidr124() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); byte cidr = 124; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1379,8 +1360,7 @@ public void TestTryToCidr123() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"); byte cidr = 123; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1394,8 +1374,7 @@ public void TestTryToCidr122() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffc0"); byte cidr = 122; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1409,8 +1388,7 @@ public void TestTryToCidr121() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff80"); byte cidr = 121; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1424,8 +1402,7 @@ public void TestTryToCidr120() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00"); byte cidr = 120; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1439,8 +1416,7 @@ public void TestTryToCidr119() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fe00"); byte cidr = 119; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1454,8 +1430,7 @@ public void TestTryToCidr118() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fc00"); byte cidr = 118; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1469,8 +1444,7 @@ public void TestTryToCidr117() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f800"); byte cidr = 117; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1484,8 +1458,7 @@ public void TestTryToCidr116() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f000"); byte cidr = 116; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1499,8 +1472,7 @@ public void TestTryToCidr115() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:e000"); byte cidr = 115; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1514,8 +1486,7 @@ public void TestTryToCidr114() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:c000"); byte cidr = 114; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1529,8 +1500,7 @@ public void TestTryToCidr113() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:8000"); byte cidr = 113; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1544,8 +1514,7 @@ public void TestTryToCidr112() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); byte cidr = 112; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1559,8 +1528,7 @@ public void TestTryToCidr111() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffe:0"); byte cidr = 111; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1574,8 +1542,7 @@ public void TestTryToCidr110() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffc:0"); byte cidr = 110; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1589,8 +1556,7 @@ public void TestTryToCidr109() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff8:0"); byte cidr = 109; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1604,8 +1570,7 @@ public void TestTryToCidr108() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff0:0"); byte cidr = 108; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1619,8 +1584,7 @@ public void TestTryToCidr001() { var mask = IPAddress.Parse("8000::"); byte cidr = 1; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1634,8 +1598,7 @@ public void TestTryToCidr000() { var mask = IPAddress.Parse("::"); byte cidr = 0; - byte? result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out result); + bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); @@ -1722,8 +1685,7 @@ public void TestTryToBigInteger32() { var mask = IPAddress.Parse("::ffff:ffff"); uint uintMask = 0xffffffff; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); Assert.AreEqual(uintMask, result, "uint"); Assert.AreEqual(true, parsed, "parsed"); @@ -1737,8 +1699,7 @@ public void TestTryToBigInteger24() { var mask = IPAddress.Parse("::ffff:ff00"); uint uintMask = 0xffffff00; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); Assert.AreEqual(uintMask, result, "uint"); Assert.AreEqual(true, parsed, "parsed"); @@ -1752,8 +1713,7 @@ public void TestTryToBigInteger16() { var mask = IPAddress.Parse("::ffff:0"); uint uintMask = 0xffff0000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); Assert.AreEqual(uintMask, result, "uint"); Assert.AreEqual(true, parsed, "parsed"); @@ -1768,8 +1728,7 @@ public void TestTryToBigInteger8() var mask = IPAddress.Parse("::ff00:0"); uint uintMask = 0xff000000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); Assert.AreEqual(uintMask, result, "uint"); Assert.AreEqual(true, parsed, "parsed"); @@ -1783,8 +1742,7 @@ public void TestTryToBigInteger0() { var mask = IPAddress.Parse("::"); uint uintMask = 0x00000000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); Assert.AreEqual(uintMask, result, "uint"); Assert.AreEqual(true, parsed, "parsed"); @@ -1800,8 +1758,7 @@ public void TestTryToBigInteger0() [TestMethod] public void TryToNetmask1() { - IPAddress result = null; - bool parsed = IPNetwork2.TryToNetmask(0, AddressFamily.InterNetworkV6, out result); + bool parsed = IPNetwork2.TryToNetmask(0, AddressFamily.InterNetworkV6, out IPAddress result); var expected = IPAddress.Parse("::"); Assert.AreEqual(expected, result, "Netmask"); @@ -1814,8 +1771,7 @@ public void TryToNetmask1() [TestMethod] public void TryToNetmask2() { - IPAddress result = null; - bool parsed = IPNetwork2.TryToNetmask(33, AddressFamily.InterNetworkV6, out result); + bool parsed = IPNetwork2.TryToNetmask(33, AddressFamily.InterNetworkV6, out IPAddress result); var expected = IPAddress.Parse("ffff:ffff:8000::"); Assert.AreEqual(expected, result, "Netmask"); @@ -1899,7 +1855,7 @@ public void ToNetmask0() public void ToNetmaskOore1() { byte cidr = 129; - string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); + IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); } #endregion @@ -2131,7 +2087,7 @@ public void TestContains10() var ipnetwork = IPNetwork2.Parse("::/0"); IPAddress ipaddress = null; - bool result = ipnetwork.Contains(ipaddress); + ipnetwork.Contains(ipaddress); } /// @@ -2423,7 +2379,7 @@ public void TestSubnet3() var ipnetwork = IPNetwork2.Parse("::"); byte cidr = 129; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + ipnetwork.Subnet(cidr); } /// @@ -2436,7 +2392,7 @@ public void TestSubnet4() var ipnetwork = IPNetwork2.Parse("::"); byte cidr = 1; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + ipnetwork.Subnet(cidr); } /// @@ -2558,7 +2514,6 @@ public void TestSubnet13() var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); byte cidr = 70; IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - IPNetwork2 error = subnets[1000]; } /// @@ -2593,8 +2548,7 @@ public void TestTrySubnet3() var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); byte cidr = 255; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection _); Assert.AreEqual(false, subnetted, "subnetted"); } @@ -2608,8 +2562,7 @@ public void TestTrySubnet4() var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); byte cidr = 63; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection _); Assert.AreEqual(false, subnetted, "subnetted"); } @@ -2623,8 +2576,7 @@ public void TestTrySubnet5() var ipnetwork = IPNetwork2.Parse("2001:db8::/64"); byte cidr = 65; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection subnets); Assert.AreEqual(true, subnetted, "subnetted"); Assert.AreEqual(2, subnets.Count, "count"); @@ -2641,8 +2593,7 @@ public void TestTrySubnet6() var ipnetwork = IPNetwork2.Parse("2001:db8::/64"); byte cidr = 68; - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection subnets); Assert.AreEqual(true, subnetted, "subnetted"); Assert.AreEqual(16, subnets.Count, "count"); @@ -2677,9 +2628,8 @@ public void TestTrySupernet1() var network1 = IPNetwork2.Parse("2001:db8::/65"); var network2 = IPNetwork2.Parse("2001:db8:0:0:8000::/65"); var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); - IPNetwork2 supernet; bool supernetted = true; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetted, result, "supernetted"); Assert.AreEqual(supernetExpected, supernet, "supernet"); @@ -2696,7 +2646,7 @@ public void TestTrySupernet2() var network2 = IPNetwork2.Parse("2001:db8::/64"); IPNetwork2 supernet; #pragma warning disable 0618 - bool result = IPNetwork2.TrySupernet(network1, network2, out supernet); + IPNetwork2.TrySupernet(network1, network2, out supernet); #pragma warning restore 0618 } @@ -2709,9 +2659,8 @@ public void TestTrySupernet3() var network1 = IPNetwork2.Parse("2001:db8::/64"); IPNetwork2 network2 = null; IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -2726,9 +2675,8 @@ public void TestTrySupernet4() var network1 = IPNetwork2.Parse("2001:db8::/64"); var network2 = IPNetwork2.Parse("2001:db9::/65"); IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -2743,9 +2691,8 @@ public void TestTrySupernet5() var network1 = IPNetwork2.Parse("2001:db8::/64"); var network2 = IPNetwork2.Parse("2001:dba::/64"); IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -2760,9 +2707,8 @@ public void TestTrySupernet6() var network1 = IPNetwork2.Parse("2001:db8::/64"); var network2 = IPNetwork2.Parse("2001:db8::1/65"); var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); - IPNetwork2 supernet; bool parsed = true; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -2777,9 +2723,8 @@ public void TestTrySupernet8() var network1 = IPNetwork2.Parse("2001:db0::/64"); var network2 = IPNetwork2.Parse("2001:dbf::/64"); IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); + bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -2795,9 +2740,8 @@ public void TestTrySupernet9() var network2 = IPNetwork2.Parse("192.168.2.1/24"); IPNetwork2[] network3 = { network1, network2 }; IPNetwork2[] supernetExpected = { network1, network2 }; - IPNetwork2[] supernet; bool parsed = true; - bool result = IPNetwork2.TrySupernet(network3, out supernet); + bool result = IPNetwork2.TrySupernet(network3, out IPNetwork2[] supernet); Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); Assert.AreEqual(supernetExpected[1], supernet[1], "supernet"); @@ -2814,9 +2758,8 @@ public void TestTrySupernet10() var network2 = IPNetwork2.Parse("2001:db8:0:0:8000::/65"); IPNetwork2[] network3 = { network1, network2 }; IPNetwork2[] supernetExpected = { IPNetwork2.Parse("2001:db8::/64") }; - IPNetwork2[] supernet; bool parsed = true; - bool result = IPNetwork2.TrySupernet(network3, out supernet); + bool result = IPNetwork2.TrySupernet(network3, out IPNetwork2[] supernet); Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -2829,10 +2772,9 @@ public void TestTrySupernet10() public void TestTrySupernet11() { IPNetwork2[] network3 = null; - IPNetwork2[] supernetExpected = { IPNetwork2.Parse("2001:db8::/64") }; - IPNetwork2[] supernet; + _ = new[] { IPNetwork2.Parse("2001:db8::/64") }; bool parsed = false; - bool result = IPNetwork2.TrySupernet(network3, out supernet); + bool result = IPNetwork2.TrySupernet(network3, out IPNetwork2[] supernet); Assert.AreEqual(null, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); @@ -2843,13 +2785,12 @@ public void TestTrySupernet11() #region TryGuessCidr /// - /// Test TryGuessCidrNull + /// Test TryGuessCidrNull. /// [TestMethod] public void TestTryGuessCidrNull() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr(null, out cidr); + bool parsed = IPNetwork2.TryGuessCidr(null, out byte cidr); Assert.AreEqual(false, parsed, "parsed"); Assert.AreEqual(0, cidr, "cidr"); @@ -2861,8 +2802,7 @@ public void TestTryGuessCidrNull() [TestMethod] public void TestTryGuessCidr1() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("::", out cidr); + bool parsed = IPNetwork2.TryGuessCidr("::", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(64, cidr, "cidr"); @@ -2874,8 +2814,7 @@ public void TestTryGuessCidr1() [TestMethod] public void TestTryGuessCidr2() { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("2001:0db8::", out cidr); + bool parsed = IPNetwork2.TryGuessCidr("2001:0db8::", out byte cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(64, cidr, "cidr"); @@ -2886,7 +2825,7 @@ public void TestTryGuessCidr2() #region Count /// - /// Test Total32 + /// Test Total32. /// [TestMethod] public void Total32() @@ -2967,7 +2906,7 @@ public void Total0() #region Usable /// - /// Test Usable32 + /// Test Usable32. /// [TestMethod] public void Usable32() @@ -3054,9 +2993,8 @@ public void Usable0() public void TryParseCidr1() { string sidr = "0"; - byte? cidr; byte? result = 0; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out byte? cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); @@ -3069,13 +3007,11 @@ public void TryParseCidr1() public void TryParseCidr2() { string sidr = "sadsd"; - byte? cidr; - byte? result = null; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out byte? cidr); Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(result, cidr, "cidr"); + Assert.AreEqual(null, cidr, "cidr"); } /// @@ -3085,10 +3021,9 @@ public void TryParseCidr2() public void TryParseCidr33() { string sidr = "33"; - byte? cidr; byte result = 33; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out byte? cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); @@ -3101,10 +3036,9 @@ public void TryParseCidr33() public void TryParseCidr128() { string sidr = "128"; - byte? cidr; byte result = 128; - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out byte? cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); @@ -3116,14 +3050,10 @@ public void TryParseCidr128() [TestMethod] public void TryParseCidr129() { - string sidr = "129"; - byte? cidr; - byte? result = null; - - bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr("129", AddressFamily.InterNetworkV6, out byte? cidr); Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(result, cidr, "cidr"); + Assert.AreEqual(null, cidr, "cidr"); } #endregion diff --git a/src/TestProject/SerializeJsonTest.cs b/src/TestProject/SerializeJsonTest.cs index f3688baa..067a00e2 100644 --- a/src/TestProject/SerializeJsonTest.cs +++ b/src/TestProject/SerializeJsonTest.cs @@ -63,7 +63,7 @@ public void Test_1_000_000_Serialize_Json() for (int i = 0; i < 1000000; i++) { - string json = JsonConvert.SerializeObject(ipnetwork); + JsonConvert.SerializeObject(ipnetwork); } // 3.06 seconds(Ad hoc). @@ -80,7 +80,7 @@ public void Test_1_000_000_Deserialize_Json() for (int i = 0; i < 1000000; i++) { - IPNetwork2 result = JsonConvert.DeserializeObject(json); + JsonConvert.DeserializeObject(json); } // 10.20 seconds(Ad hoc). @@ -98,7 +98,7 @@ public void Test_1_000_000_Serialize_Deserialize_Json() for (int i = 0; i < 1000000; i++) { string json = JsonConvert.SerializeObject(ipnetwork); - IPNetwork2 result = JsonConvert.DeserializeObject(json); + JsonConvert.DeserializeObject(json); } // 13.49 seconds(Ad hoc). diff --git a/src/TestProject/SerializeXmlTest.cs b/src/TestProject/SerializeXmlTest.cs index c2101375..ba9e70b1 100644 --- a/src/TestProject/SerializeXmlTest.cs +++ b/src/TestProject/SerializeXmlTest.cs @@ -112,7 +112,7 @@ public void Test_1_000_000_Deserialize_Xml() for (int i = 0; i < 1000000; i++) { - object result = serializer.Deserialize(mem); + serializer.Deserialize(mem); mem.Position = 0; } @@ -136,7 +136,7 @@ public void Test_1_000_000_Serialize_Deserialize_Xml() serializer.Serialize(mem, ipnetwork); mem.Position = 0; - object ipnetwork2 = serializer.Deserialize(mem); + serializer.Deserialize(mem); mem.SetLength(0); } diff --git a/src/TestProject/TryParseUnitTest.cs b/src/TestProject/TryParseUnitTest.cs index 0f443e0e..a75d7f00 100644 --- a/src/TestProject/TryParseUnitTest.cs +++ b/src/TestProject/TryParseUnitTest.cs @@ -18,7 +18,7 @@ public class TryParseUnitTest [TestMethod] public void Test_IPNetwork_TryParse_Issue294() { - bool result = IPNetwork2.TryParse("*", out IPNetwork2 ipaddress1); + bool result = IPNetwork2.TryParse("*", out IPNetwork2 _); Assert.AreEqual(false, result, "parsed1"); } @@ -324,7 +324,7 @@ public void TestTryParseString5() public void TestTryParseStringAe1() { string ipaddress = "garbage"; - bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 _); Assert.AreEqual(false, parsed, "parsed"); } @@ -336,7 +336,7 @@ public void TestTryParseStringAe1() public void TestTryParseStringAe2() { string ipaddress = "0.0.0.0 0.0.1.0"; - bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 _); Assert.AreEqual(false, parsed, "parsed"); } @@ -348,7 +348,7 @@ public void TestTryParseStringAe2() public void TestTryParseStringAne1() { string ipaddress = null; - bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); + bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 _); Assert.AreEqual(false, parsed, "parsed"); } @@ -392,7 +392,7 @@ public void Test_TryParse_InvalidIpv6_return_valid_ipv6network() [DataRow("001:02b8::/64", false, true)] public void Test_TryParse(string ipnetwork, bool sanitanize, bool parsed) { - bool result = IPNetwork2.TryParse(ipnetwork, sanitanize, out IPNetwork2 ipnetwork1); + bool result = IPNetwork2.TryParse(ipnetwork, sanitanize, out IPNetwork2 _); Assert.AreEqual(parsed, result, "parsed1"); } @@ -412,7 +412,7 @@ public void Test_TryParse(string ipnetwork, bool sanitanize, bool parsed) [DataRow("001:02b8:: ", false)] public void Test_IPAddress_TryParse(string ipaddress, bool parsed) { - bool result = IPAddress.TryParse(ipaddress, out IPAddress ipaddress1); + bool result = IPAddress.TryParse(ipaddress, out IPAddress _); Assert.AreEqual(parsed, result, "parsed1"); } From fcabb99dfc2c40c4743ee6db6d882ff652a12be9 Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sun, 30 Mar 2025 00:18:31 +0100 Subject: [PATCH 22/25] Fix: unit tests --- .../IPNetworkCollectionCtorTests.cs | 2 + .../IPNetworkCtorWithIpAndCidrTests.cs | 3 + src/TestProject/IPNetworkV6UnitTest.cs | 74 +++++++------------ 3 files changed, 31 insertions(+), 48 deletions(-) diff --git a/src/TestProject/IPNetworkCollectionCtorTests.cs b/src/TestProject/IPNetworkCollectionCtorTests.cs index 5487097c..cab77255 100644 --- a/src/TestProject/IPNetworkCollectionCtorTests.cs +++ b/src/TestProject/IPNetworkCollectionCtorTests.cs @@ -17,6 +17,7 @@ public class IPNetworkCollectionCtorTests [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestCtor1() { + var _ = new IPNetworkCollection(IPNetwork2.IANA_ABLK_RESERVED1, 33); } /// @@ -26,5 +27,6 @@ public void TestCtor1() [ExpectedException(typeof(ArgumentException))] public void TestCtor2() { + var _ = new IPNetworkCollection(IPNetwork2.IANA_ABLK_RESERVED1, 2); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs index 0d44fded..402b1c1b 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs @@ -29,6 +29,8 @@ public void CtorWithIpAndCidr1() [ExpectedException(typeof(ArgumentNullException))] public void CtorWithIpAndCidr2() { + IPAddress ip = null; + var ipnetwork = new IPNetwork2(ip, 24); } /// @@ -40,5 +42,6 @@ public void CtorWithIpAndCidr3() { string ipaddress = "192.168.168.100"; var ip = IPAddress.Parse(ipaddress); + var ipnetwork = new IPNetwork2(ip, 33); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkV6UnitTest.cs b/src/TestProject/IPNetworkV6UnitTest.cs index 1a6f6a57..dfe66b4e 100644 --- a/src/TestProject/IPNetworkV6UnitTest.cs +++ b/src/TestProject/IPNetworkV6UnitTest.cs @@ -953,6 +953,7 @@ public void CtorWithIpAndCidr2() { string ipaddress = "2001:db8::"; var ip = IPAddress.Parse(ipaddress); + var _ = new IPNetwork2(ip, 129); } #endregion @@ -1869,10 +1870,9 @@ public void ToNetmaskOore1() public void TestValidNetmask0() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); - bool expected = true; bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); + Assert.AreEqual(true, result, "ValidNetmask"); } /// @@ -1882,10 +1882,9 @@ public void TestValidNetmask0() public void TestValidNetmask1() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); - bool expected = true; bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); + Assert.AreEqual(true, result, "ValidNetmask"); } /// @@ -1895,10 +1894,9 @@ public void TestValidNetmask1() public void TestValidNetmask2() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); - bool expected = true; bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); + Assert.AreEqual(true, result, "ValidNetmask"); } /// @@ -1908,10 +1906,9 @@ public void TestValidNetmask2() public void TestValidNetmaskEae1() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:0000:ffff"); - bool expected = false; bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); + Assert.AreEqual(false, result, "ValidNetmask"); } /// @@ -1921,10 +1918,9 @@ public void TestValidNetmaskEae1() public void TestValidNetmaskEae3() { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:0000:0001"); - bool expected = false; bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(expected, result, "ValidNetmask"); + Assert.AreEqual(false, result, "ValidNetmask"); } #endregion @@ -1997,9 +1993,8 @@ public void TestContains1() var ipaddress = IPAddress.Parse("2001:0db8::1"); bool result = ipnetwork.Contains(ipaddress); - bool expected = true; - Assert.AreEqual(expected, result, "contains"); + Assert.AreEqual(true, result, "contains"); } /// @@ -2012,9 +2007,8 @@ public void TestContains2() var ipaddress = IPAddress.Parse("2001:0db8:0:1::"); bool result = ipnetwork.Contains(ipaddress); - bool expected = false; - Assert.AreEqual(expected, result, "contains"); + Assert.AreEqual(false, result, "contains"); } /// @@ -2027,9 +2021,8 @@ public void TestContains3() var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/64"); bool result = ipnetwork.Contains(ipnetwork2); - bool expected = true; - Assert.AreEqual(expected, result, "contains"); + Assert.AreEqual(true, result, "contains"); } /// @@ -2042,9 +2035,8 @@ public void TestContains4() var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/65"); bool result = ipnetwork.Contains(ipnetwork2); - bool expected = true; - Assert.AreEqual(expected, result, "contains"); + Assert.AreEqual(true, result, "contains"); } /// @@ -2057,9 +2049,8 @@ public void TestContains5() var ipnetwork2 = IPNetwork2.Parse("2001:0db8:1::/65"); bool result = ipnetwork.Contains(ipnetwork2); - bool expected = false; - Assert.AreEqual(expected, result, "contains"); + Assert.AreEqual(false, result, "contains"); } /// @@ -2072,9 +2063,8 @@ public void TestContains6() var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/63"); bool result = ipnetwork.Contains(ipnetwork2); - bool expected = false; - Assert.AreEqual(expected, result, "contains"); + Assert.AreEqual(false, result, "contains"); } /// @@ -2128,9 +2118,8 @@ public void TestOverlap3() var network1 = IPNetwork2.Parse("2001:0db8::/64"); var network2 = IPNetwork2.Parse("2001:0db8::/64"); bool result = network1.Overlap(network2); - bool expected = true; - Assert.AreEqual(expected, result, "overlap"); + Assert.AreEqual(true, result, "overlap"); } /// @@ -2142,9 +2131,8 @@ public void TestOverlap4() var network1 = IPNetwork2.Parse("2001:0db8::/64"); var network2 = IPNetwork2.Parse("2001:0db8:0:0:1::/65"); bool result = network1.Overlap(network2); - bool expected = true; - Assert.AreEqual(expected, result, "overlap"); + Assert.AreEqual(true, result, "overlap"); } /// @@ -2156,9 +2144,8 @@ public void TestOverlap5() var network1 = IPNetwork2.Parse("2001:0db8:0:1::/68"); var network2 = IPNetwork2.Parse("2001:0db8:0:2::/68"); bool result = network1.Overlap(network2); - bool expected = false; - Assert.AreEqual(expected, result, "overlap"); + Assert.AreEqual(false, result, "overlap"); } /// @@ -2170,9 +2157,8 @@ public void TestOverlap6() var network1 = IPNetwork2.Parse("2001:0db8:0:1::/68"); var network2 = IPNetwork2.Parse("2001:0db8:0:2::/62"); bool result = network1.Overlap(network2); - bool expected = true; - Assert.AreEqual(expected, result, "overlap"); + Assert.AreEqual(true, result, "overlap"); } #endregion @@ -2514,6 +2500,7 @@ public void TestSubnet13() var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); byte cidr = 70; IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + IPNetwork2 error = subnets[1000]; } /// @@ -2628,10 +2615,9 @@ public void TestTrySupernet1() var network1 = IPNetwork2.Parse("2001:db8::/65"); var network2 = IPNetwork2.Parse("2001:db8:0:0:8000::/65"); var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); - bool supernetted = true; bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); - Assert.AreEqual(supernetted, result, "supernetted"); + Assert.AreEqual(true, result, "supernetted"); Assert.AreEqual(supernetExpected, supernet, "supernet"); } @@ -2659,11 +2645,10 @@ public void TestTrySupernet3() var network1 = IPNetwork2.Parse("2001:db8::/64"); IPNetwork2 network2 = null; IPNetwork2 supernetExpected = null; - bool parsed = false; bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); + Assert.AreEqual(false, result, "parsed"); } /// @@ -2675,11 +2660,10 @@ public void TestTrySupernet4() var network1 = IPNetwork2.Parse("2001:db8::/64"); var network2 = IPNetwork2.Parse("2001:db9::/65"); IPNetwork2 supernetExpected = null; - bool parsed = false; bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); + Assert.AreEqual(false, result, "parsed"); } /// @@ -2691,11 +2675,10 @@ public void TestTrySupernet5() var network1 = IPNetwork2.Parse("2001:db8::/64"); var network2 = IPNetwork2.Parse("2001:dba::/64"); IPNetwork2 supernetExpected = null; - bool parsed = false; bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); + Assert.AreEqual(false, result, "parsed"); } /// @@ -2707,11 +2690,10 @@ public void TestTrySupernet6() var network1 = IPNetwork2.Parse("2001:db8::/64"); var network2 = IPNetwork2.Parse("2001:db8::1/65"); var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); - bool parsed = true; bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); + Assert.AreEqual(true, result, "parsed"); } /// @@ -2723,11 +2705,10 @@ public void TestTrySupernet8() var network1 = IPNetwork2.Parse("2001:db0::/64"); var network2 = IPNetwork2.Parse("2001:dbf::/64"); IPNetwork2 supernetExpected = null; - bool parsed = false; bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); + Assert.AreEqual(false, result, "parsed"); } /// @@ -2740,12 +2721,11 @@ public void TestTrySupernet9() var network2 = IPNetwork2.Parse("192.168.2.1/24"); IPNetwork2[] network3 = { network1, network2 }; IPNetwork2[] supernetExpected = { network1, network2 }; - bool parsed = true; bool result = IPNetwork2.TrySupernet(network3, out IPNetwork2[] supernet); Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); Assert.AreEqual(supernetExpected[1], supernet[1], "supernet"); - Assert.AreEqual(parsed, result, "parsed"); + Assert.AreEqual(true, result, "parsed"); } /// @@ -2758,11 +2738,10 @@ public void TestTrySupernet10() var network2 = IPNetwork2.Parse("2001:db8:0:0:8000::/65"); IPNetwork2[] network3 = { network1, network2 }; IPNetwork2[] supernetExpected = { IPNetwork2.Parse("2001:db8::/64") }; - bool parsed = true; bool result = IPNetwork2.TrySupernet(network3, out IPNetwork2[] supernet); Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); - Assert.AreEqual(parsed, result, "parsed"); + Assert.AreEqual(true, result, "parsed"); } /// @@ -2773,11 +2752,10 @@ public void TestTrySupernet11() { IPNetwork2[] network3 = null; _ = new[] { IPNetwork2.Parse("2001:db8::/64") }; - bool parsed = false; bool result = IPNetwork2.TrySupernet(network3, out IPNetwork2[] supernet); Assert.AreEqual(null, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); + Assert.AreEqual(false, result, "parsed"); } #endregion From 7fc103fbef52db02011e761a461b4ad3c32db9f2 Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sun, 30 Mar 2025 00:18:57 +0100 Subject: [PATCH 23/25] Fix: unit tests --- src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs index 70203881..fe2370fa 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs @@ -218,5 +218,6 @@ public void TestSubnet13() IPNetwork2 ipnetwork = IPNetwork2.IANA_CBLK_RESERVED1; byte cidr = 20; IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + IPNetwork2 error = subnets[1000]; } } \ No newline at end of file From abc6272b5a0941ff37a8bad4083cb893fe70bc19 Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sun, 30 Mar 2025 00:32:02 +0100 Subject: [PATCH 24/25] Fix: Assert IsTrue IsFalse --- src/TestProject/CidrClassFullIpv4UnitTest.cs | 12 +- src/TestProject/CidrClassFullIpv6UnitTest.cs | 6 +- src/TestProject/CidrClassLessUnitTest.cs | 18 +- src/TestProject/EqualsUnitTest.cs | 22 +-- src/TestProject/GetHashCodeUnitTest.cs | 12 +- .../IPNetworkCollectionMoveNextTests.cs | 4 +- .../IPNetworkTest/IPNetworkExamplesTests.cs | 4 +- .../IPNetworkTest/IPNetworkOperatorTests.cs | 16 +- .../IPNetworkTryGuessCidrTests.cs | 12 +- .../IPNetworkTryParseCidrTests.cs | 6 +- .../IPNetworkTest/IPNetworkTryParseTests.cs | 38 ++--- .../IPNetworkTest/IPNetworkTrySubnetTests.cs | 8 +- .../IPNetworkTryToBigIntegerTests.cs | 16 +- .../IPNetworkTest/IPNetworkTryToCidrTests.cs | 16 +- .../IPNetworkTryToNetmaskTests.cs | 4 +- .../IPNetworkTest/IPNetworkTryToUintTests.cs | 2 +- .../IPNetworkTryWideSubnetTests.cs | 10 +- src/TestProject/IPNetworkV6UnitTest.cs | 154 +++++++++--------- src/TestProject/TryParseUnitTest.cs | 44 ++--- 19 files changed, 202 insertions(+), 202 deletions(-) diff --git a/src/TestProject/CidrClassFullIpv4UnitTest.cs b/src/TestProject/CidrClassFullIpv4UnitTest.cs index 44bc5e15..0610b6ee 100644 --- a/src/TestProject/CidrClassFullIpv4UnitTest.cs +++ b/src/TestProject/CidrClassFullIpv4UnitTest.cs @@ -20,7 +20,7 @@ public void TestTryGuessCidrNull() bool parsed = cidrguess.TryGuessCidr(null, out byte cidr); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(0, cidr, "cidr"); } @@ -34,7 +34,7 @@ public void TestTryGuessCidrA() bool parsed = cidrguess.TryGuessCidr("10.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(8, cidr, "cidr"); } @@ -48,7 +48,7 @@ public void TestTryGuessCidrB() bool parsed = cidrguess.TryGuessCidr("172.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(16, cidr, "cidr"); } @@ -62,7 +62,7 @@ public void TestTryGuessCidrC() bool parsed = cidrguess.TryGuessCidr("192.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(24, cidr, "cidr"); } @@ -76,7 +76,7 @@ public void TestTryGuessCidrD() bool parsed = cidrguess.TryGuessCidr("224.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(24, cidr, "cidr"); } @@ -90,7 +90,7 @@ public void TestTryGuessCidrE() bool parsed = cidrguess.TryGuessCidr("240.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(24, cidr, "cidr"); } } \ No newline at end of file diff --git a/src/TestProject/CidrClassFullIpv6UnitTest.cs b/src/TestProject/CidrClassFullIpv6UnitTest.cs index 4a576b14..af246ce5 100644 --- a/src/TestProject/CidrClassFullIpv6UnitTest.cs +++ b/src/TestProject/CidrClassFullIpv6UnitTest.cs @@ -20,7 +20,7 @@ public void TestIpV6TryGuessCidrNull() bool parsed = cidrguess.TryGuessCidr(null, out byte cidr); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(0, cidr, "cidr"); } @@ -34,7 +34,7 @@ public void TestIpV6TryGuessCidr1() bool parsed = cidrguess.TryGuessCidr("::", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(64, cidr, "cidr"); } @@ -48,7 +48,7 @@ public void TestIpV6TryGuessCidr2() bool parsed = cidrguess.TryGuessCidr("2001:0db8::", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(64, cidr, "cidr"); } } \ No newline at end of file diff --git a/src/TestProject/CidrClassLessUnitTest.cs b/src/TestProject/CidrClassLessUnitTest.cs index 98c9c934..15737d5c 100644 --- a/src/TestProject/CidrClassLessUnitTest.cs +++ b/src/TestProject/CidrClassLessUnitTest.cs @@ -22,7 +22,7 @@ public void TestTryGuessCidrNull() bool parsed = cidrguess.TryGuessCidr(null, out byte cidr); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(0, cidr, "cidr"); } @@ -36,7 +36,7 @@ public void TestTryGuessCidrA() bool parsed = cidrguess.TryGuessCidr("10.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(32, cidr, "cidr"); } @@ -50,7 +50,7 @@ public void TestTryGuessCidrB() bool parsed = cidrguess.TryGuessCidr("172.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(32, cidr, "cidr"); } @@ -64,7 +64,7 @@ public void TestTryGuessCidrC() bool parsed = cidrguess.TryGuessCidr("192.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(32, cidr, "cidr"); } @@ -78,7 +78,7 @@ public void TestTryGuessCidrD() bool parsed = cidrguess.TryGuessCidr("224.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(32, cidr, "cidr"); } @@ -92,7 +92,7 @@ public void TestTryGuessCidrE() bool parsed = cidrguess.TryGuessCidr("240.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(32, cidr, "cidr"); } @@ -110,7 +110,7 @@ public void TestIpV6TryGuessCidrNull() bool parsed = cidrguess.TryGuessCidr(null, out byte cidr); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(0, cidr, "cidr"); } @@ -124,7 +124,7 @@ public void TestIpV6TryGuessCidr1() bool parsed = cidrguess.TryGuessCidr("::", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(128, cidr, "cidr"); } @@ -138,7 +138,7 @@ public void TestIpV6TryGuessCidr2() bool parsed = cidrguess.TryGuessCidr("2001:0db8::", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(128, cidr, "cidr"); } diff --git a/src/TestProject/EqualsUnitTest.cs b/src/TestProject/EqualsUnitTest.cs index d0fa15f4..a19485f3 100644 --- a/src/TestProject/EqualsUnitTest.cs +++ b/src/TestProject/EqualsUnitTest.cs @@ -22,7 +22,7 @@ public void TestEquals_ipv6_ipv4_0() var network2 = IPNetwork2.Parse("0.0.0.0/32"); bool result = network1.Equals(network2); - Assert.AreEqual(false, result, "equals"); + Assert.IsFalse(result, "equals"); } #endregion @@ -39,7 +39,7 @@ public void TestEquals_ipv4_1() var network2 = IPNetwork2.Parse("192.168.0.1/24"); bool result = network1.Equals(network2); - Assert.AreEqual(true, result, "equals"); + Assert.IsTrue(result, "equals"); } /// @@ -52,7 +52,7 @@ public void TestEquals_ipv4_2() IPNetwork2 network2 = null; bool result = network1.Equals(network2); - Assert.AreEqual(false, result, "equals"); + Assert.IsFalse(result, "equals"); } /// @@ -65,7 +65,7 @@ public void TestEquals_ipv4_3() object network2 = string.Empty; bool result = network1.Equals(network2); - Assert.AreEqual(false, result, "equals"); + Assert.IsFalse(result, "equals"); } /// @@ -78,7 +78,7 @@ public void TestEquals_ipv4_4() var network2 = IPNetwork2.Parse("192.168.0.1/25"); bool result = network1.Equals(network2); - Assert.AreEqual(false, result, "equals"); + Assert.IsFalse(result, "equals"); } /// @@ -91,7 +91,7 @@ public void TestEquals_ipv4_5() var network2 = IPNetwork2.Parse("192.168.1.1/24"); bool result = network1.Equals(network2); - Assert.AreEqual(false, result, "equals"); + Assert.IsFalse(result, "equals"); } #endregion @@ -108,7 +108,7 @@ public void TestEquals_ipv6_1() var network2 = IPNetwork2.Parse("::1/128"); bool result = network1.Equals(network2); - Assert.AreEqual(true, result, "equals"); + Assert.IsTrue(result, "equals"); } /// @@ -121,7 +121,7 @@ public void TestEquals_ipv6_2() IPNetwork2 network2 = null; bool result = network1.Equals(network2); - Assert.AreEqual(false, result, "equals"); + Assert.IsFalse(result, "equals"); } /// @@ -134,7 +134,7 @@ public void TestEquals_ipv6_3() object network2 = string.Empty; bool result = network1.Equals(network2); - Assert.AreEqual(false, result, "equals"); + Assert.IsFalse(result, "equals"); } /// @@ -147,7 +147,7 @@ public void TestEquals_ipv6_4() var network2 = IPNetwork2.Parse("::1/127"); bool result = network1.Equals(network2); - Assert.AreEqual(false, result, "equals"); + Assert.IsFalse(result, "equals"); } /// @@ -160,7 +160,7 @@ public void TestEquals_ipv6_5() var network2 = IPNetwork2.Parse("::10/128"); bool result = network1.Equals(network2); - Assert.AreEqual(false, result, "equals"); + Assert.IsFalse(result, "equals"); } #endregion diff --git a/src/TestProject/GetHashCodeUnitTest.cs b/src/TestProject/GetHashCodeUnitTest.cs index 1558e8d6..1415c2f2 100644 --- a/src/TestProject/GetHashCodeUnitTest.cs +++ b/src/TestProject/GetHashCodeUnitTest.cs @@ -70,12 +70,12 @@ public void TestGetHashCode_Dictionary_failed() bool contains5 = dic.ContainsKey(ipnetwork); bool contains6 = dic.ContainsKey(ipnetwork2); - Assert.AreEqual(false, contains1, "contains1"); - Assert.AreEqual(false, contains2, "contains2"); - Assert.AreEqual(true, contains3, "contains3"); - Assert.AreEqual(true, contains4, "contains4"); - Assert.AreEqual(true, contains5, "contains5"); - Assert.AreEqual(false, contains6, "contains6"); + Assert.IsFalse(contains1, "contains1"); + Assert.IsFalse(contains2, "contains2"); + Assert.IsTrue(contains3, "contains3"); + Assert.IsTrue(contains4, "contains4"); + Assert.IsTrue(contains5, "contains5"); + Assert.IsFalse(contains6, "contains6"); } #region Equals IPv6 vs IPv4 diff --git a/src/TestProject/IPNetworkCollectionMoveNextTests.cs b/src/TestProject/IPNetworkCollectionMoveNextTests.cs index 8dd076fd..b47bafb3 100644 --- a/src/TestProject/IPNetworkCollectionMoveNextTests.cs +++ b/src/TestProject/IPNetworkCollectionMoveNextTests.cs @@ -20,7 +20,7 @@ public void MoveNext1() using (IPNetworkCollection ipns = ipn.Subnet(32)) { bool next = ipns.MoveNext(); - Assert.AreEqual(true, next, "next"); + Assert.IsTrue(next, "next"); } } @@ -39,7 +39,7 @@ public void MoveNext2() ipns.MoveNext(); bool next = ipns.MoveNext(); - Assert.AreEqual(false, next, "next"); + Assert.IsFalse(next, "next"); } } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkExamplesTests.cs b/src/TestProject/IPNetworkTest/IPNetworkExamplesTests.cs index 31e773ed..dc48a0cf 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkExamplesTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkExamplesTests.cs @@ -179,7 +179,7 @@ public void When_TrySupernet_192_168_0_0_cidr24_add_192_168_10_0_cidr24_Then_Sho var network2 = IPNetwork2.Parse("192.168.10.0/24"); bool supernetted = network.TrySupernet(network2, out IPNetwork2 _); - Assert.AreEqual(false, supernetted); + Assert.IsFalse(supernetted); } /// @@ -192,7 +192,7 @@ public void When_TryWideSubnet_192_168_0_0_cidr24_add_192_168_10_0_cidr24_Then_S var network2 = IPNetwork2.Parse("192.168.10.0/24"); bool wideSubnetted = IPNetwork2.TryWideSubnet(new[] { network, network2 }, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, wideSubnetted); + Assert.IsTrue(wideSubnetted); Assert.AreEqual("192.168.0.0/20", ipnetwork.ToString()); Console.WriteLine("Network : {0}", ipnetwork.Network); diff --git a/src/TestProject/IPNetworkTest/IPNetworkOperatorTests.cs b/src/TestProject/IPNetworkTest/IPNetworkOperatorTests.cs index 8aea3564..a0cf4ca7 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkOperatorTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkOperatorTests.cs @@ -21,7 +21,7 @@ public void TestOperatorGreater1() bool greater = ipn1 > ipn2; - Assert.AreEqual(false, greater, "greater"); + Assert.IsFalse(greater, "greater"); } /// @@ -35,7 +35,7 @@ public void TestOperatorGreater2() bool greater = ipn1 > ipn2; - Assert.AreEqual(true, greater, "greater"); + Assert.IsTrue(greater, "greater"); } /// @@ -49,7 +49,7 @@ public void TestOperatorLower1() bool lower = ipn1 < ipn2; - Assert.AreEqual(true, lower, "lower"); + Assert.IsTrue(lower, "lower"); } /// @@ -63,7 +63,7 @@ public void TestOperatorLower2() bool lower = ipn1 < ipn2; - Assert.AreEqual(false, lower, "lower"); + Assert.IsFalse(lower, "lower"); } /// @@ -77,7 +77,7 @@ public void TestOperatorDifferent1() bool different = ipn1 != ipn2; - Assert.AreEqual(true, different, "different"); + Assert.IsTrue(different, "different"); } /// @@ -91,7 +91,7 @@ public void TestOperatorDifferent2() bool different = ipn1 != ipn2; - Assert.AreEqual(false, different, "different"); + Assert.IsFalse(different, "different"); } /// @@ -105,7 +105,7 @@ public void TestOperatorEqual1() bool eq = ipn1 == ipn2; - Assert.AreEqual(false, eq, "eq"); + Assert.IsFalse(eq, "eq"); } /// @@ -119,6 +119,6 @@ public void TestOperatorEqual2() bool eq = ipn1 == ipn2; - Assert.AreEqual(true, eq, "eq"); + Assert.IsTrue(eq, "eq"); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryGuessCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryGuessCidrTests.cs index ee3fe6bd..af92332b 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryGuessCidrTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryGuessCidrTests.cs @@ -18,7 +18,7 @@ public void TestTryGuessCidrNull() { bool parsed = IPNetwork2.TryGuessCidr(null, out byte cidr); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(0, cidr, "cidr"); } @@ -30,7 +30,7 @@ public void TestTryGuessCidrA() { bool parsed = IPNetwork2.TryGuessCidr("10.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(8, cidr, "cidr"); } @@ -42,7 +42,7 @@ public void TestTryGuessCidrB() { bool parsed = IPNetwork2.TryGuessCidr("172.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(16, cidr, "cidr"); } @@ -54,7 +54,7 @@ public void TestTryGuessCidrC() { bool parsed = IPNetwork2.TryGuessCidr("192.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(24, cidr, "cidr"); } @@ -66,7 +66,7 @@ public void TestTryGuessCidrD() { bool parsed = IPNetwork2.TryGuessCidr("224.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(24, cidr, "cidr"); } @@ -78,7 +78,7 @@ public void TestTryGuessCidrE() { bool parsed = IPNetwork2.TryGuessCidr("240.0.0.0", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(24, cidr, "cidr"); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryParseCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryParseCidrTests.cs index a14291ee..960e16aa 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryParseCidrTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryParseCidrTests.cs @@ -20,7 +20,7 @@ public void TryParseCidr1() byte? result = 0; bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetwork, out byte? cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); } @@ -35,7 +35,7 @@ public void TryParseCidr2() bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetwork, out byte? cidr); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); } @@ -50,7 +50,7 @@ public void TryParseCidr3() bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetwork, out byte? cidr); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs index fee8caf7..41903b70 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs @@ -19,7 +19,7 @@ public void TestTryParseIPAddressNetmaskAne2() IPAddress ip = null; bool parsed = IPNetwork2.TryParse(ip, ip, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(null, ipnet, "ipnet"); } @@ -31,7 +31,7 @@ public void TestTryParseIPAddressNetmaskAne3() { bool parsed = IPNetwork2.TryParse(string.Empty, 0, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(null, ipnet, "ipnet"); } @@ -43,7 +43,7 @@ public void TestTryParseIPAddressNetmaskAne4() { bool parsed = IPNetwork2.TryParse(null, 0, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(null, ipnet, "ipnet"); } @@ -56,7 +56,7 @@ public void TestTryParseIPAddressNetmaskAne5() string n = null; bool parsed = IPNetwork2.TryParse(n, n, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(null, ipnet, "ipnet"); } @@ -67,7 +67,7 @@ public void TestTryParseIPAddressNetmaskAne5() public void TestTryParseIPAddressNetmaskAne6() { bool parsed = IPNetwork2.TryParse(IPAddress.Parse("10.10.10.10"), null, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(null, ipnet, "ipnet"); } @@ -79,7 +79,7 @@ public void TestTryParseIPAddressNetmaskAne7() { bool parsed = IPNetwork2.TryParse("0.0.0.0", netmask: null, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(null, ipnet, "ipnet"); } @@ -91,7 +91,7 @@ public void TestTryParseIPAddressNetmaskAne8() { bool parsed = IPNetwork2.TryParse("x.x.x.x", "x.x.x.x", out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(null, ipnet, "ipnet"); } @@ -103,7 +103,7 @@ public void TestTryParseIPAddressNetmaskAne9() { bool parsed = IPNetwork2.TryParse("0.0.0.0", "x.x.x.x", out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(null, ipnet, "ipnet"); } @@ -115,7 +115,7 @@ public void TestTryParseIPAddressNetmaskAne10() { bool parsed = IPNetwork2.TryParse("x.x.x.x", 0, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(null, ipnet, "ipnet"); } @@ -127,7 +127,7 @@ public void TestTryParseIPAddressNetmaskAne11() { bool parsed = IPNetwork2.TryParse("0.0.0.0", 33, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(null, ipnet, "ipnet"); } @@ -148,7 +148,7 @@ public void TestTryParseIPAddressNetmask() uint usable = 254; bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); @@ -175,7 +175,7 @@ public void TestTryParseString1() uint usable = 254; bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); @@ -202,7 +202,7 @@ public void TestTryParseString2() uint usable = 254; bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); @@ -229,7 +229,7 @@ public void TestTryParseString3() uint usable = 4294967294; bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); @@ -256,7 +256,7 @@ public void TestTryParseString4() uint usable = 0; bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); @@ -283,7 +283,7 @@ public void TestTryParseString5() uint usable = 0; bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); @@ -301,7 +301,7 @@ public void TestTryParseStringAe1() { string ipaddress = "garbage"; bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 _); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); } /// @@ -311,7 +311,7 @@ public void TestTryParseStringAe1() public void TestTryParseStringAe2() { bool parsed = IPNetwork2.TryParse("0.0.0.0 0.0.1.0", out IPNetwork2 _); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); } /// @@ -321,6 +321,6 @@ public void TestTryParseStringAe2() public void TestTryParseStringAne1() { bool parsed = IPNetwork2.TryParse(null, out IPNetwork2 _); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTrySubnetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTrySubnetTests.cs index 44d1d298..78bee1a7 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTrySubnetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTrySubnetTests.cs @@ -67,7 +67,7 @@ public void TestTrySubnet3() bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection _); - Assert.AreEqual(false, subnetted, "subnetted"); + Assert.IsFalse(subnetted, "subnetted"); } /// @@ -81,7 +81,7 @@ public void TestTrySubnet4() bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection _); - Assert.AreEqual(false, subnetted, "subnetted"); + Assert.IsFalse(subnetted, "subnetted"); } /// @@ -95,7 +95,7 @@ public void TestTrySubnet5() bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection subnets); - Assert.AreEqual(true, subnetted, "subnetted"); + Assert.IsTrue(subnetted, "subnetted"); Assert.AreEqual(2, subnets.Count, "count"); Assert.AreEqual("10.0.0.0/9", subnets[0].ToString(), "subnet1"); Assert.AreEqual("10.128.0.0/9", subnets[1].ToString(), "subnet2"); @@ -112,7 +112,7 @@ public void TestTrySubnet6() bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection subnets); - Assert.AreEqual(true, subnetted, "subnetted"); + Assert.IsTrue(subnetted, "subnetted"); Assert.AreEqual(16, subnets.Count, "count"); Assert.AreEqual("192.168.0.0/20", subnets[0].ToString(), "subnet1"); Assert.AreEqual("192.168.16.0/20", subnets[1].ToString(), "subnet2"); diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryToBigIntegerTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryToBigIntegerTests.cs index 5bc2c0db..b573099c 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryToBigIntegerTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryToBigIntegerTests.cs @@ -21,7 +21,7 @@ public void TestTryToBigInteger32() bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); } /// @@ -35,7 +35,7 @@ public void TestTryToBigInteger24() bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); } /// @@ -49,7 +49,7 @@ public void TestTryToBigInteger16() bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); } /// @@ -64,7 +64,7 @@ public void TestTryToBigInteger8() bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); } /// @@ -78,7 +78,7 @@ public void TestTryToBigInteger0() bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); } /// @@ -90,7 +90,7 @@ public void TestTryToBigIntegerAne() bool parsed = IPNetwork2.TryToBigInteger(null, out BigInteger? result); Assert.AreEqual(null, result, "uint"); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); } /// @@ -102,7 +102,7 @@ public void TestTryToBigIntegerAne3() bool parsed = IPNetwork2.TryToBigInteger(null, out BigInteger? result); Assert.AreEqual(null, result, "uint"); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); } /// @@ -114,6 +114,6 @@ public void TestTryToBigIntegerAne2() bool parsed = IPNetwork2.TryToBigInteger(IPAddress.IPv6Any, out BigInteger? result); Assert.AreEqual(0, result, "result"); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryToCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryToCidrTests.cs index f6126c7c..348c2d1e 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryToCidrTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryToCidrTests.cs @@ -17,7 +17,7 @@ public class IPNetworkTryToCidrTests public void TestTryToCidrAne() { bool parsed = IPNetwork2.TryToCidr(null, out byte? _); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); } /// @@ -27,7 +27,7 @@ public void TestTryToCidrAne() public void TestTryToCidrAe() { bool parsed = IPNetwork2.TryToCidr(IPAddress.IPv6Any, out byte? cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual((byte)0, cidr, "cidr"); } @@ -38,7 +38,7 @@ public void TestTryToCidrAe() public void TestTryToCidrAe2() { bool parsed = IPNetwork2.TryToCidr(IPAddress.Parse("6.6.6.6"), out byte? _); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); } /// @@ -51,7 +51,7 @@ public void TestTryToCidr32() byte result = 32; bool parsed = IPNetwork2.TryToCidr(mask, out byte? cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -65,7 +65,7 @@ public void TestTryToCidr24() byte result = 24; bool parsed = IPNetwork2.TryToCidr(mask, out byte? cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -79,7 +79,7 @@ public void TestTryToCidr16() byte result = 16; bool parsed = IPNetwork2.TryToCidr(mask, out byte? cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -93,7 +93,7 @@ public void TestTryToCidr8() byte result = 8; bool parsed = IPNetwork2.TryToCidr(mask, out byte? cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -107,7 +107,7 @@ public void TestTryToCidr0() byte result = 0; bool parsed = IPNetwork2.TryToCidr(mask, out byte? cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryToNetmaskTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryToNetmaskTests.cs index 08d9936e..db306f11 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryToNetmaskTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryToNetmaskTests.cs @@ -20,7 +20,7 @@ public void TryToNetmask1() var expected = IPAddress.Parse("0.0.0.0"); Assert.AreEqual(expected, result, "Netmask"); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); } /// @@ -33,6 +33,6 @@ public void TryToNetmask2() IPAddress expected = null; Assert.AreEqual(expected, result, "Netmask"); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryToUintTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryToUintTests.cs index d40ebab0..7d715835 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryToUintTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryToUintTests.cs @@ -19,6 +19,6 @@ public void TestTryToUint1() bool parsed = IPNetwork2.TryToUint(32, AddressFamily.InterNetwork, out BigInteger? result); Assert.IsNotNull(result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryWideSubnetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryWideSubnetTests.cs index eb5342ee..def2e01a 100644 --- a/src/TestProject/IPNetworkTest/IPNetworkTryWideSubnetTests.cs +++ b/src/TestProject/IPNetworkTest/IPNetworkTryWideSubnetTests.cs @@ -27,7 +27,7 @@ public void TryWideSubnet1() } bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out IPNetwork2 ipnetwork); - Assert.AreEqual(true, wide, "wide"); + Assert.IsTrue(wide, "wide"); Assert.AreEqual("0.0.0.0/0", ipnetwork.ToString(), "ipnetwork"); } @@ -48,7 +48,7 @@ public void TryWideSubnet2() } bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out IPNetwork2 ipnetwork); - Assert.AreEqual(true, wide, "wide"); + Assert.IsTrue(wide, "wide"); Assert.AreEqual("0.0.0.0/4", ipnetwork.ToString(), "ipnetwork"); } @@ -69,7 +69,7 @@ public void TryWideSubnet3() } bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out IPNetwork2 _); - Assert.AreEqual(false, wide, "wide"); + Assert.IsFalse(wide, "wide"); } /// @@ -89,7 +89,7 @@ public void TryWideSubnet4() } bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out IPNetwork2 ipnetwork); - Assert.AreEqual(true, wide, "wide"); + Assert.IsTrue(wide, "wide"); Assert.AreEqual("1.1.1.1/32", ipnetwork.ToString(), "ipnetwork"); } @@ -100,6 +100,6 @@ public void TryWideSubnet4() public void TryWideSubnetNull() { bool wide = IPNetwork2.TryWideSubnet(null, out IPNetwork2 _); - Assert.AreEqual(false, wide, "wide"); + Assert.IsFalse(wide, "wide"); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkV6UnitTest.cs b/src/TestProject/IPNetworkV6UnitTest.cs index dfe66b4e..3ee7fb32 100644 --- a/src/TestProject/IPNetworkV6UnitTest.cs +++ b/src/TestProject/IPNetworkV6UnitTest.cs @@ -59,7 +59,7 @@ public void TestParsev6_128() BigInteger usable = 1; bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); @@ -88,7 +88,7 @@ public void TestParsev6_127() BigInteger usable = 2; bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); @@ -117,7 +117,7 @@ public void TestParsev6_126() BigInteger usable = 4; bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); @@ -146,7 +146,7 @@ public void TestParsev6_125() BigInteger usable = 8; bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); @@ -175,7 +175,7 @@ public void TestParsev6_124() BigInteger usable = 16; bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); @@ -204,7 +204,7 @@ public void TestParsev6_123() BigInteger usable = 32; bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); @@ -233,7 +233,7 @@ public void TestParsev6_112() uint usable = 65536; bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); @@ -262,7 +262,7 @@ public void TestParsev6_64() var usable = BigInteger.Pow(2, 128 - cidr); bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); @@ -291,7 +291,7 @@ public void TestParsev6_16() var usable = BigInteger.Pow(2, 128 - cidr); bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask2, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); @@ -318,7 +318,7 @@ public void TestParsev6_EDGE() bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); @@ -1293,7 +1293,7 @@ public void TestTryToCidr128() byte cidr = 128; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1307,7 +1307,7 @@ public void TestTryToCidr127() byte cidr = 127; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1321,7 +1321,7 @@ public void TestTryToCidr126() byte cidr = 126; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1335,7 +1335,7 @@ public void TestTryToCidr125() byte cidr = 125; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1349,7 +1349,7 @@ public void TestTryToCidr124() byte cidr = 124; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1363,7 +1363,7 @@ public void TestTryToCidr123() byte cidr = 123; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1377,7 +1377,7 @@ public void TestTryToCidr122() byte cidr = 122; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1391,7 +1391,7 @@ public void TestTryToCidr121() byte cidr = 121; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1405,7 +1405,7 @@ public void TestTryToCidr120() byte cidr = 120; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1419,7 +1419,7 @@ public void TestTryToCidr119() byte cidr = 119; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1433,7 +1433,7 @@ public void TestTryToCidr118() byte cidr = 118; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1447,7 +1447,7 @@ public void TestTryToCidr117() byte cidr = 117; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1461,7 +1461,7 @@ public void TestTryToCidr116() byte cidr = 116; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1475,7 +1475,7 @@ public void TestTryToCidr115() byte cidr = 115; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1489,7 +1489,7 @@ public void TestTryToCidr114() byte cidr = 114; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1503,7 +1503,7 @@ public void TestTryToCidr113() byte cidr = 113; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1517,7 +1517,7 @@ public void TestTryToCidr112() byte cidr = 112; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1531,7 +1531,7 @@ public void TestTryToCidr111() byte cidr = 111; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1545,7 +1545,7 @@ public void TestTryToCidr110() byte cidr = 110; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1559,7 +1559,7 @@ public void TestTryToCidr109() byte cidr = 109; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1573,7 +1573,7 @@ public void TestTryToCidr108() byte cidr = 108; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1587,7 +1587,7 @@ public void TestTryToCidr001() byte cidr = 1; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1601,7 +1601,7 @@ public void TestTryToCidr000() byte cidr = 0; bool parsed = IPNetwork2.TryToCidr(mask, out byte? result); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } @@ -1689,7 +1689,7 @@ public void TestTryToBigInteger32() bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); } /// @@ -1703,7 +1703,7 @@ public void TestTryToBigInteger24() bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); } /// @@ -1717,7 +1717,7 @@ public void TestTryToBigInteger16() bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); } /// @@ -1732,7 +1732,7 @@ public void TestTryToBigInteger8() bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); } /// @@ -1746,7 +1746,7 @@ public void TestTryToBigInteger0() bool parsed = IPNetwork2.TryToBigInteger(mask, out BigInteger? result); Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); } #endregion @@ -1763,7 +1763,7 @@ public void TryToNetmask1() var expected = IPAddress.Parse("::"); Assert.AreEqual(expected, result, "Netmask"); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); } /// @@ -1776,7 +1776,7 @@ public void TryToNetmask2() var expected = IPAddress.Parse("ffff:ffff:8000::"); Assert.AreEqual(expected, result, "Netmask"); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); } #endregion @@ -1872,7 +1872,7 @@ public void TestValidNetmask0() var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(true, result, "ValidNetmask"); + Assert.IsTrue(result, "ValidNetmask"); } /// @@ -1884,7 +1884,7 @@ public void TestValidNetmask1() var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(true, result, "ValidNetmask"); + Assert.IsTrue(result, "ValidNetmask"); } /// @@ -1896,7 +1896,7 @@ public void TestValidNetmask2() var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(true, result, "ValidNetmask"); + Assert.IsTrue(result, "ValidNetmask"); } /// @@ -1908,7 +1908,7 @@ public void TestValidNetmaskEae1() var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:0000:ffff"); bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(false, result, "ValidNetmask"); + Assert.IsFalse(result, "ValidNetmask"); } /// @@ -1920,7 +1920,7 @@ public void TestValidNetmaskEae3() var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:0000:0001"); bool result = IPNetwork2.ValidNetmask(mask); - Assert.AreEqual(false, result, "ValidNetmask"); + Assert.IsFalse(result, "ValidNetmask"); } #endregion @@ -1994,7 +1994,7 @@ public void TestContains1() bool result = ipnetwork.Contains(ipaddress); - Assert.AreEqual(true, result, "contains"); + Assert.IsTrue(result, "contains"); } /// @@ -2008,7 +2008,7 @@ public void TestContains2() bool result = ipnetwork.Contains(ipaddress); - Assert.AreEqual(false, result, "contains"); + Assert.IsFalse(result, "contains"); } /// @@ -2022,7 +2022,7 @@ public void TestContains3() bool result = ipnetwork.Contains(ipnetwork2); - Assert.AreEqual(true, result, "contains"); + Assert.IsTrue(result, "contains"); } /// @@ -2036,7 +2036,7 @@ public void TestContains4() bool result = ipnetwork.Contains(ipnetwork2); - Assert.AreEqual(true, result, "contains"); + Assert.IsTrue(result, "contains"); } /// @@ -2050,7 +2050,7 @@ public void TestContains5() bool result = ipnetwork.Contains(ipnetwork2); - Assert.AreEqual(false, result, "contains"); + Assert.IsFalse(result, "contains"); } /// @@ -2064,7 +2064,7 @@ public void TestContains6() bool result = ipnetwork.Contains(ipnetwork2); - Assert.AreEqual(false, result, "contains"); + Assert.IsFalse(result, "contains"); } /// @@ -2090,7 +2090,7 @@ public void TestContains11_different_address_family_returns_false() var ipaddress = IPAddress.Parse("127.0.0.1"); // IPv4 bool result = ipnetwork.Contains(ipaddress); - Assert.AreEqual(false, result, "contains"); + Assert.IsFalse(result, "contains"); } #endregion @@ -2119,7 +2119,7 @@ public void TestOverlap3() var network2 = IPNetwork2.Parse("2001:0db8::/64"); bool result = network1.Overlap(network2); - Assert.AreEqual(true, result, "overlap"); + Assert.IsTrue(result, "overlap"); } /// @@ -2132,7 +2132,7 @@ public void TestOverlap4() var network2 = IPNetwork2.Parse("2001:0db8:0:0:1::/65"); bool result = network1.Overlap(network2); - Assert.AreEqual(true, result, "overlap"); + Assert.IsTrue(result, "overlap"); } /// @@ -2145,7 +2145,7 @@ public void TestOverlap5() var network2 = IPNetwork2.Parse("2001:0db8:0:2::/68"); bool result = network1.Overlap(network2); - Assert.AreEqual(false, result, "overlap"); + Assert.IsFalse(result, "overlap"); } /// @@ -2158,7 +2158,7 @@ public void TestOverlap6() var network2 = IPNetwork2.Parse("2001:0db8:0:2::/62"); bool result = network1.Overlap(network2); - Assert.AreEqual(true, result, "overlap"); + Assert.IsTrue(result, "overlap"); } #endregion @@ -2537,7 +2537,7 @@ public void TestTrySubnet3() bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection _); - Assert.AreEqual(false, subnetted, "subnetted"); + Assert.IsFalse(subnetted, "subnetted"); } /// @@ -2551,7 +2551,7 @@ public void TestTrySubnet4() bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection _); - Assert.AreEqual(false, subnetted, "subnetted"); + Assert.IsFalse(subnetted, "subnetted"); } /// @@ -2565,7 +2565,7 @@ public void TestTrySubnet5() bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection subnets); - Assert.AreEqual(true, subnetted, "subnetted"); + Assert.IsTrue(subnetted, "subnetted"); Assert.AreEqual(2, subnets.Count, "count"); Assert.AreEqual("2001:db8::/65", subnets[0].ToString(), "subnet1"); Assert.AreEqual("2001:db8:0:0:8000::/65", subnets[1].ToString(), "subnet2"); @@ -2582,7 +2582,7 @@ public void TestTrySubnet6() bool subnetted = ipnetwork.TrySubnet(cidr, out IPNetworkCollection subnets); - Assert.AreEqual(true, subnetted, "subnetted"); + Assert.IsTrue(subnetted, "subnetted"); Assert.AreEqual(16, subnets.Count, "count"); Assert.AreEqual("2001:db8::/68", subnets[0].ToString(), "subnet1"); Assert.AreEqual("2001:db8:0:0:1000::/68", subnets[1].ToString(), "subnet2"); @@ -2617,7 +2617,7 @@ public void TestTrySupernet1() var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); - Assert.AreEqual(true, result, "supernetted"); + Assert.IsTrue(result, "supernetted"); Assert.AreEqual(supernetExpected, supernet, "supernet"); } @@ -2648,7 +2648,7 @@ public void TestTrySupernet3() bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(false, result, "parsed"); + Assert.IsFalse(result, "parsed"); } /// @@ -2663,7 +2663,7 @@ public void TestTrySupernet4() bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(false, result, "parsed"); + Assert.IsFalse(result, "parsed"); } /// @@ -2678,7 +2678,7 @@ public void TestTrySupernet5() bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(false, result, "parsed"); + Assert.IsFalse(result, "parsed"); } /// @@ -2693,7 +2693,7 @@ public void TestTrySupernet6() bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(true, result, "parsed"); + Assert.IsTrue(result, "parsed"); } /// @@ -2708,7 +2708,7 @@ public void TestTrySupernet8() bool result = network1.TrySupernet(network2, out IPNetwork2 supernet); Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(false, result, "parsed"); + Assert.IsFalse(result, "parsed"); } /// @@ -2725,7 +2725,7 @@ public void TestTrySupernet9() Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); Assert.AreEqual(supernetExpected[1], supernet[1], "supernet"); - Assert.AreEqual(true, result, "parsed"); + Assert.IsTrue(result, "parsed"); } /// @@ -2741,7 +2741,7 @@ public void TestTrySupernet10() bool result = IPNetwork2.TrySupernet(network3, out IPNetwork2[] supernet); Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); - Assert.AreEqual(true, result, "parsed"); + Assert.IsTrue(result, "parsed"); } /// @@ -2755,7 +2755,7 @@ public void TestTrySupernet11() bool result = IPNetwork2.TrySupernet(network3, out IPNetwork2[] supernet); Assert.AreEqual(null, supernet, "supernet"); - Assert.AreEqual(false, result, "parsed"); + Assert.IsFalse(result, "parsed"); } #endregion @@ -2770,7 +2770,7 @@ public void TestTryGuessCidrNull() { bool parsed = IPNetwork2.TryGuessCidr(null, out byte cidr); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(0, cidr, "cidr"); } @@ -2782,7 +2782,7 @@ public void TestTryGuessCidr1() { bool parsed = IPNetwork2.TryGuessCidr("::", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(64, cidr, "cidr"); } @@ -2794,7 +2794,7 @@ public void TestTryGuessCidr2() { bool parsed = IPNetwork2.TryGuessCidr("2001:0db8::", out byte cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(64, cidr, "cidr"); } @@ -2974,7 +2974,7 @@ public void TryParseCidr1() byte? result = 0; bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out byte? cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); } @@ -2988,7 +2988,7 @@ public void TryParseCidr2() bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out byte? cidr); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(null, cidr, "cidr"); } @@ -3003,7 +3003,7 @@ public void TryParseCidr33() bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out byte? cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); } @@ -3018,7 +3018,7 @@ public void TryParseCidr128() bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out byte? cidr); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); } @@ -3030,7 +3030,7 @@ public void TryParseCidr129() { bool parsed = IPNetwork2.TryParseCidr("129", AddressFamily.InterNetworkV6, out byte? cidr); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(null, cidr, "cidr"); } diff --git a/src/TestProject/TryParseUnitTest.cs b/src/TestProject/TryParseUnitTest.cs index a75d7f00..aa240d80 100644 --- a/src/TestProject/TryParseUnitTest.cs +++ b/src/TestProject/TryParseUnitTest.cs @@ -19,7 +19,7 @@ public class TryParseUnitTest public void Test_IPNetwork_TryParse_Issue294() { bool result = IPNetwork2.TryParse("*", out IPNetwork2 _); - Assert.AreEqual(false, result, "parsed1"); + Assert.IsFalse(result, "parsed1"); } #endregion @@ -35,7 +35,7 @@ public void TestTryParseIPAddressNetmaskAne2() IPAddress ip = null; bool parsed = IPNetwork2.TryParse(ip, ip, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(null, ipnet, "ipnet"); } @@ -47,7 +47,7 @@ public void TestTryParseIPAddressNetmaskAne3() { bool parsed = IPNetwork2.TryParse(string.Empty, 0, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(null, ipnet, "ipnet"); } @@ -59,7 +59,7 @@ public void TestTryParseIPAddressNetmaskAne4() { bool parsed = IPNetwork2.TryParse(null, 0, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(null, ipnet, "ipnet"); } @@ -73,7 +73,7 @@ public void TestTryParseIPAddressNetmaskAne5() bool parsed = IPNetwork2.TryParse(n, n, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(null, ipnet, "ipnet"); } @@ -85,7 +85,7 @@ public void TestTryParseIPAddressNetmaskAne6() { bool parsed = IPNetwork2.TryParse(IPAddress.Parse("10.10.10.10"), null, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(null, ipnet, "ipnet"); } @@ -97,7 +97,7 @@ public void TestTryParseIPAddressNetmaskAne7() { bool parsed = IPNetwork2.TryParse("0.0.0.0", netmask: null, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(null, ipnet, "ipnet"); } @@ -109,7 +109,7 @@ public void TestTryParseIPAddressNetmaskAne8() { bool parsed = IPNetwork2.TryParse("x.x.x.x", "x.x.x.x", out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(null, ipnet, "ipnet"); } @@ -121,7 +121,7 @@ public void TestTryParseIPAddressNetmaskAne9() { bool parsed = IPNetwork2.TryParse("0.0.0.0", "x.x.x.x", out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(null, ipnet, "ipnet"); } @@ -133,7 +133,7 @@ public void TestTryParseIPAddressNetmaskAne10() { bool parsed = IPNetwork2.TryParse("x.x.x.x", 0, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(null, ipnet, "ipnet"); } @@ -145,7 +145,7 @@ public void TestTryParseIPAddressNetmaskAne11() { bool parsed = IPNetwork2.TryParse("0.0.0.0", 33, out IPNetwork2 ipnet); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); Assert.AreEqual(null, ipnet, "ipnet"); } @@ -167,7 +167,7 @@ public void TestTryParseIPAddressNetmask() bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); @@ -195,7 +195,7 @@ public void TestTryParseString1() bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); @@ -223,7 +223,7 @@ public void TestTryParseString2() bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); @@ -251,7 +251,7 @@ public void TestTryParseString3() bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); @@ -279,7 +279,7 @@ public void TestTryParseString4() bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); @@ -307,7 +307,7 @@ public void TestTryParseString5() bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); + Assert.IsTrue(parsed, "parsed"); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); @@ -326,7 +326,7 @@ public void TestTryParseStringAe1() string ipaddress = "garbage"; bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 _); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); } /// @@ -338,7 +338,7 @@ public void TestTryParseStringAe2() string ipaddress = "0.0.0.0 0.0.1.0"; bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 _); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); } /// @@ -350,7 +350,7 @@ public void TestTryParseStringAne1() string ipaddress = null; bool parsed = IPNetwork2.TryParse(ipaddress, out IPNetwork2 _); - Assert.AreEqual(false, parsed, "parsed"); + Assert.IsFalse(parsed, "parsed"); } #endregion @@ -366,8 +366,8 @@ public void Test_TryParse_InvalidIpv6_return_valid_ipv6network() bool parsed1 = IPNetwork2.TryParse("g001:02b8::/64", out IPNetwork2 ipnetwork1); bool parsed2 = IPNetwork2.TryParse("1:2b8::/64", out IPNetwork2 ipnetwork2); - Assert.AreEqual(true, parsed1, "parsed1"); - Assert.AreEqual(true, parsed2, "parsed2"); + Assert.IsTrue(parsed1, "parsed1"); + Assert.IsTrue(parsed2, "parsed2"); Assert.AreEqual(ipnetwork1, ipnetwork2, "ipnetwork1 == ipnetwork2"); } From b8dcad772b3053571348ad3906e8c4bf9fff370f Mon Sep 17 00:00:00 2001 From: lduchosal Date: Sun, 30 Mar 2025 00:46:09 +0100 Subject: [PATCH 25/25] Fix: code --- src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs | 6 ++++-- src/TestProject/IPNetworkCollectionCtorTests.cs | 4 ++-- src/TestProject/IPNetworkV6UnitTest.cs | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs b/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs index d424eb74..82c4a548 100644 --- a/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs +++ b/src/System.Net.IPNetwork/IPNetwork2WideSubnet.cs @@ -49,7 +49,8 @@ public static IPNetwork2 WideSubnet(string start, string end) } var ipnetwork = new IPNetwork2(0, startIP.AddressFamily, 0); - for (byte cidr = 32; true; cidr--) + // ReSharper disable once ConditionIsAlwaysTrueOrFalse + for (byte cidr = 32; cidr >= 0; cidr--) { var wideSubnet = IPNetwork2.Parse(start, cidr); if (wideSubnet.Contains(endIP)) @@ -151,7 +152,8 @@ internal static void InternalWideSubnet(bool tryWide, IPNetwork2[] ipnetworks, o } var ipn = new IPNetwork2(0, family, 0); - for (byte cidr = nnin0.cidr; true; cidr--) + // ReSharper disable once ConditionIsAlwaysTrueOrFalse + for (byte cidr = nnin0.cidr; cidr >= 0; cidr--) { var wideSubnet = new IPNetwork2(uintNnin0, family, cidr); if (wideSubnet.Contains(ipaddressX)) diff --git a/src/TestProject/IPNetworkCollectionCtorTests.cs b/src/TestProject/IPNetworkCollectionCtorTests.cs index cab77255..7b135fc2 100644 --- a/src/TestProject/IPNetworkCollectionCtorTests.cs +++ b/src/TestProject/IPNetworkCollectionCtorTests.cs @@ -17,7 +17,7 @@ public class IPNetworkCollectionCtorTests [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestCtor1() { - var _ = new IPNetworkCollection(IPNetwork2.IANA_ABLK_RESERVED1, 33); + var ipn = new IPNetworkCollection(IPNetwork2.IANA_ABLK_RESERVED1, 33); } /// @@ -27,6 +27,6 @@ public void TestCtor1() [ExpectedException(typeof(ArgumentException))] public void TestCtor2() { - var _ = new IPNetworkCollection(IPNetwork2.IANA_ABLK_RESERVED1, 2); + var ipn = new IPNetworkCollection(IPNetwork2.IANA_ABLK_RESERVED1, 2); } } \ No newline at end of file diff --git a/src/TestProject/IPNetworkV6UnitTest.cs b/src/TestProject/IPNetworkV6UnitTest.cs index 3ee7fb32..3278c4d6 100644 --- a/src/TestProject/IPNetworkV6UnitTest.cs +++ b/src/TestProject/IPNetworkV6UnitTest.cs @@ -953,7 +953,7 @@ public void CtorWithIpAndCidr2() { string ipaddress = "2001:db8::"; var ip = IPAddress.Parse(ipaddress); - var _ = new IPNetwork2(ip, 129); + var ipn = new IPNetwork2(ip, 129); } #endregion