public void Should_sort_128_by_distance_from_end() { var a = new KNodeId128(ulong.MaxValue, ulong.MaxValue); var l = Enumerable.Range(0, 256).Select(i => KNodeId <KNodeId128> .Create()).ToArray(); Array.Sort(l, new KNodeIdDistanceComparer <KNodeId128>(a)); l.Should().BeInDescendingOrder(KNodeIdComparer <KNodeId128> .Default); }
public void Should_calculate_proper_distance_offset_for_int128() { var a = new KNodeId128(0, 0); var b = new KNodeId128(0, 1); var o = (Span <byte>) new byte[16]; var s = (ReadOnlySpan <byte>)o; KNodeId.CalculateDistance(a, b, o); s.CountLeadingZeros().Should().Be(127); }
public async Task Can_randomly_populate_int128() { var s = new KNodeId128(Guid.Empty); var t = new KFixedRoutingTable <KNodeId128, object>(s, new FakeNetwork <KNodeId128, object>()); for (int i = 0; i < 262144 * 8; i++) { await t.TouchAsync(new KNodeId128(Guid.NewGuid()), null); } }
public async Task Can_randomly_populate_int128_mt() { var s = new KNodeId128(Guid.Empty); var t = new KFixedRoutingTable <KNodeId128, object>(s, new FakeSlowNetwork <KNodeId128, object>()); var l = new List <Task>(); for (int i = 0; i < 1024; i++) { l.Add(t.TouchAsync(new KNodeId128(Guid.NewGuid()), null).AsTask()); } await Task.WhenAll(l); }