Beispiel #1
0
        public void Bytes()
        {
            var    rng    = new StepRng(0);
            Random random = RandomShim.Create(rng);

            var buffer = new Byte[1024];

            random.NextBytes(buffer);
            var ints = MemoryMarshal.Cast <Byte, UInt64>(buffer);

            for (Int32 i = 0; i < ints.Length; i++)
            {
                Assert.Equal((UInt64)i, ints[i]);
            }

#if !NET472
            random.NextBytes(buffer.AsSpan());
            for (Int32 i = 0; i < ints.Length; i++)
            {
                Assert.Equal((UInt64)(i + ints.Length), ints[i]);
            }
#endif

            var maxRng = new StepRng(UInt64.MaxValue)
            {
                Increment = 0
            };
            var maxShim = RandomNumberGeneratorShim.Create(maxRng);

            buffer = new Byte[1024];
            maxShim.GetBytes(buffer, 200, 500);
            Assert.All(buffer.Take(200), b => Assert.Equal(0, b));
            Assert.All(buffer.Skip(200).Take(500), b => Assert.Equal(Byte.MaxValue, b));
            Assert.All(buffer.Skip(700), b => Assert.Equal(0, b));
        }
        public void Disposal()
        {
            var rng  = new DisposableRng();
            var shim = RandomNumberGeneratorShim.Create(rng);

            shim.Dispose();
            Assert.True(rng.Disposed);
        }
        public void NonNullable()
        {
            Assert.Throws <ArgumentNullException>(() => RandomNumberGeneratorShim.Create <StepRng>(null !));

            var rng = RandomNumberGeneratorShim.Create(new StepRng(0));

            Assert.Throws <ArgumentNullException>(() => rng.GetBytes(null !));
            Assert.Throws <ArgumentNullException>(() => rng.GetNonZeroBytes(null !));
        }
        public void BadArgs()
        {
            var rng   = new StepRng(0);
            var shim  = RandomNumberGeneratorShim.Create(rng);
            var bytes = new Byte[32];

            Assert.Throws <ArgumentNullException>(() => shim.GetBytes(null !, 0, 10));
            Assert.Throws <ArgumentOutOfRangeException>(() => shim.GetBytes(bytes, -10, 10));
            Assert.Throws <ArgumentOutOfRangeException>(() => shim.GetBytes(bytes, 10, -10));
            Assert.Throws <ArgumentException>(() => shim.GetBytes(bytes, 32, 1));
        }
        public void NonZeroBytes()
        {
            var rng  = new SequenceRng(new UInt32[] { 0, 1, 2, 0, 1, 2, 0, 1 });
            var shim = RandomNumberGeneratorShim.Create(rng);

            var buffer = new Byte[35];

            shim.GetNonZeroBytes(buffer);
            Assert.DoesNotContain((Byte)0, buffer);

#if !NET472
            shim.GetNonZeroBytes(buffer.AsSpan());
            Assert.DoesNotContain((Byte)0, buffer);
#endif
        }