Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 2 additions & 9 deletions src/libraries/System.Net.Primitives/src/System/Net/IPNetwork.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

/// <summary>
/// Determines whether a given <see cref="IPAddress"/> is part of the network.
/// </summary>
Expand Down Expand Up @@ -196,7 +189,7 @@ public static bool TryParse(ReadOnlySpan<char> 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;
}
}
Expand Down Expand Up @@ -224,7 +217,7 @@ public static bool TryParse(ReadOnlySpan<byte> 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;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down Expand Up @@ -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]
Expand All @@ -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]
Expand Down
Loading