예제 #1
0
        public void Draw_CalledTwiceWhenPoolHas1Item_WillThrowInvalidOperationException()
        {
            WeightedPool <int> pool = new WeightedPool <int>(Singleton.DefaultRandom);

            pool.Add(1, 12);
            int drawnItem = pool.Draw();

            Assert.AreEqual(1, drawnItem);
            Assert.ThrowsException <InvalidOperationException>(() => pool.Draw());
        }
예제 #2
0
        public void Draw_WhenUsingRandomBiggerThanTotalWeight_WillThrowInvalidOperationException()
        {
            WeightedPool <int> pool = new WeightedPool <int>(new BadRandom(13));

            pool.Add(1, 12);

            Assert.ThrowsException <InvalidOperationException>(() => pool.Draw());
        }
예제 #3
0
        public void Draw_Called7TimesOnPoolOf7Items_WillDrawAllOfThemAndCountWillBe0()
        {
            WeightedPool <string> pool = new WeightedPool <string>(Singleton.DefaultRandom);

            pool.Add("White", 5);
            pool.Add("Blue", 5);
            pool.Add("Black", 5);
            pool.Add("Red", 5);
            pool.Add("Green", 5);
            pool.Add("Artifact", 3);
            pool.Add("DualColor", 1);

            string[] drawn = new string[7];
            drawn[0] = pool.Draw();
            drawn[1] = pool.Draw();
            drawn[2] = pool.Draw();
            drawn[3] = pool.Draw();
            drawn[4] = pool.Draw();
            drawn[5] = pool.Draw();
            drawn[6] = pool.Draw();

            Assert.IsTrue(drawn.Contains("White"));
            Assert.IsTrue(drawn.Contains("Blue"));
            Assert.IsTrue(drawn.Contains("Black"));
            Assert.IsTrue(drawn.Contains("Red"));
            Assert.IsTrue(drawn.Contains("Green"));
            Assert.IsTrue(drawn.Contains("Artifact"));
            Assert.IsTrue(drawn.Contains("DualColor"));
            Assert.AreEqual(0, pool.Count);
        }
예제 #4
0
        public void Draw_WhenPoolHas0Items_WillThrowInvalidOperationException()
        {
            WeightedPool <int> pool = new WeightedPool <int>(Singleton.DefaultRandom);

            Assert.ThrowsException <InvalidOperationException>(() => pool.Draw());
        }