diff --git a/src/libraries/System.Net.Primitives/src/System/Net/IPNetwork.cs b/src/libraries/System.Net.Primitives/src/System/Net/IPNetwork.cs index 4a02fdb984a146..52bd0c8cb902a8 100644 --- a/src/libraries/System.Net.Primitives/src/System/Net/IPNetwork.cs +++ b/src/libraries/System.Net.Primitives/src/System/Net/IPNetwork.cs @@ -57,13 +57,6 @@ public IPNetwork(IPAddress baseAddress, int prefixLength) static void ThrowArgumentOutOfRangeException() => throw new ArgumentOutOfRangeException(nameof(prefixLength)); } - // Non-validating ctor - private IPNetwork(IPAddress baseAddress, int prefixLength, bool _) - { - _baseAddress = baseAddress; - PrefixLength = prefixLength; - } - /// /// Determines whether a given is part of the network. /// @@ -196,7 +189,7 @@ public static bool TryParse(ReadOnlySpan s, out IPNetwork result) prefixLength <= GetMaxPrefixLength(address)) { Debug.Assert(prefixLength >= 0); // Parsing with NumberStyles.None should ensure that prefixLength is always non-negative. - result = new IPNetwork(address, prefixLength, false); + result = new IPNetwork(address, prefixLength); return true; } } @@ -224,7 +217,7 @@ public static bool TryParse(ReadOnlySpan utf8Text, out IPNetwork result) prefixLength <= GetMaxPrefixLength(address)) { Debug.Assert(prefixLength >= 0); // Parsing with NumberStyles.None should ensure that prefixLength is always non-negative. - result = new IPNetwork(address, prefixLength, false); + result = new IPNetwork(address, prefixLength); return true; } } diff --git a/src/libraries/System.Net.Primitives/tests/FunctionalTests/IPNetworkTest.cs b/src/libraries/System.Net.Primitives/tests/FunctionalTests/IPNetworkTest.cs index b73a2831b9a2d8..3547c24203de9d 100644 --- a/src/libraries/System.Net.Primitives/tests/FunctionalTests/IPNetworkTest.cs +++ b/src/libraries/System.Net.Primitives/tests/FunctionalTests/IPNetworkTest.cs @@ -76,18 +76,26 @@ private IPAddress GetBaseAddress(IPAddress address, int prefix) _ => throw new ArgumentOutOfRangeException($"Unexpected address family {address.AddressFamily} of {address}.") }; - [Theory] - [MemberData(nameof(ValidIPNetworkData))] - public void Constructor_Valid_Succeeds(string input) + private (IPAddress, IPAddress, int, string) ParseInput(string input) { string[] splitInput = input.Split('/'); IPAddress address = IPAddress.Parse(splitInput[0]); int prefixLength = int.Parse(splitInput[1]); + IPAddress baseAddress = GetBaseAddress(address, prefixLength); + return (address, baseAddress, prefixLength, $"{baseAddress}/{prefixLength}"); + } + + [Theory] + [MemberData(nameof(ValidIPNetworkData))] + public void Constructor_Valid_Succeeds(string input) + { + var (address, baseAddress, prefixLength, toString) = ParseInput(input); IPNetwork network = new IPNetwork(address, prefixLength); - Assert.Equal(GetBaseAddress(address, prefixLength), network.BaseAddress); + Assert.Equal(baseAddress, network.BaseAddress); Assert.Equal(prefixLength, network.PrefixLength); + Assert.Equal(toString, network.ToString()); } [Fact] @@ -155,8 +163,15 @@ public void Parse_ValidNetworkNotation_Succeeds(string input) var stringParsedNetwork = IPNetwork.Parse(input); var utf8ParsedNetwork = IPNetwork.Parse(utf8Bytes); - Assert.Equal(input, stringParsedNetwork.ToString()); - Assert.Equal(input, utf8ParsedNetwork.ToString()); + var (_, baseAddress, prefixLength, toString) = ParseInput(input); + + Assert.Equal(baseAddress, stringParsedNetwork.BaseAddress); + Assert.Equal(prefixLength, stringParsedNetwork.PrefixLength); + Assert.Equal(toString, stringParsedNetwork.ToString()); + + Assert.Equal(baseAddress, utf8ParsedNetwork.BaseAddress); + Assert.Equal(prefixLength, utf8ParsedNetwork.PrefixLength); + Assert.Equal(toString, utf8ParsedNetwork.ToString()); } [Theory] @@ -165,11 +180,17 @@ public void TryParse_ValidNetworkNotation_Succeeds(string input) { byte[] utf8Bytes = Encoding.UTF8.GetBytes(input); - Assert.True(IPNetwork.TryParse(input, out IPNetwork network)); - Assert.Equal(input, network.ToString()); + var (_, baseAddress, prefixLength, toString) = ParseInput(input); + + Assert.True(IPNetwork.TryParse(input, out IPNetwork stringParsedNetwork)); + Assert.Equal(baseAddress, stringParsedNetwork.BaseAddress); + Assert.Equal(prefixLength, stringParsedNetwork.PrefixLength); + Assert.Equal(toString, stringParsedNetwork.ToString()); - Assert.True(IPNetwork.TryParse(utf8Bytes, out network)); - Assert.Equal(input, network.ToString()); + Assert.True(IPNetwork.TryParse(utf8Bytes, out IPNetwork utf8ParsedNetwork)); + Assert.Equal(baseAddress, utf8ParsedNetwork.BaseAddress); + Assert.Equal(prefixLength, utf8ParsedNetwork.PrefixLength); + Assert.Equal(toString, utf8ParsedNetwork.ToString()); } [Fact]