From da11368492d2f46db67a2b54800bc9f2e1b8d26c Mon Sep 17 00:00:00 2001 From: David Hall Date: Fri, 1 Sep 2023 19:27:34 -0600 Subject: [PATCH] IpHlpApi unit test nullability fixed --- UnitTests/PInvoke/IpHlpApi/IpHlpApiTests.cs | 23 ++++++++++++---------- UnitTests/PInvoke/IpHlpApi/NetIOApiTests.cs | 30 ++++++++++++----------------- 2 files changed, 25 insertions(+), 28 deletions(-) diff --git a/UnitTests/PInvoke/IpHlpApi/IpHlpApiTests.cs b/UnitTests/PInvoke/IpHlpApi/IpHlpApiTests.cs index 118656c7..24af04a7 100644 --- a/UnitTests/PInvoke/IpHlpApi/IpHlpApiTests.cs +++ b/UnitTests/PInvoke/IpHlpApi/IpHlpApiTests.cs @@ -106,7 +106,7 @@ public partial class IpHlpApiTests Assert.That(GetBestRoute(target, 0, out MIB_IPFORWARDROW fwdRow), Is.Zero); var mibrow = new MIB_IPNETROW(target, fwdRow.dwForwardIfIndex, SendARP(target), MIB_IPNET_TYPE.MIB_IPNET_TYPE_DYNAMIC); - MIB_IPNETTABLE t1 = null; + MIB_IPNETTABLE? t1 = null; Assert.That(() => t1 = GetIpNetTable(true), Throws.Nothing); if (t1 != null && HasVal(t1, mibrow)) Assert.That(DeleteIpNetEntry(mibrow), Is.Zero); @@ -197,8 +197,9 @@ public partial class IpHlpApiTests [Test] public void GetBestInterfaceExTest() { - System.Net.IPAddress gw = primaryAdapter.GatewayAddresses.Select(a => a.Address.Convert()).FirstOrDefault(); - var sa = new SOCKADDR(gw.GetAddressBytes(), 0, gw.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork ? 0 : (uint)gw.ScopeId); + System.Net.IPAddress? gw = primaryAdapter.GatewayAddresses.Select(a => a.Address.Convert()).FirstOrDefault(); + Assert.NotNull(gw); + var sa = new SOCKADDR(gw!.GetAddressBytes(), 0, gw.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork ? 0 : (uint)gw.ScopeId); Assert.That(GetBestInterfaceEx(sa, out var idx), Is.Zero); Assert.That(idx, Is.EqualTo(primaryAdapter.IfIndex)); } @@ -207,7 +208,7 @@ public partial class IpHlpApiTests public void GetBestInterfaceTest() { #pragma warning disable CS0618 // Type or member is obsolete - var gw = (uint)primaryAdapter.GatewayAddresses.Select(a => a.Address.Convert()).FirstOrDefault().Address; + var gw = (uint)(primaryAdapter.GatewayAddresses.Select(a => a.Address.Convert()).FirstOrDefault()?.Address ?? 0L); #pragma warning restore CS0618 // Type or member is obsolete Assert.That(gw, Is.Not.Zero); Assert.That(GetBestInterface(gw, out var idx), Is.Zero); @@ -464,7 +465,7 @@ public partial class IpHlpApiTests { if (type == TCP_ESTATS_TYPE.TcpConnectionEstatsSynOpts) continue; Assert.That(GetPerTcp6ConnectionEStats(row, type, out var srw, out _, out _), ResultIs.Successful); - TestContext.Write(GetStats(srw)); + TestContext.Write(GetStats(srw!)); } ToggleAllEstats(row, false); } @@ -480,7 +481,7 @@ public partial class IpHlpApiTests { if (type == TCP_ESTATS_TYPE.TcpConnectionEstatsSynOpts) continue; Assert.That(GetPerTcpConnectionEStats(row, type, out var srw, out _, out _), ResultIs.Successful); - TestContext.Write(GetStats(srw)); + TestContext.Write(GetStats(srw!)); } ToggleAllEstats(row, false); } @@ -565,7 +566,8 @@ public partial class IpHlpApiTests public void SendARPTest() => Assert.That(() => { var gw = primaryAdapter.GatewayAddresses.Select(a => a.Address.Convert().GetAddressBytes()).FirstOrDefault(); - var mac = SendARP(new IN_ADDR(gw)); + Assert.NotNull(gw); + var mac = SendARP(new IN_ADDR(gw!)); Assert.That(mac.Length, Is.EqualTo(6)); Assert.That(mac, Has.Some.Not.EqualTo(0)); }, Throws.Nothing); @@ -662,7 +664,7 @@ bail: case TCP_ESTATS_TYPE.TcpConnectionEstatsFineRtt: return SafeHGlobalHandle.CreateFromStructure(new TCP_ESTATS_FINE_RTT_RW_v0 { EnableCollection = enable }); default: - return null; + return SafeHGlobalHandle.Null; } } @@ -707,11 +709,12 @@ bail: { if (type == TCP_ESTATS_TYPE.TcpConnectionEstatsSynOpts) continue; Assert.That(GetPerTcp6ConnectionEStats(serverConnectRow, type, out var srw, out _, out _), Is.Zero); - Console.Write(GetStats(srw)); + Console.Write(GetStats(srw!)); Assert.That(GetPerTcp6ConnectionEStats(clientConnectRow, type, out var crw, out _, out _), Is.Zero); - Console.Write(GetStats(crw)); + Console.Write(GetStats(crw!)); } } + private MIB_TCP6ROW GetTcp6Row(ushort localPort, ushort remotePort, MIB_TCP_STATE state) => GetTcp6Table(true).First(r => r.dwLocalPort == localPort && r.dwRemotePort == remotePort && r.dwState == state); diff --git a/UnitTests/PInvoke/IpHlpApi/NetIOApiTests.cs b/UnitTests/PInvoke/IpHlpApi/NetIOApiTests.cs index bbed4aee..44f0cbaa 100644 --- a/UnitTests/PInvoke/IpHlpApi/NetIOApiTests.cs +++ b/UnitTests/PInvoke/IpHlpApi/NetIOApiTests.cs @@ -150,10 +150,7 @@ public partial class IpHlpApiTests return false; } - static bool CompareArrays(byte* left, byte[] right) - { - return !right.Where((t, i) => left[i] != t).Any(); - } + static bool CompareArrays(byte* left, byte[] right) => !right.Where((t, i) => left[i] != t).Any(); } [Test] @@ -195,10 +192,7 @@ public partial class IpHlpApiTests return false; } - static unsafe bool CompareArrays(byte* left, byte[] right) - { - return !right.Where((t, i) => left[i] != t).Any(); - } + static unsafe bool CompareArrays(byte* left, byte[] right) => !right.Where((t, i) => left[i] != t).Any(); } [Test] @@ -226,9 +220,9 @@ public partial class IpHlpApiTests { var dest = primaryAdapter.MulticastAddresses.Select(ma => ma.Address.GetSOCKADDR().Ipv6).ToArray(); TestContext.WriteLine(string.Join("\r\n", dest)); - SOCKADDR_IN6_PAIR_NATIVE[] result = null; + SOCKADDR_IN6_PAIR_NATIVE[]? result = null; Assert.That(() => result = CreateSortedAddressPairs(dest), Throws.Nothing); - TestContext.WriteLine("\r\n" + string.Join("\r\n", result)); + TestContext.WriteLine("\r\n" + string.Join("\r\n", result!)); Assert.That(result, Has.Length.GreaterThan(0)); } @@ -284,7 +278,7 @@ public partial class IpHlpApiTests { Assert.That(GetIfStackTable(out var table), ResultIs.Successful); Assert.That(table.NumEntries, Is.GreaterThan(0)); - Assert.That(table.Table.Length, Is.EqualTo(table.NumEntries)); + Assert.That(table.Table!.Length, Is.EqualTo(table.NumEntries)); } [Test] @@ -330,7 +324,7 @@ public partial class IpHlpApiTests Assert.That(table.NumEntries, Is.GreaterThan(0)); Assert.That(() => table.Table, Throws.Nothing); - var goodRow = table.Table[0]; + var goodRow = table.Table![0]; var row = new MIB_IPFORWARD_ROW2 { DestinationPrefix = goodRow.DestinationPrefix, NextHop = goodRow.NextHop, InterfaceLuid = goodRow.InterfaceLuid }; Assert.That(GetIpForwardEntry2(ref row), ResultIs.Successful); Assert.That(row.InterfaceIndex, Is.Not.Zero.And.EqualTo(goodRow.InterfaceIndex)); @@ -343,7 +337,7 @@ public partial class IpHlpApiTests Assert.That(table.NumEntries, Is.GreaterThan(0)); Assert.That(() => table.Table, Throws.Nothing); - var goodRow = table.Table[0]; + var goodRow = table.Table![0]; var row = new MIB_IPINTERFACE_ROW { Family = goodRow.Family, InterfaceLuid = goodRow.InterfaceLuid }; Assert.That(GetIpInterfaceEntry(ref row), ResultIs.Successful); Assert.That(row.InterfaceIndex, Is.Not.Zero.And.EqualTo(goodRow.InterfaceIndex)); @@ -364,7 +358,7 @@ public partial class IpHlpApiTests Assert.That(table.NumEntries, Is.GreaterThan(0)); Assert.That(() => table.Table, Throws.Nothing); - var goodRow = table.Table[0]; + var goodRow = table.Table![0]; var row = new MIB_IPPATH_ROW { Destination = goodRow.Destination, InterfaceLuid = goodRow.InterfaceLuid }; Assert.That(GetIpPathEntry(ref row), ResultIs.Successful); Assert.That((int)row.Source.si_family, Is.Not.Zero); @@ -377,7 +371,7 @@ public partial class IpHlpApiTests Assert.That(table.NumEntries, Is.GreaterThan(0)); Assert.That(() => table.Table, Throws.Nothing); - var goodRow = table.Table[0]; + var goodRow = table.Table![0]; var row = new MIB_MULTICASTIPADDRESS_ROW { Address = goodRow.Address, InterfaceLuid = goodRow.InterfaceLuid }; Assert.That(GetMulticastIpAddressEntry(ref row), ResultIs.Successful); Assert.That(row.InterfaceIndex, Is.Not.Zero.And.EqualTo(goodRow.InterfaceIndex)); @@ -407,7 +401,7 @@ public partial class IpHlpApiTests Assert.That(table.NumEntries, Is.GreaterThan(0)); Assert.That(() => table.Table, Throws.Nothing); - var goodRow = table.Table[0]; + var goodRow = table.Table![0]; var row = new MIB_IPNET_ROW2 { Address = goodRow.Address, InterfaceLuid = goodRow.InterfaceLuid }; Assert.That(GetIpNetEntry2(ref row), ResultIs.Successful); Assert.That(row.InterfaceIndex, Is.Not.Zero.And.EqualTo(goodRow.InterfaceIndex)); @@ -419,7 +413,7 @@ public partial class IpHlpApiTests [Test] public void GetTeredoPortTest() { - Assert.That((uint)GetTeredoPort(out var port), Is.Zero.Or.EqualTo(Win32Error.ERROR_NOT_READY)); + Assert.That((uint)GetTeredoPort(out _), Is.Zero.Or.EqualTo(Win32Error.ERROR_NOT_READY)); } [Test] @@ -429,7 +423,7 @@ public partial class IpHlpApiTests Assert.That(table.NumEntries, Is.GreaterThan(0)); Assert.That(() => table.Table, Throws.Nothing); - var goodRow = table.Table[0]; + var goodRow = table.Table![0]; var row = new MIB_UNICASTIPADDRESS_ROW { Address = goodRow.Address, InterfaceLuid = goodRow.InterfaceLuid }; Assert.That(GetUnicastIpAddressEntry(ref row), ResultIs.Successful); Assert.That(row.CreationTimeStamp, Is.Not.Zero.And.EqualTo(goodRow.CreationTimeStamp));