Skip to content

Commit baf534c

Browse files
authored
[NET] Fix calling non-validating ctor (#117415)
* Fix calling non-validating ctor * Copilot suggestion
1 parent 9f9f4a4 commit baf534c

File tree

2 files changed

+33
-19
lines changed

2 files changed

+33
-19
lines changed

src/libraries/System.Net.Primitives/src/System/Net/IPNetwork.cs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,6 @@ public IPNetwork(IPAddress baseAddress, int prefixLength)
5757
static void ThrowArgumentOutOfRangeException() => throw new ArgumentOutOfRangeException(nameof(prefixLength));
5858
}
5959

60-
// Non-validating ctor
61-
private IPNetwork(IPAddress baseAddress, int prefixLength, bool _)
62-
{
63-
_baseAddress = baseAddress;
64-
PrefixLength = prefixLength;
65-
}
66-
6760
/// <summary>
6861
/// Determines whether a given <see cref="IPAddress"/> is part of the network.
6962
/// </summary>
@@ -196,7 +189,7 @@ public static bool TryParse(ReadOnlySpan<char> s, out IPNetwork result)
196189
prefixLength <= GetMaxPrefixLength(address))
197190
{
198191
Debug.Assert(prefixLength >= 0); // Parsing with NumberStyles.None should ensure that prefixLength is always non-negative.
199-
result = new IPNetwork(address, prefixLength, false);
192+
result = new IPNetwork(address, prefixLength);
200193
return true;
201194
}
202195
}
@@ -224,7 +217,7 @@ public static bool TryParse(ReadOnlySpan<byte> utf8Text, out IPNetwork result)
224217
prefixLength <= GetMaxPrefixLength(address))
225218
{
226219
Debug.Assert(prefixLength >= 0); // Parsing with NumberStyles.None should ensure that prefixLength is always non-negative.
227-
result = new IPNetwork(address, prefixLength, false);
220+
result = new IPNetwork(address, prefixLength);
228221
return true;
229222
}
230223
}

src/libraries/System.Net.Primitives/tests/FunctionalTests/IPNetworkTest.cs

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,18 +76,26 @@ private IPAddress GetBaseAddress(IPAddress address, int prefix)
7676
_ => throw new ArgumentOutOfRangeException($"Unexpected address family {address.AddressFamily} of {address}.")
7777
};
7878

79-
[Theory]
80-
[MemberData(nameof(ValidIPNetworkData))]
81-
public void Constructor_Valid_Succeeds(string input)
79+
private (IPAddress, IPAddress, int, string) ParseInput(string input)
8280
{
8381
string[] splitInput = input.Split('/');
8482
IPAddress address = IPAddress.Parse(splitInput[0]);
8583
int prefixLength = int.Parse(splitInput[1]);
84+
IPAddress baseAddress = GetBaseAddress(address, prefixLength);
85+
return (address, baseAddress, prefixLength, $"{baseAddress}/{prefixLength}");
86+
}
87+
88+
[Theory]
89+
[MemberData(nameof(ValidIPNetworkData))]
90+
public void Constructor_Valid_Succeeds(string input)
91+
{
92+
var (address, baseAddress, prefixLength, toString) = ParseInput(input);
8693

8794
IPNetwork network = new IPNetwork(address, prefixLength);
8895

89-
Assert.Equal(GetBaseAddress(address, prefixLength), network.BaseAddress);
96+
Assert.Equal(baseAddress, network.BaseAddress);
9097
Assert.Equal(prefixLength, network.PrefixLength);
98+
Assert.Equal(toString, network.ToString());
9199
}
92100

93101
[Fact]
@@ -155,8 +163,15 @@ public void Parse_ValidNetworkNotation_Succeeds(string input)
155163
var stringParsedNetwork = IPNetwork.Parse(input);
156164
var utf8ParsedNetwork = IPNetwork.Parse(utf8Bytes);
157165

158-
Assert.Equal(input, stringParsedNetwork.ToString());
159-
Assert.Equal(input, utf8ParsedNetwork.ToString());
166+
var (_, baseAddress, prefixLength, toString) = ParseInput(input);
167+
168+
Assert.Equal(baseAddress, stringParsedNetwork.BaseAddress);
169+
Assert.Equal(prefixLength, stringParsedNetwork.PrefixLength);
170+
Assert.Equal(toString, stringParsedNetwork.ToString());
171+
172+
Assert.Equal(baseAddress, utf8ParsedNetwork.BaseAddress);
173+
Assert.Equal(prefixLength, utf8ParsedNetwork.PrefixLength);
174+
Assert.Equal(toString, utf8ParsedNetwork.ToString());
160175
}
161176

162177
[Theory]
@@ -165,11 +180,17 @@ public void TryParse_ValidNetworkNotation_Succeeds(string input)
165180
{
166181
byte[] utf8Bytes = Encoding.UTF8.GetBytes(input);
167182

168-
Assert.True(IPNetwork.TryParse(input, out IPNetwork network));
169-
Assert.Equal(input, network.ToString());
183+
var (_, baseAddress, prefixLength, toString) = ParseInput(input);
184+
185+
Assert.True(IPNetwork.TryParse(input, out IPNetwork stringParsedNetwork));
186+
Assert.Equal(baseAddress, stringParsedNetwork.BaseAddress);
187+
Assert.Equal(prefixLength, stringParsedNetwork.PrefixLength);
188+
Assert.Equal(toString, stringParsedNetwork.ToString());
170189

171-
Assert.True(IPNetwork.TryParse(utf8Bytes, out network));
172-
Assert.Equal(input, network.ToString());
190+
Assert.True(IPNetwork.TryParse(utf8Bytes, out IPNetwork utf8ParsedNetwork));
191+
Assert.Equal(baseAddress, utf8ParsedNetwork.BaseAddress);
192+
Assert.Equal(prefixLength, utf8ParsedNetwork.PrefixLength);
193+
Assert.Equal(toString, utf8ParsedNetwork.ToString());
173194
}
174195

175196
[Fact]

0 commit comments

Comments
 (0)