37 lines
1.5 KiB
C#
37 lines
1.5 KiB
C#
using MoShiro.Measurement;
|
|
|
|
namespace MoShiro.Measurement.Tests;
|
|
|
|
public sealed class LocalAddressesTests
|
|
{
|
|
[Fact]
|
|
public void Linux_TemporaryTentativeDeprecatedAndFailedAddressesAreNotUsable()
|
|
{
|
|
const string text =
|
|
"2409c0d0000000000000000000000001 02 40 00 80 eth0\n" + // 稳定地址:可用
|
|
"2409c0d0000000000000000000000002 02 40 00 01 eth0\n" + // 临时(隐私)地址
|
|
"2409c0d0000000000000000000000003 02 40 00 40 eth0\n" + // tentative
|
|
"2409c0d0000000000000000000000004 02 40 00 20 eth0\n" + // deprecated
|
|
"2409c0d0000000000000000000000005 02 40 00 08 eth0\n"; // dad 失败
|
|
HashSet<string> unusable = LocalAddresses.UnusableIpv6(text);
|
|
Assert.DoesNotContain("2409:c0d0::1", unusable);
|
|
Assert.Contains("2409:c0d0::2", unusable);
|
|
Assert.Contains("2409:c0d0::3", unusable);
|
|
Assert.Contains("2409:c0d0::4", unusable);
|
|
Assert.Contains("2409:c0d0::5", unusable);
|
|
Assert.Empty(LocalAddresses.UnusableIpv6(null));
|
|
}
|
|
|
|
[Fact]
|
|
public void Sample_NeverReturnsLoopbackPrivateOrLinkLocalAddresses()
|
|
{
|
|
foreach (string text in LocalAddresses.Sample())
|
|
{
|
|
var address = System.Net.IPAddress.Parse(text);
|
|
Assert.True(address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork
|
|
? MoShiro.Protocol.PublicAddress.IsPublicIpv4(address)
|
|
: MoShiro.Protocol.PublicAddress.IsGlobalIpv6(address));
|
|
}
|
|
}
|
|
}
|