public void GetByteValuesUniqueValuesOnlyButElementNumberIsTooBig()
 {
     using (var random = new SecureRandom())
     {
         random.GetByteValues(2560, ValueGeneration.UniqueValuesOnly);
     }
 }
        public void GetByteValuesUniqueValuesOnly()
        {
            var generator = new MockRandomNumberGeneratorForGetByteValues(ValueGeneration.UniqueValuesOnly);

            using (var random = new SecureRandom(generator))
            {
                var elements = random.GetByteValues(
                    10, ValueGeneration.UniqueValuesOnly);

                Assert.AreEqual(10, elements.Length);

                for (var i = 0; i < elements.Length; i++)
                {
                    var element = elements[i];
                    Assert.IsTrue(element >= byte.MinValue);
                    Assert.IsTrue(element <= byte.MaxValue);
                }

                Assert.AreEqual(elements.Length, new HashSet<byte>(elements).Count);
                Assert.AreEqual(11, generator.MethodCallCount);
            }
        }
        public void GetByteValuesDuplicatesAllowed()
        {
            var generator = new MockRandomNumberGeneratorForGetByteValues(ValueGeneration.DuplicatesAllowed);
            using (var random = new SecureRandom(generator))
            {
                var elements = random.GetByteValues(10, ValueGeneration.DuplicatesAllowed);
                {
                    Assert.AreEqual(10, elements.Length);

                    for (var i = 0; i < elements.Length; i++)
                    {
                        var element = elements[i];
                        Assert.IsTrue(element >= byte.MinValue);
                        Assert.IsTrue(element <= byte.MaxValue);
                    }
                    Assert.AreEqual(1, generator.MethodCallCount);
                }
            }
        }
        public void GetByteValuesDuplicatesAllowedAndElementNumberExceedsByteMaximum()
        {
            using (var random = new SecureRandom())
            {
                var elements = random.GetByteValues(2560, ValueGeneration.DuplicatesAllowed);

                Assert.AreEqual(2560, elements.Length);

                for (var i = 0; i < elements.Length; i++)
                {
                    var element = elements[i];
                    Assert.IsTrue(element >= byte.MinValue);
                    Assert.IsTrue(element <= byte.MaxValue);
                }

                Assert.AreNotEqual(elements.Length, new HashSet<byte>(elements).Count);
            }
        }
        public void GetByteValuesAfterDisposing()
        {
            SecureRandom random = null;

            using (random = new SecureRandom())
            {
            }

            random.GetByteValues(1, ValueGeneration.DuplicatesAllowed);
        }