Esempio n. 1
0
        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);
                }
            }
        }
Esempio n. 3
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 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)
         );
 }
Esempio n. 5
0
        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);
            }
        }
Esempio n. 6
0
        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);
        }