Ejemplo n.º 1
0
        public void BadIndexes()
        {
            var rngCore = new StepBlockRng {
                BlockCounter = UInt32.MaxValue - 1
            };
            BlockBuffer32 <StepBlockRng> blockBuffer = new(rngCore);

            Assert.Throws <ArgumentOutOfRangeException>(() => blockBuffer.GenerateAndSet(-1));
            Assert.Throws <ArgumentOutOfRangeException>(() => blockBuffer.GenerateAndSet(20));
        }
Ejemplo n.º 2
0
        public void UInt64SpansBlock()
        {
            var rngCore = new StepBlockRng();
            BlockBuffer32 <StepBlockRng, UInt32> blockBuffer = new(rngCore);

            for (Int32 i = 0; i < 7; i++)
            {
                Assert.Equal(1u, blockBuffer.NextUInt32());
            }
            var spanned = blockBuffer.NextUInt64();

            Assert.Equal(1u, spanned & 0xFFFFFFFF);
            Assert.Equal(2u, spanned >> 32);
        }
Ejemplo n.º 3
0
        public void UInt64WrapAround()
        {
            var rngCore = new StepBlockRng {
                BlockCounter = UInt32.MaxValue - 1
            };
            BlockBuffer32 <StepBlockRng> blockBuffer = new(rngCore);

            for (Int32 i = 0; i < 4; i++)
            {
                Assert.Equal(UInt64.MaxValue, blockBuffer.NextUInt64());
            }
            for (Int32 i = 0; i < 4; i++)
            {
                Assert.Equal(0u, blockBuffer.NextUInt64());
            }
        }
Ejemplo n.º 4
0
        public void SetCounter()
        {
            var rngCore = new StepBlockRng {
                BlockCounter = UInt32.MaxValue - 1
            };
            BlockBuffer32 <StepBlockRng, UInt32> blockBuffer = new(rngCore) { BlockCounter = 9u, Index = 0 };

            blockBuffer.BlockCounter = 9u;
            for (Int32 i = 0; i < 8; i++)
            {
                Assert.Equal(9u, blockBuffer.NextUInt32());
            }
            for (Int32 i = 0; i < 8; i++)
            {
                Assert.Equal(10u, blockBuffer.NextUInt32());
            }
            Assert.Equal(10u, blockBuffer.BlockCounter);
        }
Ejemplo n.º 5
0
        public void Fill()
        {
            var rngCore = new StepBlockRng {
                BlockCounter = UInt32.MaxValue - 1
            };
            BlockBuffer32 <StepBlockRng> blockBuffer = new(rngCore);
            var dest = new UInt32[17];

            blockBuffer.Fill(MemoryMarshal.Cast <UInt32, Byte>(dest));

            for (UInt32 i = 0; i < rngCore.BlockLength; i++)
            {
                Assert.Equal(UInt32.MaxValue, dest[i]);
            }
            for (UInt32 i = (UInt32)rngCore.BlockLength; i < rngCore.BlockLength * 2; i++)
            {
                Assert.Equal(0u, dest[i]);
            }
            Assert.Equal(1u, dest[16]);
        }