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()); }
public void Draw_WhenUsingRandomBiggerThanTotalWeight_WillThrowInvalidOperationException() { WeightedPool <int> pool = new WeightedPool <int>(new BadRandom(13)); pool.Add(1, 12); Assert.ThrowsException <InvalidOperationException>(() => pool.Draw()); }
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); }
public void Draw_WhenPoolHas0Items_WillThrowInvalidOperationException() { WeightedPool <int> pool = new WeightedPool <int>(Singleton.DefaultRandom); Assert.ThrowsException <InvalidOperationException>(() => pool.Draw()); }