public void MultipleCreateAndDeleteTest() { //const int N = 21; using (var scope = new TempLinksTestScope()) { var links = scope.Links; for (var N = 0; N < 100; N++) { var random = new Random(N); var created = 0; var deleted = 0; for (var i = 0; i < N; i++) { var linksCount = links.Count(); var createPoint = random.NextBoolean(); if (linksCount > 2 && createPoint) { var source = random.NextUInt64(1, linksCount); var target = random.NextUInt64(1, linksCount); var resultLink = links.CreateAndUpdate(source, target); if (resultLink > linksCount) created++; } else { links.Create(); created++; } } Assert.True(created == (int)links.Count()); for (var i = 0; i < N; i++) { var link = (ulong)i + 1; if (links.Exists(link)) { links.Delete(link); deleted++; } } Assert.True(links.Count() == 0); } } }
public void TestUInt64() { var rnd = new System.Random(); for (var c = 0; c < count; c++) { var mem = new byte[sizeof(UInt64) * writeRepeatCount]; var span1 = new Span <byte>(mem); var span2 = new ReadOnlySpan <byte>(mem); var a = new UInt64[writeRepeatCount]; for (var i = 0; i < writeRepeatCount; i++) { var n = rnd.NextUInt64(); a[i] = n; span1.MoveWrite(n); } // Ensure span is not zero Assert.NotEqual(0, span2.ToArray().Select(b => (int)b).Sum()); for (var i = 0; i < writeRepeatCount; i++) { var r = span2.MoveReadUInt64(); Assert.Equal(a[i], r); } } }
public void TestUInt64() { var rnd = new System.Random(); for (var c = 0; c < count; c++) { var mem = new byte[sizeof(UInt64) * writeRepeatCount]; var span1 = new SpanStream(mem); var span2 = new SpanStream(mem); var a = new UInt64[writeRepeatCount]; for (var i = 0; i < writeRepeatCount; i++) { var n = rnd.NextUInt64(); a[i] = n; span1.Write(n); } for (var i = 0; i < writeRepeatCount; i++) { var r = span2.ReadUInt64(); Assert.Equal(a[i], r); } } }
public void UInt64_Distribution() { Distribution( 10, 1_000_000, () => Convert.ToInt32(r.NextUInt64(0, 18_000_000_000_000_000_000) / 1_800_000_000_000_000_000) ); }
public void TestUInt64() { var rnd = new System.Random(); var mem = new byte[sizeof(UInt64)]; var span = new Span <byte>(mem); var roSpan = new Span <byte>(mem); for (var c = 0; c < count; c++) { span.Fill(rnd.NextByte()); UInt64 a = 0; // Pick any number except zero while ((a = rnd.NextUInt64()) == 0) { } span.Write(a); // Ensure span is not zero Assert.NotEqual(0, span.ToArray().Select(b => (int)b).Sum()); var r = roSpan.ReadUInt64(); Assert.Equal(a, r); } }
public void TestRandomSearchAll() { string tempFilename = Path.GetTempFileName(); using (var links = new Links(tempFilename, DefaultLinksSize)) { ulong counter = 0; ulong minLink = 1UL; ulong maxLink = links.Total; ulong iterations = links.Total; var rnd = new Random((int)DateTime.UtcNow.Ticks); Console.WriteLine("Testing Random Search with {0} Iterations.", links.Total); Stopwatch sw = Stopwatch.StartNew(); for (ulong i = iterations; i > 0; i--) { ulong source = rnd.NextUInt64(minLink, maxLink); ulong target = rnd.NextUInt64(minLink, maxLink); counter += links.Search(source, target); } TimeSpan elapsedTime = sw.Elapsed; double iterationsPerSecond = iterations / elapsedTime.TotalSeconds; Console.WriteLine("{0} Iterations of Random Search done in {1} ({2} Iterations per second), c: {3}", iterations, elapsedTime, (long)iterationsPerSecond, counter); } File.Delete(tempFilename); }