Example #1
0
        public void MakeChooser()
        {
            var odds = 1.To(1048577, 2).ToList();

            for (int i = 0; i < 1024; ++i)
            {
                Assert.True(odds.Choose() % 2 == 1);
                Assert.InRange(odds.Choose(), 1, 1048575);
            }

            var chooser = new Chooser <int>(odds);

            for (int i = 0; i < 1024; ++i)
            {
                Assert.True(chooser.Next() % 2 == 1);
                Assert.InRange(chooser.Next(), 1, 1048575);
            }

            chooser = new Chooser <int>(odds, DefaultRNG.I32);
            for (int i = 0; i < 1024; ++i)
            {
                Assert.True(chooser.Next() % 2 == 1);
                Assert.InRange(chooser.Next(), 1, 1048575);
            }

            chooser = odds.MakeChooser();
            for (int i = 0; i < 1024; ++i)
            {
                Assert.True(chooser.Next() % 2 == 1);
                Assert.InRange(chooser.Next(), 1, 1048575);
            }

            chooser = odds.MakeChooser(DefaultRNG.I32);
            for (int i = 0; i < 1024; ++i)
            {
                Assert.True(chooser.Next() % 2 == 1);
                Assert.InRange(chooser.Next(), 1, 1048575);
            }

            Assert.Throws <ArgumentNullException>(() => odds.MakeChooser(null));
            Assert.Throws <ArgumentNullException>(() => ((IEnumerable <int>)null).MakeChooser());
            Assert.Throws <ArgumentNullException>(() => ((IEnumerable <int>)null).MakeChooser(DefaultRNG.I32));
        }