public static void LinearFeedbackShiftRegister32LoopsAfter2Pow32Values()
        {
            LinearFeedbackShiftRegister32 r = new LinearFeedbackShiftRegister32(3452);

            HashSet <uint> values = new HashSet <uint>();

            for (int i = 0; i < UInt16.MaxValue * 5; i++)
            {
                Assert.IsTrue(values.Add(r.NextRandom()));
            }
        }
        public static void LinearFeedbackShiftRegister32LoopsAfter2Pow32Values()
        {
            LinearFeedbackShiftRegister32 r = new LinearFeedbackShiftRegister32(3452);

            HashSet<uint> values = new HashSet<uint>();

            for (int i = 0; i < UInt16.MaxValue * 5; i++)
            {
                Assert.IsTrue(values.Add(r.NextRandom()));
            }
        }
        public void LinearFeedbackShiftRegister32EnumerableReturnsCorrectValues()
        {
            LinearFeedbackShiftRegister32 a = new LinearFeedbackShiftRegister32(123);
            LinearFeedbackShiftRegister32 b = new LinearFeedbackShiftRegister32(123);

            int i = 0;
            foreach (var value in b)
            {
                i++;
                if (i > UInt16.MaxValue * 5)
                    break;

                Assert.AreEqual(a.NextRandom(), value);
            }
        }
        public void AssertThat_Enumerable_IsOrderedByInsertionOrder()
        {
            var r = new LinearFeedbackShiftRegister32(1);

            for (var i = 0; i < 100; i++)
            {
                _set.Add((int)r.NextRandom());
            }

            var r2 = new LinearFeedbackShiftRegister32(1);

            foreach (var item in _set)
            {
                Assert.AreEqual((int)r2.NextRandom(), item);
            }
        }
        public void LinearFeedbackShiftRegister32EnumerableReturnsCorrectValues()
        {
            LinearFeedbackShiftRegister32 a = new LinearFeedbackShiftRegister32(123);
            LinearFeedbackShiftRegister32 b = new LinearFeedbackShiftRegister32(123);

            int i = 0;

            foreach (var value in b)
            {
                i++;
                if (i > UInt16.MaxValue * 5)
                {
                    break;
                }

                Assert.AreEqual(a.NextRandom(), value);
            }
        }
        public void AssertThat_CopyTo_IsOrderedByInsertionOrder()
        {
            var r = new LinearFeedbackShiftRegister32(1);

            for (var i = 0; i < 100; i++)
            {
                _set.Add((int)r.NextRandom());
            }

            var items = new int[100];

            _set.CopyTo(items, 0);

            var r2 = new LinearFeedbackShiftRegister32(1);

            foreach (var item in items)
            {
                Assert.AreEqual((int)r2.NextRandom(), item);
            }
        }